From d38bdd2802ea7d71b32f6d3658cc5b41a45bc7af Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Tue, 15 Sep 2026 01:09:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(ai-avatar):=20=E9=9F=B3=E8=89=B2=E6=9D=A5?= =?UTF-8?q?=E6=BA=90=E5=88=87=E6=8D=A2=E6=97=B6=E5=8A=A8=E6=80=81=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E8=AF=AD=E8=A8=80=E9=80=89=E9=A1=B9=E5=B9=B6=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=9B=9E=E9=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai-avatar/components/PanelVoiceSelector.tsx | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/apps/web/src/pages/ai-avatar/components/PanelVoiceSelector.tsx b/apps/web/src/pages/ai-avatar/components/PanelVoiceSelector.tsx index 6269e7663..58cd92f33 100644 --- a/apps/web/src/pages/ai-avatar/components/PanelVoiceSelector.tsx +++ b/apps/web/src/pages/ai-avatar/components/PanelVoiceSelector.tsx @@ -13,7 +13,8 @@ import { type VoiceEmotion, type VoiceLanguage, VOICE_EMOTION_OPTIONS, - VOICE_LANGUAGE_OPTIONS, + PRESET_VOICE_LANGUAGE_OPTIONS, + CLONE_VOICE_LANGUAGE_OPTIONS, } from "../types" interface PanelVoiceSelectorProps { @@ -91,6 +92,12 @@ export function PanelVoiceSelector({ const NO_PREVIEW_TIP = "该音色暂无试听音频,请先用此音色生成一段配音后再试听" + // 系统预置音色仅支持 zh/en;克隆音色支持全语言 + const languageOptions = + voiceSource === "clone" ? CLONE_VOICE_LANGUAGE_OPTIONS : PRESET_VOICE_LANGUAGE_OPTIONS + // 当前语言不在可选列表(切回预置时 ja/ko/cantonese/mandarin 失效)→ 自动回退到中文 + const effectiveLanguage = languageOptions.some((o) => o.value === language) ? language : "zh" + /** 用指定 URL 真实播放(抽取公共) */ const playAudioUrl = (voiceId: string, url: string) => { // 临时兼容:后端 /tts/preview 返回 HTTP URL,staging 是 HTTPS,Mixed Content 会阻止加载 @@ -289,10 +296,12 @@ export function PanelVoiceSelector({