Skip to content

Feature Request: 增加对 TTS 服务商 Model ID 的灵活配置支持 #14

@SachieWang

Description

@SachieWang

Feature Request: 增加对 TTS 服务商 Model ID 的灵活配置支持

问题描述 (Problem)

目前项目中 TTS 模块(lib/audio/tts-providers.ts)的 Model ID 采用了硬编码(Hardcoded)方式。例如:

  • OpenAI TTS 固定使用 gpt-4o-mini-tts
  • GLM TTS 固定使用 glm-tts
  • Qwen TTS 固定使用 qwen3-tts-flash

这种实现方式限制了用户根据实际需求(如成本控制、音质要求或厂商模型更新)灵活切换模型的能力。

建议方案 (Proposed Solution)

建议在 TTS 配置体系中引入 modelId 参数,允许用户在 UI 设置界面或环境变量中自定义该值。

预期变更范围:

  1. 类型定义 (lib/audio/types.ts): 在 TTSModelConfig 接口中增加 modelId?: string 字段。
  2. 状态存储 (lib/store/settings.ts):
    • ttsProvidersConfig 的 Record 结构中增加 modelId
    • 增加相应的 setTTSModelId action。
  3. 逻辑实现 (lib/audio/tts-providers.ts):
    • 修改 generateOpenAITTSgenerateGLMTTS 等函数,优先使用 config.modelId,若不存在则回退至当前的默认硬编码值。
  4. UI 界面 (components/settings/audio-settings.tsx):
    • 在 TTS 设置面板中为支持多模型的服务商增加 "Model ID" 输入框。

影响代码示例

以 OpenAI 为例,修改后的逻辑应类似:

const model = config.modelId || 'gpt-4o-mini-tts'; // 优先使用配置值
const response = await fetch(`${baseUrl}/audio/speech`, {
  // ...
  body: JSON.stringify({
    model: model,
    input: text,
    // ...
  }),
});

理由 (Context)

随着大模型厂商频繁发布新的语音模型(例如 OpenAI 的 tts-1 vs tts-1-hd),灵活配置 Model ID 可以显著提升系统的可维护性和前瞻性,无需频繁修改核心代码即可适配新模型。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions