Files
microdao-daarion/VOICE_CHECK_COMPLETE.md
Apple 744c149300
Some checks failed
Build and Deploy Docs / build-and-deploy (push) Has been cancelled
Add automated session logging system
- 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)
2026-01-10 04:53:17 -08:00

8.9 KiB
Raw Permalink Blame History

Перевірка 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 перезапущено з новою конфігурацією

Перевірка:

# 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 (можна протестувати ЗАРАЗ):

  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

Функція обробки голосу:

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 год)

  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 (прямо зараз):

# 1. Відкрити Telegram
# 2. Знайти @DAARWIZZBot
# 3. Натиснути мікрофон
# 4. Сказати: "Привіт, це тест голосового повідомлення"
# 5. Отримати відповідь! ✅