standalone.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. # -*- coding: utf-8 -*-
  2. """
  3. Standalone-Konfiguration.
  4. Kombiniert Server- und Client-Funktionalität für den Einzelbetrieb.
  5. """
  6. from dataclasses import dataclass, field
  7. from trixy_core.config.datasets.server import (
  8. AudioConfig,
  9. VoiceRecognitionConfig,
  10. ConversationConfig,
  11. PluginConfig,
  12. LoggingConfig,
  13. SecurityConfig,
  14. STTCorrectionConfig,
  15. EmailServiceConfig,
  16. )
  17. from trixy_core.config.datasets.client import ClientAudioConfig, ClientWakewordConfig
  18. @dataclass
  19. class SyncConfig:
  20. """Synchronisierungs-Konfiguration fuer Standalone."""
  21. enabled: bool = False
  22. server_host: str = ""
  23. server_port: int = 2101
  24. probe_interval_seconds: float = 30.0
  25. sync_interval_seconds: float = 300.0
  26. connect_timeout_seconds: float = 5.0
  27. sync_data_directory: str = "./sync_data"
  28. @dataclass
  29. class StandaloneAudioConfig:
  30. """Kombinierte Audio-Konfiguration für Standalone."""
  31. # Sprach-Audio
  32. sample_rate: int = 16000
  33. channels: int = 1
  34. bit_depth: int = 16
  35. # Musik-Wiedergabe
  36. music_sample_rate: int = 44100 # 44.1kHz - Standard für die meisten Geräte
  37. music_channels: int = 2
  38. music_bit_depth: int = 16
  39. # Geräte
  40. input_device: str | None = None
  41. output_device: str | None = None
  42. buffer_size: int = 1024
  43. @dataclass
  44. class StandaloneConfig:
  45. """Haupt-Standalone-Konfiguration."""
  46. audio: StandaloneAudioConfig = field(default_factory=StandaloneAudioConfig)
  47. security: SecurityConfig = field(default_factory=SecurityConfig)
  48. wakeword: ClientWakewordConfig = field(default_factory=ClientWakewordConfig)
  49. voice_recognition: VoiceRecognitionConfig = field(default_factory=VoiceRecognitionConfig)
  50. conversation: ConversationConfig = field(default_factory=ConversationConfig)
  51. plugins: PluginConfig = field(default_factory=PluginConfig)
  52. logging: LoggingConfig = field(default_factory=LoggingConfig)
  53. assets_directory: str = "assets"
  54. models_directory: str = "models"
  55. profile: str = "default"
  56. stt_correction: STTCorrectionConfig = field(default_factory=STTCorrectionConfig)
  57. sync: SyncConfig = field(default_factory=SyncConfig)
  58. email: EmailServiceConfig = field(default_factory=EmailServiceConfig)
  59. config_port: int = 2105
  60. room: str = "standalone"
  61. alias: str = "Trixy"