Add default voice for each language (#180)

Fix https://github.com/kyutai-labs/pocket-tts/issues/166
This commit is contained in:
Gabriel de Marmiesse
2026-05-04 15:35:22 +02:00
committed by GitHub
parent de010ea890
commit 7db278ee57
8 changed files with 94 additions and 53 deletions
+15 -4
View File
@@ -16,7 +16,6 @@ from typing_extensions import Annotated
from pocket_tts.data.audio import stream_audio_chunks
from pocket_tts.default_parameters import (
DEFAULT_AUDIO_PROMPT,
DEFAULT_EOS_THRESHOLD,
DEFAULT_FRAMES_AFTER_EOS,
DEFAULT_LSD_DECODE_STEPS,
@@ -24,6 +23,7 @@ from pocket_tts.default_parameters import (
DEFAULT_TEMPERATURE,
MAX_TOKEN_PER_CHUNK,
get_default_text_for_language,
get_default_voice_for_language,
)
from pocket_tts.models.tts_model import TTSModel, export_model_state
from pocket_tts.utils.logging_utils import enable_logging
@@ -136,7 +136,7 @@ def text_to_speech(
raise HTTPException(status_code=400, detail="Text cannot be empty")
if voice_url is None and voice_wav is None:
voice_url = DEFAULT_AUDIO_PROMPT
voice_url = get_default_voice_for_language(str(tts_model.origin))
if voice_url is not None and voice_wav is not None:
raise HTTPException(status_code=400, detail="Cannot provide both voice_url and voice_wav")
@@ -223,8 +223,17 @@ def serve(
def generate(
text: Annotated[str, typer.Option(help="Text to generate")] = None,
voice: Annotated[
str, typer.Option(help="Path to audio conditioning file (voice to clone)")
] = DEFAULT_AUDIO_PROMPT,
str | None,
typer.Option(
help=(
"Path to audio conditioning file (voice to clone). "
"Defaults to a built-in voice chosen from the language: "
"'giovanni' for italian, 'lola' for spanish, 'juergen' for german, "
"'rafael' for portuguese, 'estelle' for french, 'alba' otherwise."
),
show_default=False,
),
] = None,
quiet: Annotated[bool, typer.Option("-q", "--quiet", help="Disable logging output")] = False,
language: Annotated[
str | None,
@@ -293,6 +302,8 @@ def generate(
)
tts_model.to(device)
if voice is None:
voice = get_default_voice_for_language(language)
model_state_for_voice = tts_model.get_state_for_audio_prompt(voice)
# Stream audio generation directly to file or stdout
audio_chunks = tts_model.generate_audio_stream(