Skip to content

Commit 697b006

Browse files
committed
fix:修复语音合成音色不会改变的bug
1 parent 166a49b commit 697b006

File tree

2 files changed

+5
-20
lines changed

2 files changed

+5
-20
lines changed

src/main/java/com/xiaozhi/dialogue/stt/factory/SttServiceFactory.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -169,12 +169,4 @@ private SttService createApiService(SysConfig config) {
169169
logger.warn("不支持的STT服务提供商: {}", provider);
170170
return null;
171171
}
172-
173-
public void removeCache(SysConfig config) {
174-
// 对于API服务,使用"provider:configId"作为缓存键,确保每个配置使用独立的服务实例
175-
Integer configId = config.getConfigId();
176-
String provider = config.getProvider();
177-
String cacheKey = provider + ":" + (configId != null ? configId : "default");
178-
serviceCache.remove(cacheKey);
179-
}
180172
}

src/main/java/com/xiaozhi/dialogue/tts/factory/TtsServiceFactory.java

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class TtsServiceFactory {
1818

1919
private static final Logger logger = LoggerFactory.getLogger(TtsServiceFactory.class);
2020

21-
// 缓存已初始化的服务:对于API服务,键为"provider:configId"格式;对于本地服务,键为provider名称
21+
// 缓存已初始化的服务:键为"provider:configId:voiceName"格式,确保音色变化时创建新实例
2222
private final Map<String, TtsService> serviceCache = new ConcurrentHashMap<>();
2323

2424
// 语音生成文件保存地址
@@ -38,11 +38,11 @@ public TtsService getDefaultTtsService() {
3838
return getTtsService(config, TtsServiceFactory.DEFAULT_VOICE);
3939
}
4040

41-
// 对于API服务,使用"provider:configId"作为缓存键,确保每个配置使用独立的服务实例
42-
private String createCacheKey(SysConfig config, String provider) {
41+
// 创建缓存键,包含provider、configId和voiceName,确保音色变化时创建新的服务实例
42+
private String createCacheKey(SysConfig config, String provider, String voiceName) {
4343
var configId = config.getConfigId();
4444
var configIdStr = configId != null ? String.valueOf(configId) : "default";
45-
return provider + ":" + configIdStr;
45+
return provider + ":" + configIdStr + ":" + voiceName;
4646
}
4747

4848
/**
@@ -51,7 +51,7 @@ private String createCacheKey(SysConfig config, String provider) {
5151
public TtsService getTtsService(SysConfig config, String voiceName) {
5252
// 如果提供商为空,则使用默认提供商
5353
var provider = ObjectUtils.isEmpty(config) ? DEFAULT_PROVIDER : config.getProvider();
54-
var cacheKey = createCacheKey(config, provider);
54+
var cacheKey = createCacheKey(config, provider, voiceName);
5555

5656
// 检查是否已有该配置的服务实例
5757
if (serviceCache.containsKey(cacheKey)) {
@@ -79,13 +79,6 @@ private TtsService createApiService(SysConfig config, String voiceName, String o
7979
};
8080
}
8181

82-
public void removeCache(SysConfig config) {
83-
// 对于API服务,使用"provider:configId"作为缓存键,确保每个配置使用独立的服务实例
84-
Integer configId = config.getConfigId();
85-
String provider = config.getProvider();
86-
String cacheKey = provider + ":" + (configId != null ? configId : "default");
87-
serviceCache.remove(cacheKey);
88-
}
8982

9083
private void ensureOutputPath(String outputPath) {
9184
File dir = new File(outputPath);

0 commit comments

Comments
 (0)