Files
smart-speaker/README.md

123 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`.