Hermes Agent и голосовой помощник: как настроить озвучку ответов

Hermes Agent — это AI-агент с открытым кодом от Nous Research, который поддерживает полноценное голосовое взаимодействие: распознавание речи, синтез ответов через 10 TTS-провайдеров и работу в голосовых каналах Discord. В отличие от простых чат-ботов, Hermes озвучивает ответы в реальном времени, предложение за предложением, и может прерываться голосом прямо посреди реплики.

В этой статье — пошаговая настройка голосового режима в Hermes: от установки зависимостей до выбора TTS-провайдера и тонкой регулировки параметров.

Что такое голосовой режим в Hermes Agent?

Голосовой режим в Hermes Agent — это функция, которая позволяет разговаривать с AI-агентом голосом вместо текста. Агент слушает вас через микрофон, транскрибирует речь в текст с помощью Whisper, обрабатывает запрос и озвучивает ответ через выбранный TTS-провайдер.

Hermes поддерживает три формата голосового взаимодействия:

  • CLI-режим — нажмите Ctrl+B, говорите, слышите ответ из динамиков
  • Автоответ голосом в мессенджерах — Telegram и Discord получают аудио-сообщения вместе с текстом
  • Голосовой канал Discord — бот заходит в голосовой канал, слушает участников и отвечает голосом
  • Все три режима работают на одном и том же движке, с одинаковыми настройками и одинаковым качеством.

    Какие TTS-провайдеры поддерживаются?

    Hermes Agent работает с 10 провайдерами синтеза речи. Это самый широкий выбор среди AI-агентов с открытым кодом — от бесплатных локальных моделей до премиум-сервисов с голосами, неотличимыми от человека.

    Провайдер Качество Стоимость API-ключ
    Edge TTS (по умолчанию) Хорошее Бесплатно Не нужен
    ElevenLabs Отличное Платно ELEVENLABS_API_KEY
    OpenAI TTS Хорошее Платно VOICE_TOOLS_OPENAI_KEY
    MiniMax TTS Отличное Платно MINIMAX_API_KEY
    Mistral Voxtral Отличное Платно MISTRAL_API_KEY
    Google Gemini TTS Отличное Бесплатный тариф GEMINI_API_KEY
    xAI TTS Отличное Платно XAI_API_KEY
    NeuTTS Хорошее Бесплатно (локально) Не нужен
    KittenTTS Хорошее Бесплатно (локально) Не нужен
    Piper Хорошее Бесплатно (локально) Не нужен

    Edge TTS включён по умолчанию и не требует никаких ключей. Это облачный сервис Microsoft с 322 голосами на 74 языках. Качество приличное, скорость хорошая — подходит для большинства задач.

    ElevenLabs — лидер по качеству голоса. Более 10 000 голосов, клонирование голоса, поддержка 70+ языков с автоматическим определением. Латентность синтеза — около 75 мс. Стоимость начинается от $6/месяц.

    Локальные провайдеры (NeuTTS, KittenTTS, Piper) работают полностью на вашем оборудовании без интернета и без API-ключей. NeuTTS и KittenTTS — нейросетевые модели, Piper — классический параметрический синтезатор. Все три требуют ffmpeg для конвертации аудио в формат Telegram.

    Пошаговая настройка голосового режима

    Шаг 1: Установка зависимостей

    Сначала убедитесь, что Hermes Agent установлен и работает с текстовым вводом. Затем установите голосовые зависимости:

    cd ~/.hermes/hermes-agent && uv pip install -e ".[voice]"
    

    Для поддержки Discord и Telegram с голосовыми сообщениями:

    cd ~/.hermes/hermes-agent && uv pip install -e ".[messaging]"
    

    Для премиум-синтеза речи через ElevenLabs:

    cd ~/.hermes/hermes-agent && uv pip install -e ".[tts-premium]"
    

    Или всё сразу:

    cd ~/.hermes/hermes-agent && uv pip install -e ".[all]"
    

    Шаг 2: Системные зависимости

    На macOS:

    brew install portaudio ffmpeg opus
    brew install espeak-ng  # для NeuTTS
    

    На Ubuntu или Debian:

    sudo apt install portaudio19-dev ffmpeg libopus0
    sudo apt install espeak-ng  # для NeuTTS
    

    PortAudio нужен для захвата звука с микрофона и воспроизведения. ffmpeg конвертирует аудио между форматами — без него Edge TTS не сможет отправлять голосовые сообщения в Telegram. Opus — кодек для Discord-голосовых каналов.

    Шаг 3: Настройка API-ключей

    Добавьте ключи в файл ~/.hermes/.env:

    # Распознавание речи (Whisper)
    # Локальный faster-whisper — бесплатный, рекомендуется
    # pip install faster-whisper
    
    # Groq Whisper — быстрый, бесплатный тариф (облако)
    GROQ_API_KEY=your-key
    
    # OpenAI Whisper — платный (облако)
    VOICE_TOOLS_OPENAI_KEY=your-key
    
    # Синтез речи (опционально — Edge TTS работает без ключа)
    ELEVENLABS_API_KEY=your-key
    

    Важно: если вы установите faster-whisper, распознавание речи будет работать без единого API-ключика. Модель (~150 МБ для базовой версии) скачивается автоматически при первом использовании.

    Пользователи с подпиской Nous Portal получают OpenAI TTS через Tool Gateway — отдельный ключ OpenAI не нужен. Достаточно выполнить hermes setup --portal при первоначальной настройке.

    Шаг 4: Выбор и настройка TTS-провайдера

    Настройки синтеза речи находятся в ~/.hermes/config.yaml:

    tts:
      provider: "edge"  # провайдер по умолчанию
      speed: 1.0        # глобальная скорость
    

    Edge TTS (бесплатный, по умолчанию):

    tts:
      provider: "edge"
      edge:
        voice: "ru-RU-DmitryNeural"  # русский голос
        speed: 1.0
    

    Список всех 322 голосов Edge TTS доступен в документации Hermes. Для русского языка подходят ru-RU-DmitryNeural, ru-RU-SvetlanaNeural и другие.

    ElevenLabs (премиум):

    tts:
      provider: "elevenlabs"
      elevenlabs:
        voice_id: "pNInz6obpgDQGcFmaJgB"  # Adam
        model_id: "eleven_multilingual_v2"
    

    OpenAI TTS:

    tts:
      provider: "openai"
      openai:
        model: "gpt-4o-mini-tts"
        voice: "alloy"  # alloy, echo, fable, onyx, nova, shimmer
        speed: 1.0
    

    Google Gemini TTS (бесплатный тариф):

    tts:
      provider: "gemini"
      gemini:
        model: "gemini-2.5-flash-preview-tts"
        voice: "Kore"  # 30 голосов: Zephyr, Puck, Kore, Enceladus, Gacrux и др.
    

    Gemini TTS поддерживает персональные промпты для голоса — можно создать файл с описанием характера голоса и указать его в persona_prompt_file.

    Piper (локальный, бесплатный):

    tts:
      provider: "piper"
      piper:
        voice: "ru-ru-irina-medium"  # русский голос
    

    Piper скачивает модель голоса автоматически при первом использовании.

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

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

    hermes
    

    Внутри CLI включите голосовой режим:

    /voice on
    

    Или переключайте его командой /voice. Проверить текущее состояние можно командой /voice status.

    Как работает голосовой режим в CLI?

    После включения голосового режима нажмите Ctrl+B для начала записи. Hermes воспроизводит звуковой сигнал (880 Гц), и вы начинаете говорить.

    Во время записи на экране отображается уровень громкости:

    ● [▁▂▃▅▇▇▅▂] ❯
    

    Когда вы замолкаете, Hermes ждёт 3 секунды тишины и автоматически останавливает запись. Затем воспроизводит два коротких сигнала (660 Гц), аудио транскрибируется через Whisper и отправляется агенту.

    Если TTS включён, ответ озвучивается по предложениям — вы не ждёте полного завершения генерации. Агент начинает говорить, как только сформировано первое предложение.

    После ответа запись автоматически запускается снова — говорите дальше, не нажимая кнопок. Этот цикл продолжается до тех пор, пока вы не нажмёте Ctrl+B во время записи или пока не будет обнаружено 3 последовательных записи без речи.

    Прерывание агента (Barge-in)

    Hermes поддерживает прерывание голосом — вы можете перебить агента прямо посреди его ответа. Это работает в непрерывном голосовом режиме: пока агент говорит, встроенный детектор голосовой активности слушает вас и останавливает воспроизведение, как только вы начинаете говорить.

    Детектор калибрует уровень шума относительно самого воспроизведения, поэтому звук из динамиков не вызывает ложного срабатывания.

    Прерывание можно отключить в конфигурации:

    voice:
      barge_in: false
    

    Агент знает, что его прервали: следующее сообщение содержит короткую пометку, что spoken-ответ был оборван, и модель реагирует естественно — может пошутить или продолжить с места остановки.

    Детекция тишины

    Hermes использует двухэтапный алгоритм для определения конца речи:

  • Подтверждение речи — ожидание звука выше порога RMS (200) в течение минимум 0,3 секунды, с допуском коротких пауз между слогами
  • Окончание — после подтверждения речи срабатывает через 3 секунды непрерывной тишины
  • Если речь не обнаружена в течение 15 секунд, запись останавливается автоматически.

    Оба параметра настраиваются в config.yaml:

    voice:
      silence_threshold: 200    # порог громкости
      silence_duration: 3.0     # секунды тишины до остановки
    

    Звуковые сигналы начала и конца записи можно отключить:

    voice:
      beep_enabled: false
    

    Фильтр галлюцинаций Whisper

    Whisper иногда генерирует фантомный текст из тишины или фонового шума — фразы вроде «Thank you for watching», «Subscribe» и подобные. Hermes фильтрует их автоматически с помощью набора из 26 известных фраз-галлюцинаций на нескольких языках, плюс регулярное выражение для поимки повторяющихся вариаций.

    Это означает, что случайный шум или тишина не превратятся в ложный запрос к агенту.

    Стриминговый синтез речи

    Ключевая особенность Hermes — стриминговый TTS. Агент озвучивает ответ по предложениям по мере генерации текста, а не ждёт завершения всего ответа.

    Как это работает:

  • Текстовые дельты накапливаются в предложения (минимум 20 символов)
  • Из текста удаляется markdown-форматирование, эмодзи и блоки think
  • Каждое предложение синтезируется и воспроизводится в реальном времени
  • Провайдеры с поддержкой chunked PCM API (ElevenLabs, OpenAI) стримят необработанный аудиопоток для минимальной задержки от слова до звука. Остальные провайдеры, включая Edge TTS по умолчанию, синтезируют и воспроизводят каждое предложение по мере его завершения.

    Голосовые сообщения в мессенджерах

    Telegram

    Hermes отправляет голосовые ответы в Telegram как inline voice bubbles — аудио проигрывается прямо в чате без скачивания.

    Формат: Opus/OGG. Провайдеры OpenAI, ElevenLabs и Mistral генерируют Opus нативно. Edge TTS, MiniMax, Gemini, xAI, NeuTTS, KittenTTS и Piper требуют ffmpeg для конвертации:

    # Ubuntu/Debian
    sudo apt install ffmpeg
    
    # macOS
    brew install ffmpeg
    

    Без ffmpeg аудио от этих провайдеров отправляется как обычный файл (воспроизводится, но отображается как прямоугольный проигрыватель вместо круглой voice bubble).

    Discord

    В Discord Hermes отправляет голосовые сообщения как Opus/OGG. Если формат не поддерживается, аудио отправляется как файл-вложение.

    Для голосовых каналов Discord требуется библиотека discord.py[voice], которая автоматически устанавливает PyNaCl (шифрование голоса) и привязки Opus.

    WhatsApp

    В WhatsApp голосовые ответы отправляются как MP3-файлы.

    Ограничения длины текста

    Каждый TTS-провайдер имеет ограничение на количество символов в одном запросе. Hermes автоматически обрезает текст, чтобы запросы не возвращали ошибку:

    Провайдер Лимит символов
    Edge TTS 5 000
    OpenAI 4 096
    MiniMax 10 000
    Mistral 4 000
    Google Gemini 32 000
    xAI 15 000
    ElevenLabs Зависит от модели (до 40 000)
    NeuTTS 2 000
    KittenTTS 2 000
    Piper 5 000

    Лимит можно переопределить в конфигурации:

    tts:
      openai:
        max_text_length: 8192
    

    Управление скоростью речи

    Глобальная настройка скорости применяется ко всем провайдерам:

    tts:
      speed: 1.2  # на 20% быстрее
    

    Каждый провайдер может переопределить глобальную скорость своей:

    tts:
      speed: 1.0
      openai:
        speed: 1.5  # OpenAI говорит быстрее остальных
    

    Настройка провайдера имеет приоритет над глобальной. Диапазон значений зависит от провайдера: OpenAI — от 0,25 до 4,0, MiniMax — от 0,5 до 2,0.

    Часто задаваемые вопросы

    Можно ли использовать Hermes как замену Siri или Alexa?

    Hermes — это не голосовой ассистент в традиционном смысле. Он не слушает постоянно и не просыпается по ключевому слову. Но в CLI-режиме с непрерывной записью он работает как полноценный голосовой помощник: говорите — получаете ответ. В Discord голосовых каналах Hermes ведёт себя как живой собеседник.

    Какой TTS-провайдер выбрать для русского языка?

    Edge TTS с голосом ru-RU-DmitryNeural или ru-RU-SvetlanaNeural — бесплатный и достаточно качественный. Для лучшего качества — ElevenLabs с моделью eleven_multilingual_v2. Для полностью локальной работы без интернета — Piper с русским голосом.

    Нужен ли мощный компьютер для локального TTS?

    Piper и KittenTTS работают на любом современном компьютере, включая Raspberry Pi. NeuTTS требует чуть больше ресурсов. Для локального распознавания речи через faster-whisper рекомендуется минимум 4 ГБ оперативной памяти.

    Можно ли менять голоса на лету?

    Да, через команды /voice tts и настройки в config.yaml. Для провайдеров с множеством голосов (Edge TTS — 322 голоса, ElevenLabs — 10 000+) можно переключаться без перезапуска агента.

    Работает ли голосовой режим без интернета?

    Да, если использовать локальные провайдеры: faster-whisper для распознавания речи и Piper, KittenTTS или NeuTTS для синтеза. Вся цепочка работает на вашем оборудовании.


    *Подробнее о настройке Hermes Agent читайте в документации hermeswiki.*