Add local GPU preset voices with dropdown selection.
Generate ChatTTS sample_random_speaker presets without cloud APIs; choose clone or preset in synthesize UI. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+10
-4
@@ -632,12 +632,16 @@ def _concat_wavs(
|
||||
return np.concatenate(segments)
|
||||
|
||||
|
||||
def generate_voice(refined_text: str) -> Tuple[bool, str, Optional[str]]:
|
||||
def generate_voice(
|
||||
refined_text: str,
|
||||
voice_id: str = "custom",
|
||||
) -> Tuple[bool, str, Optional[str]]:
|
||||
"""
|
||||
使用 ChatTTS 将润色后的文稿合成为 wav 配音。
|
||||
使用 ChatTTS(本地 GPU)将润色稿合成为 wav。
|
||||
|
||||
Args:
|
||||
refined_text: LLM 润色后的配音稿
|
||||
voice_id: ``custom`` 为锁定音色,``preset_*`` 为内置预设(见 voice_presets)
|
||||
|
||||
Returns:
|
||||
(success, message, output_wav_path_or_none)
|
||||
@@ -662,9 +666,11 @@ def generate_voice(refined_text: str) -> Tuple[bool, str, Optional[str]]:
|
||||
if chat is None:
|
||||
return False, init_err or "ChatTTS 不可用。", None
|
||||
|
||||
payload, spk_err = _load_speaker_payload()
|
||||
from voice_presets import load_voice_payload
|
||||
|
||||
payload, spk_err = load_voice_payload(voice_id)
|
||||
if payload is None:
|
||||
return False, spk_err or "请先锁定音色。", None
|
||||
return False, spk_err or "请先选择或生成可用音色。", None
|
||||
|
||||
try:
|
||||
import ChatTTS
|
||||
|
||||
Reference in New Issue
Block a user