e5047a1297bdffe78a46f3fe448f14363e79c08a
🎙️ Умная колонка «Alexandr»
Alexandr — это персональный голосовой ассистент для Linux, объединяющий современные нейросетевые технологии для создания естественного диалога. Он слушает, понимает, переводит, рассказывает о погоде и следит за временем.
✨ Возможности
🧠 Искусственный интеллект
- Умный диалог: Поддержка контекста беседы на базе Perplexity AI (Llama 3.1).
- Переводчик: Мгновенный двусторонний перевод (RU ↔ EN) с озвучкой на целевом языке.
🗣️ Голосовой интерфейс
- Wake Word: Активация по фразе «Alexandr» (технология Porcupine).
- Распознавание речи: Быстрое и точное STT от Deepgram.
- Синтез речи: Естественная офлайн-озвучка с помощью Silero TTS.
🛠️ Инструменты
- ⛅ Погода: Точный прогноз погоды (текущая, на день, на ближайшие часы) через Open-Meteo.
- ⏰ Будильник: Голосовая установка будильников и таймеров.
- 🔊 Управление: Регулировка громкости системы.
⚙️ Установка
1. Системные требования
- OS: Linux
- Python 3.9+
- Библиотеки:
portaudio19-dev(для микрофона),libasound2-dev(ALSA),mpg123(для будильника).
2. Сборка проекта
# Клонирование репозитория
git clone https://github.com/your-username/alexander_smart-speaker.git
cd alexander_smart-speaker
# Создание виртуального окружения
python -m venv venv
source venv/bin/activate
# Установка зависимостей
pip install -r requirements.txt
3. Конфигурация
Создайте файл .env на основе примера:
cp .env.example .env
Заполните ключи в .env:
# AI & Speech
PERPLEXITY_API_KEY=pplx-...
DEEPGRAM_API_KEY=...
PORCUPINE_ACCESS_KEY=...
# TTS Settings
TTS_EN_SPEAKER=en_0
TTS_RU_SPEAKER=eugene
# Weather (Координаты вашего города)
WEATHER_LAT=63.56
WEATHER_LON=53.69
WEATHER_CITY=Ухта
🚀 Запуск и Использование
python run.py
Примеры команд
| Категория | Команда пользователя | Действие |
|---|---|---|
| Активация | «Alexandr» | Ассистент начинает слушать |
| Диалог | «Почему небо голубое?» | Запрос в AI с сохранением контекста |
| Погода | «Какая сейчас погода?», «Нужен ли зонт?» | Прогноз погоды |
| Перевод | «Переведи на английский: привет, как дела?» | Перевод и озвучка (EN) |
| Будильник | «Разбуди меня в 7:30», «Поставь таймер на 5 минут» | Установка сигнала |
| Громкость | «Громкость 5», «Громкость 8» | Изменение системной громкости |
| Управление | «Стоп», «Хватит», «Повтори» | Остановка речи или повтор фразы |
🏗️ Архитектура
graph TD
Mic[🎤 Микрофон] --> Wake[Wake Word<br>(Porcupine)]
Wake -->|Activated| STT[STT<br>(Deepgram)]
STT --> Router{Анализ команды}
Router -->|Прогноз| Weather[⛅ Погода<br>(Open-Meteo)]
Router -->|Время| Alarm[⏰ Будильник/Таймер]
Router -->|Настройки| Vol[🔊 Громкость]
Router -->|Перевод| Translator[A↔B Переводчик]
Router -->|Вопрос| AI[🧠 Perplexity AI]
Weather --> TTS
Alarm --> TTS
Vol --> TTS
Translator --> TTS
AI --> Cleaner[Очистка текста]
Cleaner --> TTS[🗣️ TTS<br>(Silero)]
TTS --> Speaker[🔊 Динамик]
📂 Структура проекта
app/main.py— Точка входа, основной цикл событий.app/audio/— Модули работы со звуком (STT, TTS, Wake Word).app/core/— Логика AI, конфиги, очистка текста.app/features/— Навыки (Погода, Будильник, Таймер).assets/— Модели (Porcupine) и звуки.data/— Сохранение состояния (будильники).
🛠️ Решение проблем
- Ошибка Deepgram 400: Проверьте баланс и правильность
DEEPGRAM_API_KEY. - Нет звука: Убедитесь, что
amixerустановлен и устройство вывода настроено по умолчанию. - Будильник не играет: Убедитесь, что установлен
mpg123.
📄 Лицензия
MIT License. См. LICENSE.txt.
Description
Languages
Python
99.6%
Shell
0.3%