d6181cccb7b31ae237bcdddb9e82e6d1df1afd61
Умная колонка «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)
Установка
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
Запуск
python main.py
Примеры команд
- Активировать: «Alexandr»
- Перевод: «переведи на английский как пройти в библиотеку»
- Перевод: «переведи с английского» → сказать фразу на английском
- Громкость: «громкость 5»
- Будильник: «будильник на 7:30», «разбуди на 8 15»
- Таймер: «таймер на 6 минут», «поставь будильник через 6 минут»
- Отмена будильников: «отмени будильник»
- Отмена таймеров: «отмени таймер»
- Стоп/сброс: «стоп», «хватит»
Объяснение работы
- Система ждет wake word («Alexandr») через Porcupine.
- После активации включается распознавание речи (Deepgram).
- Команда распознается и проверяется на спец‑действия: будильник, громкость, перевод.
- Если это перевод — отправляется отдельный запрос в Perplexity и результат озвучивается.
- Если это обычный запрос — идет в AI, ответ очищается от разметки и озвучивается.
- После ответа включается режим продолжения диалога без повторного 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.
Description
Languages
Python
99.6%
Shell
0.3%