123 lines
4.3 KiB
Markdown
123 lines
4.3 KiB
Markdown
# 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+
|
||
- Системные пакеты:
|
||
|
||
```bash
|
||
sudo apt-get update
|
||
sudo apt-get install -y portaudio19-dev libasound2-dev mpg123
|
||
```
|
||
|
||
Для управления громкостью нужен `pactl` или `amixer` (обычно из `pulseaudio-utils`/`alsa-utils`).
|
||
|
||
## Установка
|
||
|
||
```bash
|
||
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`
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
|
||
Минимально обязательные переменные:
|
||
|
||
```ini
|
||
PERPLEXITY_API_KEY=...
|
||
DEEPGRAM_API_KEY=...
|
||
PORCUPINE_ACCESS_KEY=...
|
||
```
|
||
|
||
Полный пример (как в `.env.example`):
|
||
|
||
```ini
|
||
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
|
||
```
|
||
|
||
## Запуск
|
||
|
||
```bash
|
||
make run
|
||
# или
|
||
python run.py
|
||
```
|
||
|
||
## Примеры голосовых команд
|
||
- Активация: `Alexandr`
|
||
- Диалог: `Почему небо голубое?`
|
||
- Погода: `Какая сейчас погода?`, `Погода в Москве`
|
||
- Перевод: `Переведи на английский: как дела`
|
||
- Таймер: `Поставь таймер на 5 минут`
|
||
- Будильник: `Поставь будильник на 7:30`, `Будильник по будням в 8:00`
|
||
- Секундомер: `Запусти секундомер`, `Покажи активные секундомеры`
|
||
- Громкость: `Громкость 5`
|
||
- Spotify: `Включи музыку`, `Пауза`, `Что сейчас играет`
|
||
- Игра: `Давай сыграем в города`
|
||
- Остановка/прерывание: `Стоп`, `Хватит`, `Повтори`
|
||
|
||
## Полезные команды
|
||
|
||
```bash
|
||
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`.
|