From e56754498f1c6b2a9dabb62529f783e73fae8e6b Mon Sep 17 00:00:00 2001 From: historia Date: Tue, 18 Aug 2026 17:58:04 -0400 Subject: feat: language parameter for potential accent tuning --- converter/converter.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'converter/converter.py') diff --git a/converter/converter.py b/converter/converter.py index 6d09e09..29d3bc4 100644 --- a/converter/converter.py +++ b/converter/converter.py @@ -13,7 +13,7 @@ from typing import Dict, List, Optional, Tuple from . import audio, chunking, config, cover, extractors from .audio import TrackMeta -from .tts import QwenTTSClient +from .tts import QwenTTSClient, normalize_language logger = logging.getLogger(__name__) @@ -88,11 +88,16 @@ class AudiobookConverter: def __init__(self, voice_mode: str = config.VOICE_MODE_CUSTOM, voice_clone_ref_audio: Optional[str] = None, voice_clone_ref_text: Optional[str] = None, skip_transcription: bool = False, - speed: float = 1.0, single_file: bool = False, output_format: str = "mp3"): + speed: float = 1.0, single_file: bool = False, output_format: str = config.AUDIO_FORMAT, + language: Optional[str] = None): if speed <= 0: raise ValueError(f"Speed must be a positive number, got {speed}") if output_format not in config.AUDIO_FORMATS: raise ValueError(f"Unsupported output format: {output_format}") + if language is None: + language = (config.VOICE_CLONE_LANGUAGE if voice_mode == config.VOICE_MODE_CLONE + else config.CUSTOM_VOICE_LANGUAGE) + self.language = normalize_language(language) self.voice_mode = voice_mode self.voice_clone_ref_audio = voice_clone_ref_audio self.speed = speed @@ -104,6 +109,7 @@ class AudiobookConverter: voice_clone_ref_audio=voice_clone_ref_audio, voice_clone_ref_text=voice_clone_ref_text, skip_transcription=skip_transcription, + language=self.language, ) def _validate_configuration(self) -> None: @@ -117,7 +123,7 @@ class AudiobookConverter: if not self.voice_clone_ref_audio: raise ValueError( "Voice Clone mode requires a reference audio file. " - "Use --voice-sample to specify it." + "Use --clone to specify it." ) if not Path(self.voice_clone_ref_audio).exists(): @@ -366,10 +372,10 @@ class AudiobookConverter: print("Model size: 1.7B (always)") if self.voice_mode == config.VOICE_MODE_CUSTOM: print(f"Speaker: {config.CUSTOM_VOICE_SPEAKER}") - print(f"Language: {config.CUSTOM_VOICE_LANGUAGE}") + print(f"Language: {self.language}") elif self.voice_mode == config.VOICE_MODE_CLONE: print(f"Reference audio: {Path(self.voice_clone_ref_audio).name}") - print(f"Language: {config.VOICE_CLONE_LANGUAGE}") + print(f"Language: {self.language}") print(f"Output format: {self.output_format}") if self.single_file and self.output_format != "m4b": print("Chapter mode: single file (--single-file)") -- cgit v1.2.3