Files
microdao-daarion/docs/testing/voice_chat_test.md

259 lines
8.0 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.
# Тестування голосового чату (STT) через Telegram
**Дата**: 2025-11-18
**Сервер**: 144.76.224.179
**Боти**: DAARWIZZ, Helion, GREENFOOD
---
## 🎤 Що тестуємо?
### 1. Speech-to-Text (STT)
- **Сервіс**: `dagi-stt` (порт 9000)
- **Модель**: Whisper (faster-whisper)
- **Призначення**: Транскрипція голосових повідомлень з Telegram
### 2. Інтеграція з Telegram
- **Gateway**: `telegram-gateway` (Long Polling)
- **Endpoint**: `/stt` на dagi-stt
- **Флоу**:
1. Користувач надсилає голосове повідомлення
2. Telegram Gateway отримує `voice` або `audio` або `video_note`
3. Завантажує аудіо через Local Telegram Bot API
4. Відправляє на `/stt` (dagi-stt)
5. Отримує текст
6. Відправляє текст в DAGI Router (як звичайне текстове повідомлення)
7. Повертає відповідь користувачу
---
## ✅ Передумови
### 1. Перевірка STT сервісу
```bash
# Перевірка статусу
docker ps | grep dagi-stt
# Тест health endpoint (якщо є)
curl http://localhost:9000/health
# Логи
docker logs --tail 50 dagi-stt
```
**Очікуваний вивід**:
```
INFO: Started server process [1]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:9000
```
### 2. Перевірка Telegram Gateway
```bash
# Статус
docker ps | grep telegram-gateway
# Логи (перевірка polling)
docker logs --tail 50 telegram-gateway | grep -E '(daarwizz|helion|greenfood|polling)'
```
**Очікуваний вивід**:
```
INFO:app.telegram_listener:🤖 Creating bot: 8323412397:AAFxa...
INFO:aiogram.dispatcher:Run polling for bot @DAARWIZZBot id=8323412397
INFO:aiogram.dispatcher:Run polling for bot @energyunionBot id=8112062582
INFO:aiogram.dispatcher:Run polling for bot @greenfoodliveBot id=7495165343
```
### 3. Перевірка Local Telegram Bot API
```bash
# Статус
docker ps | grep telegram-bot-api
# Тест
curl http://localhost:8081/bot<TOKEN>/getMe
```
---
## 🧪 План тестування
### Test Case 1: Базова транскрипція
**Кроки**:
1. Відкрити Telegram
2. Знайти бота `@DAARWIZZBot` (або `@energyunionBot`, `@greenfoodliveBot`)
3. Відправити голосове повідомлення (українською/англійською)
4. Дочекатися відповіді
**Очікуваний результат**:
- Бот повинен відповісти текстом (підтвердження транскрипції)
- Час відповіді < 10 секунд
**Лог:**
```
INFO:app.telegram_listener:📨 Received message from chat=<CHAT_ID>
INFO:app.telegram_listener:📤 Publishing to NATS: agent.telegram.update
INFO:app.router_handler:📬 NATS event: agent.telegram.update
INFO:app.router_handler:🔊 Voice message detected, calling STT...
INFO:app.router_handler:📝 Transcribed: "Хочу дізнатися про MicroDAO"
INFO:app.router_handler:📤 Sending to Router: mode=chat, message="Хочу дізнатися про MicroDAO"
INFO:app.router_handler:✅ Response from Router
INFO:app.telegram_listener:📤 Sending response to chat=<CHAT_ID>
```
---
### Test Case 2: Довге голосове повідомлення
**Кроки**:
1. Надіслати голосове повідомлення > 30 секунд
2. Дочекатися транскрипції
**Очікуваний результат**:
- Успішна транскрипція
- Час відповіді < 20 секунд
---
### Test Case 3: Різні мови
**Кроки**:
1. Надіслати українською: "Привіт, як справи?"
2. Надіслати англійською: "Hello, how are you?"
3. Надіслати російською: "Привет, как дела?"
**Очікуваний результат**:
- Всі мови коректно розпізнаються
- Whisper підтримує мультимовність
---
### Test Case 4: Фонові шуми
**Кроки**:
1. Надіслати голосове з фоновим шумом (музика, вулиця)
2. Перевірити якість транскрипції
**Очікуваний результат**:
- Транскрипція працює, але може містити помилки
- Бот відповідає на основі розпізнаного тексту
---
## 🐛 Troubleshooting
### Проблема 1: Бот не відповідає на голосові
**Діагностика**:
```bash
# 1. Перевірити логи telegram-gateway
docker logs --tail 100 telegram-gateway | grep -E '(voice|audio|video_note|STT)'
# 2. Перевірити логи dagi-stt
docker logs --tail 100 dagi-stt | grep -E '(POST|/stt|transcrib)'
# 3. Перевірити доступність STT
curl http://localhost:9000/health
```
**Можливі причини**:
- STT сервіс не запущено
- Telegram Gateway не викликає STT
- Помилка завантаження аудіо з Telegram
- Моделі Whisper не завантажені
**Рішення**:
```bash
# Перезапустити STT
docker restart dagi-stt
# Перевірити моделі
docker exec dagi-stt ls -lh /weights/ # або інший шлях до моделей
```
---
### Проблема 2: STT повертає порожній текст
**Діагностика**:
```bash
# Перевірити формат аудіо
docker logs dagi-stt | grep -i 'format\\|codec\\|error'
```
**Можливі причини**:
- Неправильний формат аудіо (OGG, MP3, WAV)
- Занадто короткий файл (< 1 сек)
- Пошкоджений файл
**Рішення**:
- Telegram зазвичай надсилає OGG/Opus - Whisper має підтримувати
- Перевірити конвертацію на стороні STT сервісу
---
### Проблема 3: Повільна транскрипція (> 30 сек)
**Діагностика**:
```bash
# Перевірити CPU/RAM
docker stats dagi-stt
# Перевірити модель Whisper
docker exec dagi-stt env | grep WHISPER
```
**Можливі причини**:
- Велика модель (large/large-v2) на CPU
- Недостатньо RAM
- Інші процеси навантажують сервер
**Рішення**:
- Використовувати `tiny` або `base` модель для швидкості
- Додати GPU (NVIDIA) для прискорення
- Збільшити ресурси контейнера
---
## 📊 Metrics для STT
```promql
# Кількість STT запитів
rate(stt_requests_total[5m])
# Час транскрипції (p95)
histogram_quantile(0.95, rate(stt_duration_seconds_bucket[5m]))
# Кількість помилок
rate(stt_errors_total[5m])
```
---
## ✅ Критерії успіху
1. ✅ STT сервіс працює (`docker ps | grep dagi-stt`)
2. ✅ Telegram Gateway отримує голосові повідомлення (логи)
3. ✅ Бот коректно транскрибує українську та англійську
4. ✅ Час відповіді < 10 секунд для коротких повідомлень (< 10 сек аудіо)
5. ✅ Бот відповідає на основі транскрибованого тексту
---
## 🚀 Наступні кроки
1. Додати підтримку інших форматів (MP3, WAV)
2. Оптимізувати модель Whisper (smaller model або GPU)
3. Додати кешування для повторних фраз
4. Інтеграція з TTS для повної voice-to-voice взаємодії
---
*Тест створено: 2025-11-18*