feat: 语音

This commit is contained in:
2026-02-01 18:35:03 +08:00
parent 646a72de64
commit 003e55dccf
8 changed files with 45 additions and 67 deletions

View File

@@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.tik.voice.client;
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.module.tik.voice.config.VoiceProviderProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -27,8 +28,11 @@ public class VoiceCloneProviderFactory {
private final Map<String, VoiceCloneProvider> providers = new ConcurrentHashMap<>();
private final VoiceProviderProperties properties;
@Autowired
public VoiceCloneProviderFactory(List<VoiceCloneProvider> providerList) {
public VoiceCloneProviderFactory(List<VoiceCloneProvider> providerList, VoiceProviderProperties properties) {
this.properties = properties;
// 自动注册所有 Provider 实现类
for (VoiceCloneProvider provider : providerList) {
registerProvider(provider);
@@ -59,7 +63,12 @@ public class VoiceCloneProviderFactory {
if (providers.isEmpty()) {
throw exception0(VOICE_TTS_FAILED.getCode(), "未配置任何语音克隆 Provider");
}
// 返回第一个注册的 Provider 作为默认
// 使用配置的默认供应商
String defaultProviderType = properties.getDefaultProvider();
if (defaultProviderType != null && providers.containsKey(defaultProviderType)) {
return providers.get(defaultProviderType);
}
// 回退到第一个注册的 Provider
return providers.values().iterator().next();
}