Files
smart-speaker/README.md
2026-01-24 23:49:02 +03:00

136 lines
5.8 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.
# 🎙️ Умная колонка «Alexandr»
![Python](https://img.shields.io/badge/Python-3.9%2B-blue?logo=python&logoColor=white)
![Platform](https://img.shields.io/badge/Platform-Linux-linux?logo=linux&logoColor=white)
![License](https://img.shields.io/badge/License-MIT-green)
**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<br>(Porcupine)]
Wake -->|Activated| STT[STT<br>(Deepgram)]
STT --> Router{Анализ команды}
Router -->|Прогноз| Weather[⛅ Погода<br>(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<br>(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`.