Files
sionrui/openspec/changes/refactor-voice-provider/proposal.md

36 lines
1.6 KiB
Markdown
Raw Normal View History

2026-01-27 01:39:08 +08:00
# Change: Refactor Voice Clone Provider
## Why
当前语音克隆功能直接依赖阿里云 CosyVoice 实现,代码强耦合,扩展性差。添加新供应商(如硅基流动 IndexTTS-2需要修改 Service 层代码,违反开闭原则。
**说明**: CosyVoice 是阿里云的语音合成服务DashScope 平台),支持语音克隆和 TTS。当前代码使用 `cosyvoice-v3-flash` 模型。
## What Changes
- **ADDED** 引入策略模式,定义 `VoiceCloneProvider` 统一接口
- **ADDED** 创建工厂类 `VoiceCloneProviderFactory` 管理多供应商
- **MODIFIED** 将现有 `CosyVoiceClient` 改造为 `CosyVoiceProvider`
- **MODIFIED** 更新 `TikUserVoiceServiceImpl` 使用 Provider 接口
- **ADDED** 新增配置类支持多供应商配置和切换
- **BREAKING** 配置项从 `yudao.cosyvoice` 迁移到 `yudao.voice.providers`
## Impact
- **Affected specs**:
- `voice-clone` (新增能力规范)
- **Affected code**:
- `TikUserVoiceServiceImpl.java` - Service 层改为依赖注入 Provider
- `CosyVoiceClient.java``CosyVoiceProvider.java` - 重命名并实现接口
- `CosyVoiceProperties.java``VoiceProviderProperties.java` - 配置结构重组
- 新增 `VoiceCloneProvider.java` - 统一接口定义
- 新增 `VoiceCloneProviderFactory.java` - 工厂类
- 新增 `SiliconFlowProvider.java` - 硅基流动实现(阶段二)
## Migration
- 现有配置自动迁移:`yudao.cosyvoice.*``yudao.voice.providers.cosyvoice.*`
- 默认供应商保持为 `cosyvoice`
- 默认行为保持不变,向后兼容
- 支持通过配置切换供应商:`yudao.voice.default-provider`