# 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`