# Тестування голосового чату (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/getMe ``` --- ## 🧪 План тестування ### Test Case 1: Базова транскрипція **Кроки**: 1. Відкрити Telegram 2. Знайти бота `@DAARWIZZBot` (або `@energyunionBot`, `@greenfoodliveBot`) 3. Відправити голосове повідомлення (українською/англійською) 4. Дочекатися відповіді **Очікуваний результат**: - Бот повинен відповісти текстом (підтвердження транскрипції) - Час відповіді < 10 секунд **Лог:** ``` INFO:app.telegram_listener:📨 Received message from chat= 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= ``` --- ### 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*