Голосовой режим

Обзор

Голосовой режим Hermes Agent позволяет вести реальные голосовые диалоги с ассистентом через CLI, Telegram и Discord. Агент распознаёт вашу речь (STT), обрабатывает запрос с помощью LLM и отвечает голосом (TTS) — всё в одном потоке.

Команды управления

Команда Описание
/voice on Голос-в-голос: распознавание речи + голосовой ответ
/voice tts Всегда голосовой ответ (текст тоже озвучивается)
/voice off Выключить голосовой режим

Поддерживаемые платформы

CLI (терминал)

Запуск голосового режима в терминале:

  • hermes --voice — запуск сессии с голосовым вводом/выводом
  • hermes voice — альтернативная команда
  • Автоматическое определение тишины — просто замолчите, чтобы агент начал обрабатывать
  • Потоковая озвучка ответа — агент начинает говорить, не дожидаясь полной генерации
  • Фильтр галлюцинаций Whisper — отсекает случайные артефакты распознавания

Telegram

В Telegram голосовой режим работает через gateway:

  • Отправьте голосовое сообщение — агент распознает и ответит
  • Команда /voice переключает режим ответа: текст или голос
  • Команда /voice on включает голосовые ответы, /voice off — выключает
  • Ответ доставляется как аудиосообщение в чат

Discord

Discord поддерживает голос в текстовых каналах, личных сообщениях и голосовых каналах:

  • Текстовые каналы и ЛС — отправьте голосовое сообщение, бот ответит голосом
  • Голосовые каналы — бот подключается, слушает и отвечает голосом в реальном времени
  • Команда /join — бот заходит в голосовой канал
  • Команда /leave — бот покидает канал
  • В серверных каналах требуется @упоминание бота

Настройка

Файл config.yaml

Основные секции конфигурации голосового режима:

Параметр Описание Значения
stt.enabled Включить распознавание речи true / false
stt.provider Провайдер STT local, groq, openai, mistral
stt.local.model Модель faster-whisper tiny, base, small, medium, large-v3
tts.provider Провайдер TTS edge, elevenlabs, openai, minimax, mistral, neutts

Пример конфигурации:

stt:
  enabled: true
  provider: "local"
  local:
    model: "base"
tts:
  provider: "edge"
  edge:
    voice: "en-US-AriaNeural"

Провайдеры STT (распознавание речи)

Провайдер Тип Скорость Ключ / Установка Примечание
Local faster-whisper Бесплатный Зависит от железа pip install faster-whisper Работает полностью оффлайн. Модели: tiny, base, small, medium, large-v3. Не требует API-ключа
Groq Whisper Бесплатный тир ~0.5с GROQ_API_KEY Очень быстрый, модель whisper-large-v3-turbo. Бесплатный лимит
OpenAI Whisper Платный ~1-2с VOICE_TOOLS_OPENAI_KEY Модели: whisper-1, gpt-4o-transcribe
Mistral Voxtral Платный ~1с MISTRAL_API_KEY Multimodal STT от Mistral

Приоритет автопереключения: local → groq → openai → mistral.

Провайдеры TTS (синтез речи)

Провайдер Тип Качество Ключ / Установка Примечание
Edge TTS Бесплатный Хорошее Не требуется 322 голоса, 74 языка, задержка ~1с. Провайдер по умолчанию
ElevenLabs Бесплатный тир Премиум ELEVENLABS_API_KEY Лучшее качество, задержка ~2с
OpenAI TTS Платный Хорошее VOICE_TOOLS_OPENAI_KEY Модель: gpt-4o-mini-tts. Голоса: alloy, echo, fable, onyx, nova, shimmer
MiniMax Платный Хорошее MINIMAX_API_KEY Поддержка русского и китайского языков
Mistral Voxtral Платный Хорошее MISTRAL_API_KEY TTS от Mistral, единый ключ для STT и TTS
NeuTTS (local) Бесплатный Среднее pip install neutts[all] + espeak-ng Локальный, работает на CPU/GPU. Полностью оффлайн

Переменные окружения

Переменная Назначение
GROQ_API_KEY Ключ для Groq STT
VOICE_TOOLS_OPENAI_KEY Ключ для OpenAI STT и TTS
ELEVENLABS_API_KEY Ключ для ElevenLabs TTS
MINIMAX_API_KEY Ключ для MiniMax TTS
MISTRAL_API_KEY Ключ для Mistral Voxtral STT и TTS
DISCORD_BOT_TOKEN Токен Discord-бота
DISCORD_ALLOWED_USERS Разрешённые пользователи Discord

Решение проблем

Нет аудиоустройства (CLI)

Установите PortAudio: brew install portaudio (macOS) или sudo apt install portaudio19-dev (Ubuntu).

Бот не отвечает в Discord

  • Убедитесь, что ваш ID указан в DISCORD_ALLOWED_USERS
  • В серверных каналах используйте @упоминание бота
  • Проверьте наличие STT-провайдера: установите faster-whisper или задайте GROQ_API_KEY

Whisper возвращает мусор

  • Используйте более тихое окружение
  • Настройте silence_threshold (выше = менее чувствительно)
  • Попробуйте другую модель STT

Голосовой режим не работает

  • Проверьте stt.enabled: true в config.yaml
  • Установите STT-провайдер: pip install faster-whisper или задайте API-ключ
  • В gateway: /restart. В CLI: перезапустите сессию