Alexander Smart Speaker

Голосовой ассистент для Linux с wake word, STT/TTS и набором голосовых навыков.

Что умеет

  • Активация по ключевому слову Alexandr.
  • Диалог с AI (Perplexity) с сохранением контекста.
  • Перевод RU ↔ EN с озвучиванием.
  • Погода по умолчанию и по названию города.
  • Будильники, таймеры и секундомеры.
  • Управление громкостью системы.
  • Управление Spotify (play/pause/next/current track).
  • Игра в города.

Технологии

  • Wake word: pvporcupine
  • STT: deepgram-sdk
  • TTS: Silero (torch, torchaudio)
  • AI: Perplexity API
  • Погода: Open-Meteo
  • Музыка: Spotify Web API (spotipy)

Требования

  • Linux
  • Python 3.9+
  • Системные пакеты:
sudo apt-get update
sudo apt-get install -y portaudio19-dev libasound2-dev mpg123

Для управления громкостью нужен pactl или amixer (обычно из pulseaudio-utils/alsa-utils).

Установка

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

Настройка .env

cp .env.example .env

Минимально обязательные переменные:

PERPLEXITY_API_KEY=...
DEEPGRAM_API_KEY=...
PORCUPINE_ACCESS_KEY=...

Полный пример (как в .env.example):

PERPLEXITY_API_KEY=your_perplexity_api_key_here
PERPLEXITY_MODEL=llama-3.1-sonar-small-128k-chat
DEEPGRAM_API_KEY=your_deepgram_api_key_here
PORCUPINE_ACCESS_KEY=your_porcupine_access_key_here
PORCUPINE_SENSITIVITY=0.8
TTS_EN_SPEAKER=en_0
WEATHER_LAT=63.56
WEATHER_LON=53.69
WEATHER_CITY=Ухта
SPOTIFY_CLIENT_ID=your_spotify_client_id
SPOTIFY_CLIENT_SECRET=your_spotify_client_secret
SPOTIFY_REDIRECT_URI=http://localhost:8888/callback

Запуск

make run
# или
python run.py

Примеры голосовых команд

  • Активация: Alexandr
  • Диалог: Почему небо голубое?
  • Погода: Какая сейчас погода?, Погода в Москве
  • Перевод: Переведи на английский: как дела
  • Таймер: Поставь таймер на 5 минут
  • Будильник: Поставь будильник на 7:30, Будильник по будням в 8:00
  • Секундомер: Запусти секундомер, Покажи активные секундомеры
  • Громкость: Громкость 5
  • Spotify: Включи музыку, Пауза, Что сейчас играет
  • Игра: Давай сыграем в города
  • Остановка/прерывание: Стоп, Хватит, Повтори

Полезные команды

make run          # запуск ассистента
make check        # базовая проверка проекта
make qwen-context # собрать контекст проекта

Структура проекта

  • run.py - точка входа.
  • app/main.py - главный цикл ассистента.
  • app/audio/ - wake word, STT, TTS, громкость.
  • app/core/ - конфиг, AI, роутинг команд, утилиты.
  • app/features/ - погода, будильник, таймер, секундомер, музыка, города.
  • assets/ - модели и звуки.
  • data/ - сохраненные будильники/таймеры/секундомеры.

Диагностика проблем

  • Ошибки STT/AI: проверьте ключи в .env.
  • Нет звука: проверьте системное устройство вывода и утилиты pactl/amixer.
  • Не играет будильник/таймер: убедитесь, что установлен mpg123.
  • Spotify не управляется: проверьте SPOTIFY_*, авторизацию и наличие активного устройства.

Лицензия

MIT, см. LICENSE.txt.

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