调整1.0鉴权音色方式
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user