4.8 KiB
4.8 KiB
ADDED Requirements
Requirement: SiliconFlow 语音克隆支持
系统 MUST 支持使用硅基流动(SiliconFlow)作为语音克隆供应商,允许用户上传参考音频并生成可复用的音色 ID。
Scenario: 成功使用硅基流动克隆音色
- GIVEN 用户已上传参考音频文件并获得文件 URL
- AND 参考音频已成功转录为文本
- AND 硅基流动供应商已启用并配置有效的 API Key
- WHEN 用户通过 API 发起语音克隆请求,指定
providerType为siliconflow - THEN 系统应当下载参考音频文件并转换为 base64 格式
- AND 调用硅基流动
/v1/uploads/audio/voiceAPI,使用IndexTeam/IndexTTS-2模型 - AND 将返回的
uri(格式如speech:customName:xxx:xxx)存储为voiceId - AND 返回克隆成功的响应,包含生成的
voiceId
Scenario: 硅基流动 API 调用失败
- GIVEN 硅基流动供应商已启用
- WHEN 调用硅基流动 API 时发生网络错误或认证失败
- THEN 系统应当记录详细的错误日志
- AND 返回统一错误码
VOICE_TTS_FAILED,不暴露底层技术细节
Scenario: 硅基流动供应商未配置
- GIVEN 硅基流动供应商未启用或 API Key 未配置
- WHEN 用户尝试使用硅基流动进行语音克隆
- THEN 系统应当返回友好的错误提示,要求管理员先配置硅基流动
Requirement: SiliconFlow 文本转语音支持
系统 MUST 支持使用硅基流动进行文本转语音合成,允许用户使用已克隆的音色 ID 或系统默认音色合成语音。
Scenario: 使用克隆音色合成语音
- GIVEN 用户已通过硅基流动成功克隆音色,获得
voiceId - AND 硅基流动供应商已启用
- WHEN 用户发起 TTS 请求,指定
providerType为siliconflow和有效的voiceId - THEN 系统应当调用硅基流动
/v1/audio/speechAPI - AND 使用
IndexTeam/IndexTTS-2模型和指定的voiceId - AND 将返回的音频二进制数据转换为 base64 格式
- AND 返回包含音频数据、格式和采样率的响应
Scenario: 使用默认音色合成语音
- GIVEN 硅基流动供应商已启用
- AND 用户未指定
voiceId - WHEN 用户发起 TTS 请求,指定
providerType为siliconflow - THEN 系统应当使用硅基流动提供的默认音色进行合成
- AND 返回合成结果
Scenario: TTS 合成参数支持
- GIVEN 硅基流动供应商已启用
- WHEN 用户发起 TTS 请求,包含可选参数(语速、采样率、音频格式)
- THEN 系统应当将这些参数适配为硅基流动 API 格式
- AND 支持的参数包括:
speed(0.25-4.0)、sample_rate、response_format(mp3/wav/pcm)
Requirement: 供应商动态切换
系统 SHALL 支持在请求时动态指定语音供应商,无需重启服务。
Scenario: 通过 providerType 切换供应商
- GIVEN 系统已配置 CosyVoice 和 SiliconFlow 两个供应商
- AND 默认供应商为
cosyvoice - WHEN 用户在 API 请求中指定
providerType为siliconflow - THEN 系统应当使用
SiliconFlowProvider处理请求 - AND 不影响其他使用默认供应商的请求
Scenario: 不支持的供应商类型
- GIVEN 系统仅配置了 CosyVoice 和 SiliconFlow 供应商
- WHEN 用户指定
providerType为不存在的值(如other) - THEN 系统应当返回错误提示 "不支持的语音克隆供应商: other"
Requirement: SiliconFlow 配置管理
系统 MUST 支持通过配置文件管理硅基流动供应商的启用状态和连接参数。
Scenario: 配置硅基流动供应商
- GIVEN 管理员希望在系统中启用硅基流动
- WHEN 管理员在
application.yaml中配置以下参数:yudao: voice: providers: siliconflow: enabled: true api-key: sk-xxxxx base-url: https://api.siliconflow.cn default-model: IndexTeam/IndexTTS-2 - THEN 系统应当在启动时注册
SiliconFlowProvider - AND 用户可以通过指定
providerType为siliconflow使用该供应商
Scenario: 禁用硅基流动供应商
- GIVEN 硅基流动供应商已配置
- WHEN 管理员将
enabled设置为false或移除配置 - THEN 系统启动时不应注册
SiliconFlowProvider - AND 用户请求硅基流动服务时应当返回错误提示
Scenario: 向后兼容旧配置
- GIVEN 系统已从旧版本升级,存在
yudao.cosyvoice.*配置 - WHEN 系统启动时检测到旧配置
- THEN 系统应当自动将旧配置迁移到
yudao.voice.providers.cosyvoice.*结构 - AND 优先使用新配置,旧配置作为 fallback