Files
smart-speaker/README.md
2026-01-24 23:43:02 +03:00

100 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Умная колонка «Alexandr»
Небольшой голосовой ассистент для Linux: реагирует на wake word, распознает речь, обращается к AI, озвучивает ответы, умеет переводить и работать с будильником.
## Возможности
- Wake word: «Alexandr» (Porcupine).
- Распознавание речи (Deepgram, RU/EN).
- Озвучка (Silero TTS, RU/EN).
- Перевод RU↔EN (Perplexity).
- Будильник с голосовым отключением.
- Таймер с голосовым отключением.
- Управление громкостью (ALSA amixer).
## Требования
- Linux
- Python 3.9+
- Системные утилиты: `mpg123`, `amixer` (ALSA)
- Драйверы/библиотеки для микрофона (PortAudio)
## Установка
```bash
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
## Настройка окружения
Создайте `.env` в корне проекта:
```
PERPLEXITY_API_KEY=...
PERPLEXITY_MODEL=llama-3.1-sonar-small-128k-chat
DEEPGRAM_API_KEY=...
PORCUPINE_ACCESS_KEY=...
TTS_EN_SPEAKER=en_0
```
## Запуск
```bash
python main.py
```
## Примеры команд
- Активировать: «Alexandr»
- Перевод: «переведи на английский как пройти в библиотеку»
- Перевод: «переведи с английского» → сказать фразу на английском
- Громкость: «громкость 5»
- Будильник: «будильник на 7:30», «разбуди на 8 15»
- Таймер: «таймер на 6 минут», «поставь будильник через 6 минут»
- Отмена будильников: «отмени будильник»
- Отмена таймеров: «отмени таймер»
- Стоп/сброс: «стоп», «хватит»
## Объяснение работы
1) Система ждет wake word («Alexandr») через Porcupine.
2) После активации включается распознавание речи (Deepgram).
3) Команда распознается и проверяется на спец‑действия: будильник, громкость, перевод.
4) Если это перевод — отправляется отдельный запрос в Perplexity и результат озвучивается.
5) Если это обычный запрос — идет в AI, ответ очищается от разметки и озвучивается.
6) После ответа включается режим продолжения диалога без повторного wake word.
## Архитектурная схема
```
Микрофон
Wake word (Porcupine) ──► STT (Deepgram) ──► Логика команд
├─► Будильник (alarm.py)
├─► Громкость (sound_level.py)
├─► Перевод (ai.py)
└─► Диалог (ai.py)
Очистка текста (cleaner.py)
TTS (tts.py)
Динамик
```
## Структура проекта
- `main.py` — основной цикл работы ассистента.
- `wakeword.py` — детектор wake word (Porcupine).
- `stt.py` — потоковое распознавание речи (Deepgram).
- `tts.py` — озвучивание (Silero TTS).
- `ai.py` — запросы к Perplexity (чат и перевод).
- `cleaner.py` — очистка ответа и преобразование чисел (RU).
- `alarm.py` — будильник и логика расписания.
- `sound_level.py` — управление громкостью.
## Частые проблемы
- Ошибка Deepgram 400: проверьте `DEEPGRAM_API_KEY` и доступность модели.
- Нет звука: проверьте `amixer` и настройки ALSA.
- Будильник не играет: установите `mpg123`.
## Лицензия
См. `LICENSE.txt`.