# -*- coding: utf-8 -*- """ Standalone-Konfiguration. Kombiniert Server- und Client-Funktionalität für den Einzelbetrieb. """ from dataclasses import dataclass, field from trixy_core.config.datasets.server import ( AudioConfig, VoiceRecognitionConfig, ConversationConfig, PluginConfig, LoggingConfig, SecurityConfig, STTCorrectionConfig, EmailServiceConfig, ) from trixy_core.config.datasets.client import ClientAudioConfig, ClientWakewordConfig @dataclass class SyncConfig: """Synchronisierungs-Konfiguration fuer Standalone.""" enabled: bool = False server_host: str = "" server_port: int = 2101 probe_interval_seconds: float = 30.0 sync_interval_seconds: float = 300.0 connect_timeout_seconds: float = 5.0 sync_data_directory: str = "./sync_data" @dataclass class StandaloneAudioConfig: """Kombinierte Audio-Konfiguration für Standalone.""" # Sprach-Audio sample_rate: int = 16000 channels: int = 1 bit_depth: int = 16 # Musik-Wiedergabe 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 StandaloneConfig: """Haupt-Standalone-Konfiguration.""" audio: StandaloneAudioConfig = field(default_factory=StandaloneAudioConfig) security: SecurityConfig = field(default_factory=SecurityConfig) wakeword: ClientWakewordConfig = field(default_factory=ClientWakewordConfig) voice_recognition: VoiceRecognitionConfig = field(default_factory=VoiceRecognitionConfig) conversation: ConversationConfig = field(default_factory=ConversationConfig) plugins: PluginConfig = field(default_factory=PluginConfig) logging: LoggingConfig = field(default_factory=LoggingConfig) assets_directory: str = "assets" models_directory: str = "models" profile: str = "default" stt_correction: STTCorrectionConfig = field(default_factory=STTCorrectionConfig) sync: SyncConfig = field(default_factory=SyncConfig) email: EmailServiceConfig = field(default_factory=EmailServiceConfig) config_port: int = 2105 room: str = "standalone" alias: str = "Trixy"