# -*- coding: utf-8 -*- """ Trainer-Konfiguration für ML-Modelle. """ from dataclasses import dataclass, field @dataclass class WakewordTrainerConfig: """Konfiguration für Wakeword-Training.""" model_name: str = "custom" epochs: int = 100 batch_size: int = 32 learning_rate: float = 0.001 validation_split: float = 0.2 augmentation_enabled: bool = True early_stopping_patience: int = 10 @dataclass class VoiceRecognitionTrainerConfig: """Konfiguration für Sprechererkennungs-Training.""" model_name: str = "default" epochs: int = 100 batch_size: int = 16 learning_rate: float = 0.0001 validation_split: float = 0.2 embedding_size: int = 256 augmentation_enabled: bool = True early_stopping_patience: int = 10 @dataclass class AudioProcessingConfig: """Audio-Verarbeitungs-Konfiguration für Training.""" sample_rate: int = 16000 n_mels: int = 80 n_fft: int = 1024 hop_length: int = 256 win_length: int = 1024 fmin: float = 0.0 fmax: float = 8000.0 @dataclass class DataConfig: """Daten-Konfiguration für Training.""" raw_data_directory: str = "trainer/data" processed_data_directory: str = "trainer/processed" cache_directory: str = "trainer/cache" min_samples_per_class: int = 10 @dataclass class OutputConfig: """Ausgabe-Konfiguration für Training.""" models_directory: str = "models" export_onnx: bool = True export_torchscript: bool = True model_password: str = "" # Passwort für .pth Verschlüsselung @dataclass class TrainerConfig: """Haupt-Trainer-Konfiguration.""" wakeword: WakewordTrainerConfig = field(default_factory=WakewordTrainerConfig) voice_recognition: VoiceRecognitionTrainerConfig = field(default_factory=VoiceRecognitionTrainerConfig) audio_processing: AudioProcessingConfig = field(default_factory=AudioProcessingConfig) data: DataConfig = field(default_factory=DataConfig) output: OutputConfig = field(default_factory=OutputConfig) device: str = "auto" # auto, cpu, cuda, mps num_workers: int = 4 seed: int = 42 verbose: bool = True