# 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`.