| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- # -*- coding: utf-8 -*-
- """
- Client/Satellite-Konfiguration.
- """
- from dataclasses import dataclass, field
- @dataclass
- class ServerConnectionConfig:
- """Server-Verbindungs-Konfiguration."""
- host: str = "localhost"
- port: int = 2101
- reconnect_interval_seconds: float = 5.0
- connection_timeout_seconds: float = 10.0
- @dataclass
- class ClientAudioConfig:
- """Audio-Konfiguration für den Client."""
- # Sprach-Audio (Wakeword-Erkennung)
- sample_rate: int = 16000
- channels: int = 1
- bit_depth: int = 16
- # Musik-Wiedergabe (sollte mit Server übereinstimmen)
- music_sample_rate: int = 44100 # 44.1kHz - Standard für die meisten Geräte
- music_channels: int = 2
- music_bit_depth: int = 16
- # Geräte
- input_device: str | None = None
- output_device: str | None = None
- buffer_size: int = 1024
- @dataclass
- class ClientWakewordConfig:
- """Wakeword-Konfiguration für den Client."""
- models: list[str] = field(default_factory=lambda: ["custom", "system_command"])
- threshold: float = 0.5
- model_directory: str = "models/wakeword"
- use_onnx: bool = True
- enabled: bool = True
- silence_timeout_seconds: float = 3.0
- max_recording_seconds: float = 60.0
- no_speech_timeout_seconds: float = 5.0
- pre_buffer_seconds: float = 0.5
- wakeword_cooldown_seconds: float = 3.0
- @dataclass
- class SatelliteIdentityConfig:
- """Satelliten-Identität."""
- room: str = ""
- alias: str = ""
- mac_address: str = "" # Wird automatisch ermittelt wenn leer
- @dataclass
- class ClientLoggingConfig:
- """Logging-Konfiguration für den Client."""
- level: str = "INFO"
- log_directory: str = "logs"
- @dataclass
- class ClientConfig:
- """Haupt-Client-Konfiguration."""
- server: ServerConnectionConfig = field(default_factory=ServerConnectionConfig)
- audio: ClientAudioConfig = field(default_factory=ClientAudioConfig)
- wakeword: ClientWakewordConfig = field(default_factory=ClientWakewordConfig)
- identity: SatelliteIdentityConfig = field(default_factory=SatelliteIdentityConfig)
- logging: ClientLoggingConfig = field(default_factory=ClientLoggingConfig)
- config_port: int = 2105
- config_listener_enabled: bool = True
- assets_directory: str = "assets"
- profile: str = "default"
|