🎙️ Умная колонка «Alexandr»

Python Platform License

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
No description provided
Readme 1.1 MiB
Languages
Python 99.6%
Shell 0.3%