- Replace Whisper subprocess calls with direct qwen3_asr_toolkit API - Remove subprocess dependencies, use pure Python API - Update to use DASHSCOPE_API_KEY instead of WHISPER_MODEL - Cleaner code without CLI calls - Better Ukrainian language recognition quality
128 lines
3.3 KiB
Markdown
128 lines
3.3 KiB
Markdown
# STT Service (Speech-to-Text)
|
||
|
||
Сервіс для розпізнавання мови з аудіо файлів за допомогою Qwen3 ASR Toolkit.
|
||
|
||
## Можливості
|
||
|
||
- Розпізнавання мови з голосових повідомлень (Telegram voice, audio, video_note)
|
||
- Підтримка форматів: ogg, mp3, wav, m4a, webm, flac
|
||
- Автоматична обробка та конвертація аудіо (всередині qwen3_asr_toolkit)
|
||
- Чистий Python API без subprocess/CLI викликів
|
||
- Висока якість розпізнавання української мови
|
||
|
||
## Запуск
|
||
|
||
### Локально (development)
|
||
|
||
```bash
|
||
cd services/stt-service
|
||
pip install -r requirements.txt
|
||
uvicorn main:app --reload --host 0.0.0.0 --port 9000
|
||
```
|
||
|
||
### Docker
|
||
|
||
```bash
|
||
docker-compose up stt-service
|
||
```
|
||
|
||
## API
|
||
|
||
### POST /stt
|
||
|
||
Розпізнати мову з аудіо файлу.
|
||
|
||
**Request:**
|
||
- `file`: аудіо файл (multipart/form-data)
|
||
|
||
**Response:**
|
||
```json
|
||
{
|
||
"text": "розпізнаний текст",
|
||
"language": "uk",
|
||
"duration": 5.2
|
||
}
|
||
```
|
||
|
||
**Приклад:**
|
||
```bash
|
||
curl -X POST http://localhost:9000/stt \
|
||
-F "file=@voice.ogg"
|
||
```
|
||
|
||
### GET /health
|
||
|
||
Health check endpoint.
|
||
|
||
## Конфігурація
|
||
|
||
### Environment Variables
|
||
|
||
- `DASHSCOPE_API_KEY`: **Обов'язково** - API ключ DashScope для доступу до Qwen3 ASR API
|
||
- Отримати ключ: https://dashscope.console.aliyun.com/
|
||
- Встановити: `export DASHSCOPE_API_KEY="your-api-key"`
|
||
|
||
### Отримання API ключа DashScope
|
||
|
||
1. Зареєструйтеся на https://dashscope.console.aliyun.com/
|
||
2. Створіть API ключ в розділі "API Keys"
|
||
3. Встановіть змінну середовища `DASHSCOPE_API_KEY`
|
||
|
||
## Інтеграція з Gateway
|
||
|
||
Gateway автоматично використовує STT-сервіс для обробки голосових повідомлень з Telegram:
|
||
|
||
1. Користувач надсилає voice/audio/video_note
|
||
2. Gateway завантажує файл з Telegram
|
||
3. Gateway відправляє файл в STT-сервіс
|
||
4. STT повертає розпізнаний текст
|
||
5. Текст відправляється в DAGI Router як звичайне текстове повідомлення
|
||
|
||
## Встановлення залежностей
|
||
|
||
### qwen3-asr-toolkit
|
||
|
||
```bash
|
||
pip install qwen3-asr-toolkit
|
||
```
|
||
|
||
### ffmpeg (може знадобитися для деяких форматів)
|
||
|
||
```bash
|
||
# Ubuntu/Debian
|
||
sudo apt-get install ffmpeg
|
||
|
||
# macOS
|
||
brew install ffmpeg
|
||
|
||
# Docker
|
||
Вже включено в Dockerfile
|
||
```
|
||
|
||
## Troubleshooting
|
||
|
||
### Помилка: "qwen3_asr_toolkit not available"
|
||
|
||
Встановіть бібліотеку:
|
||
```bash
|
||
pip install qwen3-asr-toolkit
|
||
```
|
||
|
||
### Помилка: "DASHSCOPE_API_KEY not configured"
|
||
|
||
Встановіть змінну середовища:
|
||
```bash
|
||
export DASHSCOPE_API_KEY="your-api-key"
|
||
```
|
||
|
||
Або додайте в `docker-compose.yml`:
|
||
```yaml
|
||
environment:
|
||
- DASHSCOPE_API_KEY=${DASHSCOPE_API_KEY}
|
||
```
|
||
|
||
### Помилка: "ffmpeg not found"
|
||
|
||
Встановіть ffmpeg (див. вище). Більшість форматів обробляються без ffmpeg, але деякі можуть його потребувати.
|
||
|