# 🎙️ Умная колонка «Alexandr»



**Alexandr** — это персональный голосовой ассистент для Linux, объединяющий современные нейросетевые технологии для создания естественного диалога. Он слушает, понимает, переводит, рассказывает о погоде и следит за временем.
---
## ✨ Возможности
### 🧠 Искусственный интеллект
* **Умный диалог**: Поддержка контекста беседы на базе **Perplexity AI** (Llama 3.1).
* **Переводчик**: Мгновенный двусторонний перевод (RU ↔ EN) с озвучкой на целевом языке.
### 🗣️ Голосовой интерфейс
* **Wake Word**: Активация по фразе **«Alexandr»** (технология Porcupine).
* **Распознавание речи**: Быстрое и точное STT от **Deepgram**.
* **Синтез речи**: Естественная офлайн-озвучка с помощью **Silero TTS**.
### 🛠️ Инструменты
* **⛅ Погода**: Точный прогноз погоды (текущая, на день, на ближайшие часы) через Open-Meteo.
* **⏰ Будильник**: Голосовая установка будильников и таймеров.
* **🔊 Управление**: Регулировка громкости системы.
---
## ⚙️ Установка
### 1. Системные требования
* OS: Linux
* Python 3.9+
* Библиотеки: `portaudio19-dev` (для микрофона), `libasound2-dev` (ALSA), `mpg123` (для будильника).
### 2. Сборка проекта
```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
```
### 3. Конфигурация
Создайте файл `.env` на основе примера:
```bash
cp .env.example .env
```
Заполните ключи в `.env`:
```ini
# AI & Speech
PERPLEXITY_API_KEY=pplx-...
DEEPGRAM_API_KEY=...
PORCUPINE_ACCESS_KEY=...
# TTS Settings
TTS_EN_SPEAKER=en_0
TTS_RU_SPEAKER=eugene
# Weather (Координаты вашего города)
WEATHER_LAT=63.56
WEATHER_LON=53.69
WEATHER_CITY=Ухта
```
---
## 🚀 Запуск и Использование
```bash
python run.py
```
### Примеры команд
| Категория | Команда пользователя | Действие |
|-----------|---------------------|----------|
| **Активация** | «Alexandr» | Ассистент начинает слушать |
| **Диалог** | «Почему небо голубое?» | Запрос в AI с сохранением контекста |
| **Погода** | «Какая сейчас погода?», «Нужен ли зонт?» | Прогноз погоды |
| **Перевод** | «Переведи на английский: привет, как дела?» | Перевод и озвучка (EN) |
| **Будильник** | «Разбуди меня в 7:30», «Поставь таймер на 5 минут» | Установка сигнала |
| **Громкость** | «Громкость 5», «Громкость 8» | Изменение системной громкости |
| **Управление** | «Стоп», «Хватит», «Повтори» | Остановка речи или повтор фразы |
---
## 🏗️ Архитектура
```mermaid
graph TD
Mic[🎤 Микрофон] --> Wake[Wake Word
(Porcupine)]
Wake -->|Activated| STT[STT
(Deepgram)]
STT --> Router{Анализ команды}
Router -->|Прогноз| Weather[⛅ Погода
(Open-Meteo)]
Router -->|Время| Alarm[⏰ Будильник/Таймер]
Router -->|Настройки| Vol[🔊 Громкость]
Router -->|Перевод| Translator[A↔B Переводчик]
Router -->|Вопрос| AI[🧠 Perplexity AI]
Weather --> TTS
Alarm --> TTS
Vol --> TTS
Translator --> TTS
AI --> Cleaner[Очистка текста]
Cleaner --> TTS[🗣️ TTS
(Silero)]
TTS --> Speaker[🔊 Динамик]
```
## 📂 Структура проекта
* `app/main.py` — Точка входа, основной цикл событий.
* `app/audio/` — Модули работы со звуком (STT, TTS, Wake Word).
* `app/core/` — Логика AI, конфиги, очистка текста.
* `app/features/` — Навыки (Погода, Будильник, Таймер).
* `assets/` — Модели (Porcupine) и звуки.
* `data/` — Сохранение состояния (будильники).
---
## 🛠️ Решение проблем
- **Ошибка Deepgram 400**: Проверьте баланс и правильность `DEEPGRAM_API_KEY`.
- **Нет звука**: Убедитесь, что `amixer` установлен и устройство вывода настроено по умолчанию.
- **Будильник не играет**: Убедитесь, что установлен `mpg123`.
## 📄 Лицензия
MIT License. См. `LICENSE.txt`.