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
73 lines
3.1 KiB
Python
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."
|
|
},
|
|
)
|