trainer.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. # -*- coding: utf-8 -*-
  2. """
  3. Trainer-Konfiguration für ML-Modelle.
  4. """
  5. from dataclasses import dataclass, field
  6. @dataclass
  7. class WakewordTrainerConfig:
  8. """Konfiguration für Wakeword-Training."""
  9. model_name: str = "custom"
  10. epochs: int = 100
  11. batch_size: int = 32
  12. learning_rate: float = 0.001
  13. validation_split: float = 0.2
  14. augmentation_enabled: bool = True
  15. early_stopping_patience: int = 10
  16. @dataclass
  17. class VoiceRecognitionTrainerConfig:
  18. """Konfiguration für Sprechererkennungs-Training."""
  19. model_name: str = "default"
  20. epochs: int = 100
  21. batch_size: int = 16
  22. learning_rate: float = 0.0001
  23. validation_split: float = 0.2
  24. embedding_size: int = 256
  25. augmentation_enabled: bool = True
  26. early_stopping_patience: int = 10
  27. @dataclass
  28. class AudioProcessingConfig:
  29. """Audio-Verarbeitungs-Konfiguration für Training."""
  30. sample_rate: int = 16000
  31. n_mels: int = 80
  32. n_fft: int = 1024
  33. hop_length: int = 256
  34. win_length: int = 1024
  35. fmin: float = 0.0
  36. fmax: float = 8000.0
  37. @dataclass
  38. class DataConfig:
  39. """Daten-Konfiguration für Training."""
  40. raw_data_directory: str = "trainer/data"
  41. processed_data_directory: str = "trainer/processed"
  42. cache_directory: str = "trainer/cache"
  43. min_samples_per_class: int = 10
  44. @dataclass
  45. class OutputConfig:
  46. """Ausgabe-Konfiguration für Training."""
  47. models_directory: str = "models"
  48. export_onnx: bool = True
  49. export_torchscript: bool = True
  50. model_password: str = "" # Passwort für .pth Verschlüsselung
  51. @dataclass
  52. class TrainerConfig:
  53. """Haupt-Trainer-Konfiguration."""
  54. wakeword: WakewordTrainerConfig = field(default_factory=WakewordTrainerConfig)
  55. voice_recognition: VoiceRecognitionTrainerConfig = field(default_factory=VoiceRecognitionTrainerConfig)
  56. audio_processing: AudioProcessingConfig = field(default_factory=AudioProcessingConfig)
  57. data: DataConfig = field(default_factory=DataConfig)
  58. output: OutputConfig = field(default_factory=OutputConfig)
  59. device: str = "auto" # auto, cpu, cuda, mps
  60. num_workers: int = 4
  61. seed: int = 42
  62. verbose: bool = True