Files
vocero-client/speech_to_speech/arguments_classes/qwen3_tts_arguments.py
T
2026-08-26 17:42:00 -04:00

101 lines
4.6 KiB
Python

from dataclasses import dataclass, field
from typing import Literal, Optional
@dataclass
class Qwen3TTSHandlerArguments:
qwen3_tts_model_name: str = field(
default="Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice",
metadata={
"help": "The Qwen3-TTS model to use (HuggingFace Hub ID or local path). Default is 'Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice'. On Apple Silicon, Qwen/* model IDs are auto-mapped to the corresponding mlx-community/* model when possible, defaulting to the 6bit MLX variant unless the model name already pins a specific suffix."
},
)
qwen3_tts_device: str = field(
default="cuda",
metadata={
"help": "Preferred device for Qwen3-TTS. Options: 'cuda', 'cpu', 'mps', 'auto'. Default is 'cuda'. On Apple Silicon the mlx-audio backend is selected automatically."
},
)
qwen3_tts_dtype: str = field(
default="auto",
metadata={
"help": "Data type for inference. Options: 'auto', 'float16', 'bfloat16', 'float32'. Default is 'auto'."
},
)
qwen3_tts_attn_implementation: str = field(
default="eager",
metadata={
"help": "Attention implementation. Options: 'eager', 'flash_attention_2', 'sdpa'. Use 'eager' on Jetson. Default is 'eager'."
},
)
qwen3_tts_backend: Literal["ggml", "torch"] = field(
default="ggml",
metadata={
"help": "faster-qwen3-tts backend on non-macOS platforms. Options: 'ggml' or 'torch'. Default is 'ggml'. On Apple Silicon, mlx-audio is selected automatically and this option is ignored."
},
)
qwen3_tts_ref_audio: Optional[str] = field(
default=None,
metadata={
"help": "Optional path to reference audio file for voice cloning. Leave unset when using a CustomVoice model."
},
)
qwen3_tts_ref_text: str = field(
default="I'm confused why some people have super short timelines, yet at the same time are bullish on scaling up reinforcement learning atop LLMs. If we're actually close to a human-like learner, then this whole approach of training on verifiable outcomes.",
metadata={"help": "Transcription of the reference audio for voice cloning."},
)
qwen3_tts_speaker: Optional[str] = field(
default="Aiden",
metadata={
"help": "Speaker name for CustomVoice models. Default is 'Aiden'. If not provided, the first supported speaker is used when available."
},
)
qwen3_tts_instruct: Optional[str] = field(
default=None,
metadata={"help": "Instruction text for VoiceDesign models (optional, required for voice design)."},
)
qwen3_tts_xvec_only: bool = field(
default=False,
metadata={
"help": "Use x-vector only voice cloning mode (recommended for cleaner starts and language switching). Default is False."
},
)
qwen3_tts_parity_mode: bool = field(
default=False,
metadata={"help": "Disable CUDA-graph streaming path and use parity mode for stability. Default is False."},
)
qwen3_tts_non_streaming_mode: Optional[bool] = field(
default=True,
metadata={
"help": "Optional override for Qwen3-TTS text prefill behavior. Default is true, which pre-fills the full target text before decode on faster-qwen3-tts. Currently ignored on Apple Silicon because mlx-audio does not expose this yet."
},
)
qwen3_tts_mlx_quantization: Optional[str] = field(
default="6bit",
metadata={
"help": "Optional MLX quantization override on Apple Silicon. Supported values: 'bf16', '4bit', '6bit', '8bit'. Default is '6bit'."
},
)
qwen3_tts_language: str = field(
default="auto",
metadata={"help": "Target language for synthesis. Default is 'auto'."},
)
qwen3_tts_streaming_chunk_size: Optional[int] = field(
default=None,
metadata={
"help": "Codec steps per streaming chunk. If unset, the handler uses a backend-specific default: 8 on faster-qwen3-tts and 4 on mlx-audio."
},
)
qwen3_tts_max_new_tokens: int = field(
default=1536,
metadata={
"help": "Upper cap for Qwen3-TTS codec tokens. The handler estimates a per-utterance budget from the text and clamps it to this ceiling (~12 tokens per second of audio). Raise this above 1536 if you want to allow longer utterances."
},
)
qwen3_tts_blocksize: int = field(
default=512,
metadata={
"help": "Audio chunk size in samples for streaming output. Must match LocalAudioStreamer blocksize. Default is 512."
},
)