Files
cosmo-voice-assistant/train_wakeword/cosmo_config.yaml
Daniil Klimov 110d9cde29 Mac M1 optimizations, fix train pipeline, add Hey Cosmo wake word model
- Fix install_mac.sh: use venv + Python 3.12 (3.14 incompatible with ML libs)
- Fix run_mac.sh: activate venv, add CPU thread optimization env vars
- Fix agent.py: remove f-string from SYSTEM_PROMPT template (NameError on import)
- Add missing deps: sounddevice, pydub, imageio-ffmpeg, omegaconf
- Optimize for M1: torch.inference_mode, set_num_threads, OMP/MKL tuning
- Switch to qwen2.5:3b for faster LLM responses on Mac
- Switch Whisper to medium model with auto compute (small+int8 had poor Russian)
- Add initial_prompt for better Russian transcription
- Add open_app tool for native macOS app launching
- Fix TTS: sanitize Latin text to Cyrillic for Silero compatibility
- Fix wake word echo: add cooldown after TTS, reset model state, raise threshold
- Make "Слушаю" TTS synchronous to avoid mic interference
- Fix train Dockerfile: remove tensorflow/onnx2tf (only ONNX needed), fix deps
- Fix train.sh: use wget for dataset download, add --shm-size=2g
- Add trained hey_cosmo.onnx wake word model
- Add TODO section to CLAUDE.md (ChatterBox TTS, Ollama Modelfile ideas)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 11:19:53 +03:00

59 lines
1.6 KiB
YAML

# Конфиг для обучения wake word модели "Hey Cosmo"
# Документация: https://github.com/dscripka/openWakeWord
model_name: "hey_cosmo"
output_dir: "/output"
# Целевая фраза — "hey cosmo" работает лучше чем просто "cosmo"
target_phrase:
- "hey cosmo"
- "cosmo"
# Похожие слова для улучшения устойчивости к ложным срабатываниям
custom_negative_phrases:
- "hey cosmos"
- "hey cosmic"
- "hey cosplay"
- "hey presto"
- "hey como"
- "hey koz"
- "cozmo"
# Количество синтетических примеров
n_samples: 10000
n_samples_val: 1000
tts_batch_size: 25
# Аугментация
augmentation_batch_size: 16
augmentation_rounds: 2
# Пути внутри Docker контейнера
piper_sample_generator_path: "/piper-sample-generator"
false_positive_validation_data_path: "/data/validation_set_features.npy"
feature_data_files:
"ACAV100M_sample": "/data/openwakeword_features_ACAV100M_2000_hrs_16bit.npy"
batch_n_per_class:
"ACAV100M_sample": 1024
"adversarial_negative": 50
"positive": 50
# Пути для аугментации (пустые — аугментация без RIR и фонового шума)
rir_paths: []
background_paths: []
background_paths_duplication_rate: []
# Архитектура модели
model_type: "dnn"
layer_size: 32
steps: 50000
# Цели качества
max_negative_weight: 1500
target_false_positives_per_hour: 0.5
target_accuracy: 0.7
target_recall: 0.5
lr: 0.0001