2026-01-09 19:59:31 +03:00
2026-01-09 19:59:31 +03:00
2026-01-02 20:26:44 +03:00

Умная колонка «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»
  • Отмена будильников: «отмени будильник»
  • Стоп/сброс: «стоп», «хватит»

Объяснение работы

  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.

Description
No description provided
Readme 1.1 MiB
Languages
Python 99.6%
Shell 0.3%