Initial commit: Cosmo voice assistant

Полностью локальный голосовой ассистент на Python.

Стек:
- Wake word: openWakeWord (onnxruntime)
- STT: RealtimeSTT + faster-whisper + Silero VAD (CUDA)
- LLM-агент: smolagents ToolCallingAgent + Ollama qwen2.5:7b
- TTS: Silero V4 (torch.hub) + sounddevice
- Shell: Git Bash (Windows) / bash (macOS)

Поддерживает Windows и macOS. Агент с памятью и tool calling —
находит программы самостоятельно, запоминает пути, выполняет
произвольные shell-команды.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
d.klimov
2026-04-10 15:58:12 +03:00
commit 6010816f1d
23 changed files with 1969 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
# Конфиг для обучения 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
# Архитектура модели
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