vocero-s2s/src/speech_to_speech/arguments_classes/module_arguments.py
valenti b5f82fb48c
Some checks are pending
CI / ruff (push) Waiting to run
CI / mypy (push) Waiting to run
CI / pytest (push) Waiting to run
CI / package (push) Waiting to run
CI / Install smoke (${{ matrix.label }}) (linux, ubuntu-latest) (push) Blocked by required conditions
CI / Install smoke (${{ matrix.label }}) (macos-arm64, macos-14) (push) Blocked by required conditions
first git
2026-08-26 11:30:14 +00:00

73 lines
3.1 KiB
Python

from dataclasses import dataclass, field
from typing import Literal, Optional
@dataclass
class ModuleArguments:
device: Optional[str] = field(
default=None,
metadata={"help": "If specified, overrides the device for all handlers."},
)
mode: Optional[Literal["local", "socket", "websocket", "realtime"]] = field(
default="realtime",
metadata={
"help": "The mode to run the pipeline in. Either 'local', 'socket', 'websocket', or 'realtime'. Default is 'realtime'."
},
)
local_mac_optimal_settings: bool = field(
default=False,
metadata={
"help": "If specified, sets the optimal settings for Mac OS. Sets Parakeet TDT for STT, MLX LM for language model, and Qwen3-TTS for TTS, with MPS device and local mode."
},
)
stt: Optional[
Literal["whisper", "whisper-mlx", "mlx-audio-whisper", "faster-whisper", "parakeet-tdt", "paraformer"]
] = field(
default="parakeet-tdt",
metadata={
"help": "The STT to use. Either 'whisper', 'whisper-mlx', 'mlx-audio-whisper', 'faster-whisper', 'parakeet-tdt', or 'paraformer'. Default is 'parakeet-tdt'."
},
)
llm_backend: Optional[Literal["transformers", "mlx-lm", "responses-api", "chat-completions"]] = field(
default="responses-api",
metadata={
"help": "The LLM backend to use. Either 'transformers', 'mlx-lm', 'responses-api', or "
"'chat-completions' (OpenAI-compatible /v1/chat/completions). Default is 'responses-api'."
},
)
tts: Optional[Literal["chatTTS", "facebookMMS", "pocket", "kokoro", "qwen3"]] = field(
default="qwen3",
metadata={
"help": "The TTS to use. Either 'chatTTS', 'facebookMMS', 'pocket', 'kokoro', or 'qwen3'. Default is 'qwen3'."
},
)
log_level: str = field(
default="info",
metadata={"help": "Provide logging level. Example --log_level debug, default=info."},
)
enable_live_transcription: bool = field(
default=True,
metadata={
"help": "Enable live transcription display while user is speaking (works with parakeet-tdt). Default is true."
},
)
live_transcription_update_interval: float = field(
default=0.5,
metadata={"help": "Update interval for live transcription in seconds (default: 0.5s = 500ms)"},
)
live_transcription_min_silence_ms: int = field(
default=500,
metadata={
"help": "Minimum silence duration (ms) before ending speech when live transcription is enabled (default: 500ms)"
},
)
num_pipelines: int = field(
default=1,
metadata={
"help": "Number of isolated realtime pipelines in the pool. One uvicorn server listens on "
"--ws_port and routes each incoming websocket to the next free pipeline (each has its own "
"VAD/STT/LM/TTS handlers and conversation state). Max concurrent websocket sessions equals "
"num_pipelines; further connections are rejected. Only valid for --mode realtime. Default is 1."
},
)