调整1.0鉴权音色方式

This commit is contained in:
RT15548
2026-01-20 10:36:35 +08:00
committed by GitHub
parent dc507d7d6d
commit d1a4aca025
3 changed files with 93 additions and 73 deletions

View File

@@ -250,47 +250,51 @@ function resolveSpeakerWithSource(speakerName, mySpeakers, defaultSpeaker) {
});
}
if (!speakerName) {
const defaultItem = list.find(s => s.value === defaultSpeaker);
return {
value: defaultSpeaker,
source: defaultItem?.source || getVoiceSource(defaultSpeaker)
};
}
if (!speakerName) {
const defaultItem = list.find(s => s.value === defaultSpeaker);
return {
value: defaultSpeaker,
source: defaultItem?.source || getVoiceSource(defaultSpeaker),
resourceId: defaultItem?.resourceId || null
};
}
const byName = list.find(s => s.name === speakerName);
console.log('[TTS Debug] byName 查找结果:', byName); // ★ 调试
if (byName?.value) {
return {
value: byName.value,
source: byName.source || getVoiceSource(byName.value)
};
}
if (byName?.value) {
return {
value: byName.value,
source: byName.source || getVoiceSource(byName.value),
resourceId: byName.resourceId || null
};
}
const byValue = list.find(s => s.value === speakerName);
console.log('[TTS Debug] byValue 查找结果:', byValue); // ★ 调试
if (byValue?.value) {
return {
value: byValue.value,
source: byValue.source || getVoiceSource(byValue.value)
};
}
if (byValue?.value) {
return {
value: byValue.value,
source: byValue.source || getVoiceSource(byValue.value),
resourceId: byValue.resourceId || null
};
}
if (FREE_VOICE_KEYS.has(speakerName)) {
return { value: speakerName, source: 'free' };
}
if (FREE_VOICE_KEYS.has(speakerName)) {
return { value: speakerName, source: 'free', resourceId: null };
}
// ★ 回退到默认,这是问题发生的地方
console.warn('[TTS Debug] 未找到匹配音色,回退到默认:', defaultSpeaker);
const defaultItem = list.find(s => s.value === defaultSpeaker);
return {
value: defaultSpeaker,
source: defaultItem?.source || getVoiceSource(defaultSpeaker)
};
}
const defaultItem = list.find(s => s.value === defaultSpeaker);
return {
value: defaultSpeaker,
source: defaultItem?.source || getVoiceSource(defaultSpeaker),
resourceId: defaultItem?.resourceId || null
};
}
// ============ 缓存管理 ============
@@ -616,16 +620,17 @@ async function speakMessage(messageId, { mode = 'manual' } = {}) {
return;
}
const resolvedSegments = segments.map(seg => {
const resolved = seg.speaker
? resolveSpeakerWithSource(seg.speaker, mySpeakers, defaultSpeaker)
: defaultResolved;
return {
...seg,
resolvedSpeaker: resolved.value,
resolvedSource: resolved.source
};
});
const resolvedSegments = segments.map(seg => {
const resolved = seg.speaker
? resolveSpeakerWithSource(seg.speaker, mySpeakers, defaultSpeaker)
: defaultResolved;
return {
...seg,
resolvedSpeaker: resolved.value,
resolvedSource: resolved.source,
resolvedResourceId: resolved.resourceId
};
});
const needsAuth = resolvedSegments.some(s => s.resolvedSource === 'auth');
if (needsAuth && !isAuthConfigured()) {
@@ -1325,7 +1330,7 @@ export async function initTts() {
return;
}
const resourceId = options.resourceId || inferResourceIdBySpeaker(resolved.value);
const resourceId = options.resourceId || resolved.resourceId || inferResourceIdBySpeaker(resolved.value);
const result = await synthesizeV3({
appId: config.volc.appId,
accessKey: config.volc.accessKey,