Switch wake word from Porcupine to openwakeword + training pipeline

- Add training/ pipeline (step_1..step_5) and own-samples flow
- record_wav.py with single-shot and long-record modes, RMS-based silence filter
- remove_silent.py to drop silent samples and renumber
- modes.py: openwakeword inference with reset() and quiet predictions; commented Lusya block for later
- stt.py: drop local faster-whisper fallback, Groq-only
- config.py: remove unused STT_PROVIDER/WHISPER_*
- llm.py: replace __import__("os") hack with proper import
- tts.py: remove debug traceback in play_error_sound
- requirements.txt: add openwakeword/sounddevice/scipy, drop faster-whisper
- deploy/setup.sh: validate ELEVENLABS_API_KEY and WAKE_WORD_COSMO presence
- README.md, CLAUDE.md, project_roadmap memory updated to reflect new architecture
This commit is contained in:
2026-04-13 15:40:44 +03:00
parent 0a89bf5105
commit 780f6f0084
13 changed files with 378 additions and 140 deletions

View File

@@ -58,6 +58,15 @@ if [ -z "${GROQ_API_KEY:-}" ]; then
echo "❌ GROQ_API_KEY не задан в .env"
exit 1
fi
if [ -z "${ELEVENLABS_API_KEY:-}" ]; then
echo "❌ ELEVENLABS_API_KEY не задан в .env"
exit 1
fi
if [ -z "${WAKE_WORD_COSMO:-}" ] || [ ! -f "$APP_DIR/${WAKE_WORD_COSMO}" ]; then
echo "❌ WAKE_WORD_COSMO не задан или файл .onnx не найден"
echo " Обучи модель локально (training/step_4.py) и положи .onnx в data/models/"
exit 1
fi
echo " .env OK"
# --- 4. Bluetooth (PulseAudio) ---
@@ -111,6 +120,7 @@ echo " cat ${APP_DIR}/errors.log # лог ошибок"
echo ""
echo "Не забудь:"
echo " 1. Подключить BT колонку и прописать AUDIO_SINK в .env"
echo " 2. Прописать PORCUPINE_KEY и WAKE_WORD_MODEL в .env"
echo " 2. Положить обученную модель в data/models/cosmo.onnx и прописать"
echo " WAKE_WORD_COSMO=data/models/cosmo.onnx в .env"
echo " 3. Затем: sudo systemctl start ${SERVICE_NAME}"
echo ""