4.3 KiB
4.3 KiB
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.