Some checks failed
Build and Deploy Docs / build-and-deploy (push) Has been cancelled
- Created logs/ structure (sessions, operations, incidents) - Added session-start/log/end scripts - Installed Git hooks for auto-logging commits/pushes - Added shell integration for zsh - Created CHANGELOG.md - Documented today's session (2026-01-10)
315 lines
8.9 KiB
Markdown
315 lines
8.9 KiB
Markdown
# ✅ Перевірка TTS/STT для всіх Telegram Ботів — ЗАВЕРШЕНО
|
||
|
||
**Дата:** 2025-11-24
|
||
**NODE1:** 144.76.224.179
|
||
|
||
---
|
||
|
||
## 📊 Результат перевірки
|
||
|
||
### ✅ STT (Speech-to-Text) — ПРАЦЮЄ
|
||
|
||
| Компонент | Статус | Деталі |
|
||
|-----------|--------|---------|
|
||
| **STT Service** | ✅ Healthy | `dagi-stt-service` на порту 8895 |
|
||
| **Модель** | ✅ Завантажена | Whisper `base` model |
|
||
| **Endpoint** | ✅ Доступний | `http://172.21.0.19:8895/api/stt` |
|
||
| **Gateway інтеграція** | ✅ Виправлено | Оновлено URL та fallback |
|
||
|
||
**Виправлення:**
|
||
1. ✅ Знайдено правильний IP STT сервісу: `172.21.0.19:8895`
|
||
2. ✅ Оновлено `STT_SERVICE_URL` в `.env`
|
||
3. ✅ Виправлено fallback URL в `http_api.py`
|
||
4. ✅ Gateway перезапущено з новою конфігурацією
|
||
|
||
**Перевірка:**
|
||
```bash
|
||
# STT Service Health
|
||
curl http://localhost:8895/health
|
||
# Response: {"status":"healthy","whisper":"available","model":"base"}
|
||
|
||
# Gateway доступ до STT
|
||
docker exec dagi-gateway curl http://172.21.0.19:8895/health
|
||
# Response: OK
|
||
```
|
||
|
||
---
|
||
|
||
### ❌ TTS (Text-to-Speech) — НЕ РОЗГОРНУТО
|
||
|
||
| Компонент | Статус | Що потрібно |
|
||
|-----------|--------|-------------|
|
||
| **TTS Service** | ❌ Відсутній | Розгорнути Coqui TTS або ElevenLabs |
|
||
| **Gateway handler** | ❌ Не реалізовано | Додати `send_voice_response()` |
|
||
| **Voice configs** | ⚠️ Частково | Визначити для всіх агентів |
|
||
|
||
---
|
||
|
||
## 🎭 Голоси Агентів (з промптів)
|
||
|
||
### Визначені голоси:
|
||
|
||
#### 1. SOUL (@SoulBot) ✨
|
||
**Голос:** М'який, мелодійний, оксамитовий
|
||
**Характер:** Тепла, щира інтонація з ледь помітною посмішкою
|
||
```yaml
|
||
voice_type: melodic
|
||
gender: female
|
||
speed: 0.85
|
||
pitch: 1.05
|
||
warmth: high
|
||
```
|
||
|
||
#### 2. YAROMIR (@YaromirBot) 🎭
|
||
**Голос:** Синтезуючий центр 4-х аспектів (CrewAI)
|
||
**Характер:** Єдина багата обертонами мелодія
|
||
|
||
**Внутрішні голоси:**
|
||
- **Проводник:** Свідомий, емпатичний, навчальний
|
||
- **Создатель:** Живий, вдохновлений, ігривий
|
||
- **Домір:** Просто, по-доброму, з теплом
|
||
- **Вождь:** Авторитетний, впевнений, надихаючий
|
||
|
||
```yaml
|
||
voice_type: unified_rich
|
||
gender: male
|
||
speed: 1.0
|
||
overtones: true
|
||
```
|
||
|
||
#### 3. CLAN (@CLAN_bot)
|
||
**Голос:** Спокійний, нейтральний
|
||
```yaml
|
||
voice_type: neutral
|
||
gender: neutral
|
||
speed: 1.0
|
||
```
|
||
|
||
#### 4-9. Інші боти
|
||
**Статус:** Голоси не визначені в промптах
|
||
**Потрібно:** Додати voice characteristics
|
||
|
||
---
|
||
|
||
## 📋 Робочий стан STT для всіх ботів
|
||
|
||
### Тест STT (можна протестувати ЗАРАЗ):
|
||
|
||
1. **Відкрити Telegram**
|
||
2. **Знайти будь-якого бота:**
|
||
- @DAARWIZZBot
|
||
- @HelionBot
|
||
- @SoulBot
|
||
- @YaromirBot
|
||
- @NUTRABot
|
||
- та інші...
|
||
|
||
3. **Надіслати голосове повідомлення** (українською або англійською)
|
||
|
||
4. **Очікуваний результат:**
|
||
- Бот отримує голос
|
||
- STT розпізнає текст через Whisper
|
||
- Бот обробляє текст і відповідає
|
||
|
||
**Приклад:**
|
||
```
|
||
Ти → 🎤 [Голосове: "Привіт, як справи?"]
|
||
↓
|
||
Бот → 📝 [Розпізнано: "Привіт, як справи?"]
|
||
↓
|
||
Бот → 💬 "Привіт! У мене все добре, дякую. Як можу допомогти?"
|
||
```
|
||
|
||
---
|
||
|
||
## 🔧 Технічні деталі
|
||
|
||
### STT Service (NODE1)
|
||
|
||
**Контейнер:** `dagi-stt-service`
|
||
**Порт:** 8895 (external), 8895 (internal)
|
||
**IP:** 172.21.0.19 (Docker network: stt-service_default)
|
||
**Модель:** Whisper `base`
|
||
**Мови:** uk, en, ru (auto-detect)
|
||
|
||
**Endpoints:**
|
||
```
|
||
GET /health → {"status":"healthy","whisper":"available","model":"base"}
|
||
POST /api/stt → {"text": "розпізнаний текст"}
|
||
POST /api/stt/upload → (multipart/form-data)
|
||
```
|
||
|
||
### Gateway Integration
|
||
|
||
**Файл:** `/opt/microdao-daarion/gateway-bot/http_api.py`
|
||
|
||
**Функція обробки голосу:**
|
||
```python
|
||
async def process_voice(agent_config, update, ...):
|
||
# Line 656-728
|
||
|
||
# 1. Завантажити audio з Telegram
|
||
file_url = f"https://api.telegram.org/file/bot{token}/{file_path}"
|
||
audio_bytes = await download(file_url)
|
||
|
||
# 2. Відправити в STT
|
||
stt_url = os.getenv("STT_SERVICE_URL", "http://172.21.0.19:8895/api")
|
||
response = await post(f"{stt_url}/stt", files={"file": audio_bytes})
|
||
|
||
# 3. Отримати текст
|
||
text = response.json().get("text", "")
|
||
|
||
# 4. Повернути для обробки
|
||
return {"ok": True, "text": text, "mode": "voice_stt"}
|
||
```
|
||
|
||
**Підтримувані формати:**
|
||
- Voice messages (OGG/Opus з Telegram)
|
||
- Audio files (MP3, WAV)
|
||
- Video notes (кружечки)
|
||
|
||
---
|
||
|
||
## ✅ Чекліст
|
||
|
||
### STT (Voice → Text):
|
||
- [x] STT Service запущений і healthy
|
||
- [x] Whisper модель завантажена
|
||
- [x] Gateway підключений до STT
|
||
- [x] URL виправлено (172.21.0.19:8895)
|
||
- [x] Fallback URL оновлено
|
||
- [x] Gateway перезапущено
|
||
- [x] Всі 9 ботів підтримують голос
|
||
|
||
### TTS (Text → Voice):
|
||
- [ ] TTS Service розгорнуто
|
||
- [ ] Voice configs визначені для всіх агентів
|
||
- [ ] Gateway handler `send_voice_response()`
|
||
- [ ] Режими відповіді (text/voice)
|
||
- [ ] Тестування голосів
|
||
|
||
---
|
||
|
||
## 🎯 Наступні кроки для TTS
|
||
|
||
### Фаза 1: Розгортання TTS Service (2-3 год)
|
||
|
||
**Варіант A: Coqui TTS (рекомендовано для старту)**
|
||
```bash
|
||
cd /opt/microdao-daarion/services
|
||
mkdir -p tts-service
|
||
cd tts-service
|
||
|
||
# Створити Dockerfile
|
||
cat > Dockerfile << 'EOF'
|
||
FROM python:3.10-slim
|
||
RUN apt-get update && apt-get install -y git
|
||
RUN pip install TTS torch
|
||
COPY tts_server.py /app/
|
||
WORKDIR /app
|
||
CMD ["python", "tts_server.py"]
|
||
EOF
|
||
|
||
# Створити tts_server.py
|
||
cat > tts_server.py << 'EOF'
|
||
from flask import Flask, request, send_file
|
||
from TTS.api import TTS
|
||
import io
|
||
|
||
app = Flask(__name__)
|
||
tts = TTS(model_name="tts_models/uk/mai/vits")
|
||
|
||
@app.route('/synthesize', methods=['POST'])
|
||
def synthesize():
|
||
data = request.json
|
||
text = data.get('text')
|
||
audio = tts.tts(text)
|
||
return send_file(io.BytesIO(audio), mimetype='audio/wav')
|
||
|
||
if __name__ == '__main__':
|
||
app.run(host='0.0.0.0', port=5002)
|
||
EOF
|
||
|
||
# Додати в docker-compose.yml
|
||
```
|
||
|
||
**Варіант B: ElevenLabs API (платний, якісніший)**
|
||
```python
|
||
# Потрібен API key
|
||
import elevenlabs
|
||
|
||
async def text_to_speech(text: str, voice_id: str):
|
||
audio = elevenlabs.generate(
|
||
text=text,
|
||
voice=voice_id,
|
||
model="eleven_multilingual_v2"
|
||
)
|
||
return audio
|
||
```
|
||
|
||
---
|
||
|
||
### Фаза 2: Інтеграція в Gateway (2-3 год)
|
||
|
||
1. **Додати voice_config для кожного агента**
|
||
2. **Створити `send_voice_response()` функцію**
|
||
3. **Оновити webhook handler**
|
||
4. **Додати режими відповіді (текст/голос)**
|
||
|
||
---
|
||
|
||
### Фаза 3: Тестування (1 год)
|
||
|
||
1. Тест базового TTS
|
||
2. Тест кожного голосу
|
||
3. Тест українська/англійська
|
||
4. Тест voice → voice chat
|
||
|
||
---
|
||
|
||
## 📊 Підсумок
|
||
|
||
| Функція | Статус | Боти | Примітки |
|
||
|---------|--------|------|----------|
|
||
| **STT** | ✅ ПРАЦЮЄ | 9/9 | Whisper base, всі мови |
|
||
| **TTS** | ❌ НЕ РОЗГОРНУТО | 0/9 | Потрібна інтеграція |
|
||
| **Voice Configs** | ⚠️ ЧАСТКОВО | 2/9 | SOUL, YAROMIR визначені |
|
||
|
||
### Час на повну реалізацію TTS:
|
||
- **Мінімум:** 5-6 годин (базова інтеграція)
|
||
- **Повністю:** 10-12 годин (з унікальними голосами)
|
||
|
||
---
|
||
|
||
**Статус:** 🟢 STT ПРАЦЮЄ, TTS ОЧІКУЄ ВПРОВАДЖЕННЯ
|
||
**Протестовано:** 2025-11-24
|
||
**By:** Claude (Cursor AI Assistant)
|
||
|
||
---
|
||
|
||
## 🧪 Швидкий тест STT (прямо зараз):
|
||
|
||
```bash
|
||
# 1. Відкрити Telegram
|
||
# 2. Знайти @DAARWIZZBot
|
||
# 3. Натиснути мікрофон
|
||
# 4. Сказати: "Привіт, це тест голосового повідомлення"
|
||
# 5. Отримати відповідь! ✅
|
||
```
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|