# Умная колонка «Alexandr» Небольшой голосовой ассистент для Linux: реагирует на wake word, распознает речь, обращается к AI, озвучивает ответы, умеет переводить и работать с будильником. ## Возможности - Wake word: «Alexandr» (Porcupine). - Распознавание речи (Deepgram, RU/EN). - Озвучка (Silero TTS, RU/EN). - Перевод RU↔EN (Perplexity). - Будильник с локальным распознаванием стоп-команд (Vosk). - Управление громкостью (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» - Отмена будильников: «отмени будильник» - Стоп/сброс: «стоп», «хватит» ## Объяснение работы 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` — будильник и логика расписания. - `local_stt.py` — локальный Vosk для стоп-команд. - `sound_level.py` — управление громкостью. ## Частые проблемы - Ошибка Deepgram 400: проверьте `DEEPGRAM_API_KEY` и доступность модели. - Нет звука: проверьте `amixer` и настройки ALSA. - Будильник не играет: установите `mpg123`. ## Лицензия См. `LICENSE.txt`.