Initial commit

This commit is contained in:
2025-12-25 12:01:35 +03:00
commit c574533f63
85 changed files with 6027 additions and 0 deletions
+377
View File
@@ -0,0 +1,377 @@
# Документация API My Speaker
## Общая информация
API My Speaker предоставляет интерфейс для взаимодействия с системой распознавания речи, управления настройками и получения данных о работе системы. API построено на FastAPI и использует REST-подход.
Базовый URL: `/api`
## Аутентификация
Все запросы к API (кроме авторизации) требуют аутентификации. Аутентификация осуществляется с помощью токена доступа, который можно получить через эндпоинт `/api/auth/login`.
Токен можно передавать одним из следующих способов:
1. В заголовке `Authorization: Bearer <token>`
2. В параметре запроса `?token=<token>`
### Эндпоинты аутентификации
#### Авторизация
```
POST /api/auth/login
```
**Запрос:**
```json
{
"username": "admin",
"password": "your_password"
}
```
**Ответ:**
```json
{
"access_token": "unique_session_token",
"token_type": "bearer"
}
```
#### Получение информации о текущем пользователе
```
GET /api/auth/me
```
**Ответ:**
```json
{
"username": "admin",
"is_authenticated": true
}
```
#### Выход из системы
```
POST /api/auth/logout
```
**Ответ:**
```json
{
"status": "success",
"message": "Выход выполнен успешно"
}
```
## Панель управления (Dashboard)
Все запросы к эндпоинтам панели управления выполняются с использованием токена полученного при авторизации.
### Получение данных о речи
````
GET /api/dashboard/speech-data
curl -X 'GET' \
'http://192.168.200.111:8000/api/dashboard/sys-monitor' \
-H 'accept: application/json' \
-H 'Authorization: Bearer dc1460d1-6e67-4730-afb2-c94de7d243b4'
**Ответ:**
```json
{
"state": "listening",
"speech_prob": 0.85,
"speech_threshold": 0.5,
"energy": 1200,
"energy_threshold": 1000,
"speech_detected": true,
"continuous_frames": 5,
"gain": 1.2,
"noise_floor": 300
}
````
### Получение данных о нагрузке системы
```
GET /api/dashboard/sys-monitor
```
**Ответ:**
```json
{
"cpu_percent": 25.5,
"memory_percent": 40.2,
"temperature": 45.3
}
```
### Получение последних распознанных фраз
```
GET /api/dashboard/recent-phrases?limit=10
```
**Ответ:**
```json
[
{
"text": "включи свет",
"timestamp": "2023-06-15T14:30:45",
"is_command": true
},
{
"text": "какая погода сегодня",
"timestamp": "2023-06-15T14:29:30",
"is_command": false
}
]
```
### Получение статистики работы системы
```
GET /api/dashboard/stats
```
**Ответ:**
```json
{
"uptime": "2:30:15",
"recognized_commands": 15,
"total_phrases": 45
}
```
## Настройки (Settings)
Все запросы к эндпоинтам настроек выполняются с использованием токена полученного при авторизации.
### Получение всех настроек
```
GET /api/settings
```
**Ответ:**
```json
{
"vad": {
"mode": 3,
"sample_rate": 16000,
"frame_duration_ms": 30,
"ring_buffer_size": 20,
"speech_threshold": 0.5,
"energy_threshold": 1000,
"min_speech_duration_ms": 300,
"record_stop_delay_sec": 1.0,
"prebuffer_duration_sec": 1.0,
"max_record_duration_sec": 5.0,
"target_rms": 2000.0,
"max_gain": 5.0,
"noise_reduction_factor": 1.5,
"noise_update_alpha": 0.05,
"min_rms_threshold_factor": 2.0,
"gain_smoothing_alpha": 0.1,
"adaptive_energy_std_factor": 2.5,
"adaptive_energy": true,
"noise_reduction_enabled": true,
"auto_gain_enabled": true,
"record_on_speech": true
},
"system": {
"history_maxlen": 100,
"polling_interval_ms": 500,
"logging_level": "INFO",
"log_file": "logs/app.log",
"log_save_file": true
},
"stt": {
"model_path": "/path/to/vosk/model"
},
"commands": {
"commands_file": "commands/commands.yaml"
},
"auth": {
"username": "admin",
"password": "admin"
}
}
```
### Обновление настроек VAD
```
PUT /api/settings/vad
```
**Запрос:**
```json
{
"mode": 3,
"speech_threshold": 0.7,
"energy_threshold": 1200
}
```
**Ответ:**
```json
{
"mode": 3,
"sample_rate": 16000,
"frame_duration_ms": 30,
"ring_buffer_size": 20,
"speech_threshold": 0.7,
"energy_threshold": 1200,
"min_speech_duration_ms": 300,
"record_stop_delay_sec": 1.0,
"prebuffer_duration_sec": 1.0,
"max_record_duration_sec": 5.0,
"target_rms": 2000.0,
"max_gain": 5.0,
"noise_reduction_factor": 1.5,
"noise_update_alpha": 0.05,
"min_rms_threshold_factor": 2.0,
"gain_smoothing_alpha": 0.1,
"adaptive_energy_std_factor": 2.5,
"adaptive_energy": true,
"noise_reduction_enabled": true,
"auto_gain_enabled": true,
"record_on_speech": true
}
```
### Обновление системных настроек
```
PUT /api/settings/system
```
**Запрос:**
```json
{
"history_maxlen": 200,
"polling_interval_ms": 1000
}
```
**Ответ:**
```json
{
"history_maxlen": 200,
"polling_interval_ms": 1000,
"logging_level": "INFO",
"log_file": "logs/app.log",
"log_save_file": true
}
```
### Обновление настроек STT
```
PUT /api/settings/stt
```
**Запрос:**
```json
{
"model_path": "/new/path/to/vosk/model"
}
```
**Ответ:**
```json
{
"model_path": "/new/path/to/vosk/model"
}
```
### Обновление настроек команд
```
PUT /api/settings/commands
```
**Запрос:**
```json
{
"commands_file": "commands/new_commands.yaml"
}
```
**Ответ:**
```json
{
"commands_file": "commands/new_commands.yaml"
}
```
### Обновление настроек авторизации
```
PUT /api/settings/auth
```
**Запрос:**
```json
{
"username": "new_admin",
"password": "new_password"
}
```
**Ответ:**
```json
{
"username": "new_admin",
"password": "new_password"
}
```
### Перезапуск VAD и STT
```
POST /api/settings/restart
```
**Ответ:**
```json
{
"status": "success",
"message": "VAD и STT перезапущены"
}
```
## Коды ошибок
- `401 Unauthorized` - Ошибка авторизации
- `500 Internal Server Error` - Внутренняя ошибка сервера
## Примечания
- Все запросы и ответы используют формат JSON
- Для всех запросов, требующих авторизации, необходимо передавать токен доступа
- Параметры в запросах на обновление настроек являются опциональными, можно передавать только те параметры, которые нужно изменить