- 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)
8.9 KiB
✅ Перевірка 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 |
Виправлення:
- ✅ Знайдено правильний IP STT сервісу:
172.21.0.19:8895 - ✅ Оновлено
STT_SERVICE_URLв.env - ✅ Виправлено fallback URL в
http_api.py - ✅ Gateway перезапущено з новою конфігурацією
Перевірка:
# 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) ✨
Голос: М'який, мелодійний, оксамитовий
Характер: Тепла, щира інтонація з ледь помітною посмішкою
voice_type: melodic
gender: female
speed: 0.85
pitch: 1.05
warmth: high
2. YAROMIR (@YaromirBot) 🎭
Голос: Синтезуючий центр 4-х аспектів (CrewAI)
Характер: Єдина багата обертонами мелодія
Внутрішні голоси:
- Проводник: Свідомий, емпатичний, навчальний
- Создатель: Живий, вдохновлений, ігривий
- Домір: Просто, по-доброму, з теплом
- Вождь: Авторитетний, впевнений, надихаючий
voice_type: unified_rich
gender: male
speed: 1.0
overtones: true
3. CLAN (@CLAN_bot)
Голос: Спокійний, нейтральний
voice_type: neutral
gender: neutral
speed: 1.0
4-9. Інші боти
Статус: Голоси не визначені в промптах
Потрібно: Додати voice characteristics
📋 Робочий стан STT для всіх ботів
Тест STT (можна протестувати ЗАРАЗ):
-
Відкрити Telegram
-
Знайти будь-якого бота:
- @DAARWIZZBot
- @HelionBot
- @SoulBot
- @YaromirBot
- @NUTRABot
- та інші...
-
Надіслати голосове повідомлення (українською або англійською)
-
Очікуваний результат:
- Бот отримує голос
- 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
Функція обробки голосу:
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):
- STT Service запущений і healthy
- Whisper модель завантажена
- Gateway підключений до STT
- URL виправлено (172.21.0.19:8895)
- Fallback URL оновлено
- Gateway перезапущено
- Всі 9 ботів підтримують голос
TTS (Text → Voice):
- TTS Service розгорнуто
- Voice configs визначені для всіх агентів
- Gateway handler
send_voice_response() - Режими відповіді (text/voice)
- Тестування голосів
🎯 Наступні кроки для TTS
Фаза 1: Розгортання TTS Service (2-3 год)
Варіант A: Coqui TTS (рекомендовано для старту)
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 (платний, якісніший)
# Потрібен 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 год)
- Додати voice_config для кожного агента
- Створити
send_voice_response()функцію - Оновити webhook handler
- Додати режими відповіді (текст/голос)
Фаза 3: Тестування (1 год)
- Тест базового TTS
- Тест кожного голосу
- Тест українська/англійська
- Тест 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 (прямо зараз):
# 1. Відкрити Telegram
# 2. Знайти @DAARWIZZBot
# 3. Натиснути мікрофон
# 4. Сказати: "Привіт, це тест голосового повідомлення"
# 5. Отримати відповідь! ✅