sidebar_position: 10
title: "Voice Mode"
description: "Real-time voice conversations with Hermes Agent — CLI, Telegram, Discord (DMs, text channels, and voice channels)"
lang: ru
Голосовой режим
Hermes Agent поддерживает полное голосовое взаимодействие через интерфейс командной строки и платформы обмена сообщениями. Разговаривайте с агентом с помощью микрофона, слушайте устные ответы и общайтесь в реальном времени в голосовых каналах Discord.
Если вам нужно практическое руководство по настройке с рекомендуемыми конфигурациями и реальными схемами использования, см. раздел Использовать голосовой режим с Hermes.
Предварительные условия
Прежде чем использовать голосовые функции, убедитесь, что у вас есть:
Агент Hermes установлен — pip install hermes-agent (см. Установка)
Настроен поставщик LLM — запустите hermes model или укажите учетные данные предпочитаемого поставщика в ~/.hermes/.env.
Рабочая базовая настройка — запустите hermes, чтобы убедиться, что агент отвечает на текст, прежде чем включать голосовую связь.
:::совет
Каталог ~/.hermes/ и config.yaml по умолчанию создаются автоматически при первом запуске hermes. Вам нужно только вручную создать ~/.hermes/.env для ключей API.
Обзор
Особенность
Платформа
Описание
Интерактивный голос
интерфейс командной строки
Нажмите Ctrl+B для записи, агент автоматически обнаружит тишину и ответит
Автоматический голосовой ответ
Телеграмма, Дискорд
Агент отправляет голосовой звук вместе с текстовыми ответами
Голосовой канал
Раздор
Бот присоединяется к ВК, слушает разговоры пользователей, говорит и отвечает
Требования
Пакеты Python
# CLI voice mode (microphone + audio playback)
pipinstall"hermes-agent[voice]"# Discord + Telegram messaging (includes discord.py[voice] for VC support)
pipinstall"hermes-agent[messaging]"# Premium TTS (ElevenLabs)
pipinstall"hermes-agent[tts-premium]"# Local TTS (NeuTTS, optional)
python-mpipinstall-Uneutts[all]# Everything at once
pipinstall"hermes-agent[all]"
Экстра
Пакеты
Требуется для
voice
sounddevice, numpy
Голосовой режим CLI
messaging
discord.py[voice], python-telegram-bot, aiohttp
Боты Discord и Telegram
tts-premium
elevenlabs
ElevenLabs TTS-провайдер
Дополнительный локальный поставщик TTS: установите neutts отдельно с помощью python -m pip install -U neutts[all]. При первом использовании модель загружается автоматически.
:::информация
discord.py[voice] автоматически устанавливает PyNaCl (для шифрования голоса) и привязки opus. Это необходимо для поддержки голосового канала Discord.
Системные зависимости
# macOS
brewinstallportaudioffmpegopus
brewinstallespeak-ng# for NeuTTS# Ubuntu/Debian
sudoaptinstallportaudio19-devffmpeglibopus0
sudoaptinstallespeak-ng# for NeuTTS
# Speech-to-Text — local provider needs NO key at all# pip install faster-whisper # Free, runs locally, recommendedGROQ_API_KEY=your-key# Groq Whisper — fast, free tier (cloud)VOICE_TOOLS_OPENAI_KEY=your-key# OpenAI Whisper — paid (cloud)# Text-to-Speech (optional — Edge TTS and NeuTTS work without any key)ELEVENLABS_API_KEY=***# ElevenLabs — premium quality# VOICE_TOOLS_OPENAI_KEY above also enables OpenAI TTS
:::совет
Если установлен faster-whisper, голосовой режим работает с нулевыми ключами API для STT. Модель (~150 МБ для base) загружается автоматически при первом использовании.
Голосовой режим CLI
Голосовой режим доступен как в классическом интерфейсе командной строки (hermes chat), так и в TUI (hermes --tui). Поведение в обоих случаях идентично — одни и те же команды слэша, одинаковое обнаружение тишины VAD, один и тот же потоковый TTS, один и тот же фильтр галлюцинаций. TUI дополнительно пересылает журналы анализа сбоев на адрес ~/.hermes/logs/, поэтому о сбоях режима «нажми и говори» на экзотических аудиосерверах можно сообщать с помощью полной трассировки стека, а не исчезать молча.
Говорите — полоса уровня звука в реальном времени показывает ваш ввод: ● [▁▂▃▅▇▇▅▂] ❯
Перестать говорить — после 3 секунд молчания запись автоматически прекращается.
Два звуковых сигнала (660 Гц), подтверждающие окончание записи.
Аудио расшифровывается через Whisper и отправляется агенту.
Если TTS включен, ответ агента произносится вслух.
Запись автоматически возобновляется — говорите еще раз, не нажимая ни одной клавиши.
Этот цикл продолжается до тех пор, пока вы не нажмете Ctrl+B во время записи (выход из непрерывного режима) или пока 3 последовательные записи не обнаружат речи.
:::совет
Ключ записи можно настроить через voice.record_key в ~/.hermes/config.yaml (по умолчанию: ctrl+b).
Обнаружение тишины
Двухэтапный алгоритм определяет, когда вы закончили говорить:
Речевое подтверждение — ожидание звука выше среднеквадратического порога (200) в течение не менее 0,3 с, допуская короткие провалы между слогами.
Обнаружение окончания — после подтверждения речи срабатывает через 3,0 секунды непрерывной тишины.
Если в течение 15 секунд речь вообще не распознается, запись автоматически останавливается.
Оба silence_threshold и silence_duration настраиваются в config.yaml. Вы также можете отключить звуковые сигналы начала/остановки записи с помощью voice.beep_enabled: false.
Потоковое TTS
Когда TTS включен, агент произносит свой ответ предложение за предложением по мере генерации текста — вы не ждете полного ответа:
Буферизирует текстовые различия в полные предложения (минимум 20 символов).
Удаляет форматирование уценки и блоки <think>.
Генерирует и воспроизводит звук для каждого предложения в режиме реального времени.
Фильтр галлюцинаций
Whisper иногда генерирует фантомный текст из тишины или фонового шума («Спасибо за просмотр», «Подписаться» и т. д.). Агент отфильтровывает их, используя набор из 26 известных фраз-галлюцинаций на нескольких языках, а также шаблон регулярного выражения, который улавливает повторяющиеся варианты.
Запустите шлюз для подключения к вашим платформам обмена сообщениями:
hermesgateway# Start the gateway (connects to configured platforms)
hermesgatewaysetup# Interactive setup wizard for first-time configuration
Discord: Каналы против личных сообщений
Бот поддерживает два режима взаимодействия в Discord:
Режим
Как говорить
Упоминание обязательно
Настройка
Прямое сообщение (DM)
Открыть профиль бота → «Сообщение»
Нет
Работает сразу
Канал сервера
Введите текстовый канал, где присутствует бот
Да (@botname)
Бота необходимо пригласить на сервер
DM (рекомендуется для личного использования): Просто откройте DM с ботом и введите сообщение — @упоминание не требуется. Голосовые ответы и все команды работают так же, как и в каналах.
Каналы сервера: Бот отвечает только тогда, когда вы @упоминаете его (например, @hermesbyt4 hello). Убедитесь, что вы выбрали пользователя-бота во всплывающем окне с упоминанием, а не роль с тем же именем.
:::совет
Чтобы отключить требование упоминания в каналах сервера, добавьте к ~/.hermes/.env:
DISCORD_REQUIRE_MENTION=false
Или установите определенные каналы как свободные ответы (упоминание не требуется):
Говорит ответ только при отправке голосового сообщения
all
/voice tts
Говорит ответ на каждое сообщение
Настройка голосового режима сохраняется после перезапуска шлюза.
Доставка платформы
Платформа
Формат
Заметки
Телеграмма
Голосовой пузырь (Opus/OGG)
Играет онлайн в чате. ffmpeg конвертирует MP3 → Opus при необходимости
Раздор
Родной голосовой пузырь (Opus/OGG)
Воспроизводится как голосовое сообщение пользователя. Возвращается к вложению файла в случае сбоя API голосового пузыря
Голосовые каналы Discord
Самая захватывающая голосовая функция: бот присоединяется к голосовому каналу Discord, слушает речь пользователей, расшифровывает их речь, обрабатывает через агента и произносит ответ обратно в голосовой канал.
Настройка
1. Разрешения бота Discord
Если у вас уже настроен бот Discord для текстовых сообщений (см. Руководство по настройке Discord), вам необходимо добавить голосовые разрешения.
Перейдите на Портал разработчиков Discord → ваше приложение → Установка → Настройки установки по умолчанию → Гильдейская установка:
Добавьте эти разрешения к существующим текстовым разрешениям:
Разрешение
Цель
Требуется
Подключиться
Присоединяйтесь к голосовым каналам
Да
Говори
Воспроизведение звука TTS в голосовых каналах
Да
Использовать голосовую активность
Обнаруживать, когда пользователи говорят
Рекомендуется
Обновленное целое число разрешений:
Уровень
Целое число
Что включено
Только текст
274878286912
Просмотр каналов, отправка сообщений, чтение истории, встраивание, вложения, темы, реакции
Текст + Голос
274881432640
Все выше + Подключайтесь, говорите
Повторно пригласите бота, указав обновленный URL-адрес разрешений:
Замените YOUR_APP_ID на свой идентификатор приложения с портала разработчиков.
:::предупреждение
Повторное приглашение бота на сервер, на котором он уже находится, обновит его разрешения, не удаляя его. Вы не потеряете ни данные, ни конфигурацию.
2. Намерения привилегированного шлюза
На Портале разработчика → ваше приложение → Бот → Привилегированные шлюзовые намерения включите все три:
Намерение
Цель
Намерение присутствия
Определить статус пользователя онлайн/оффлайн
Намерение участников сервера
Сопоставить голосовые идентификаторы SSRC с идентификаторами пользователей Discord
Намерение содержимого сообщения
Чтение содержимого текстовых сообщений в каналах
Все три необходимы для полной функциональности голосового канала. Намерение участников сервера особенно важно — без него бот не сможет определить, кто говорит в голосовом канале.
3. Кодек Opus
Библиотека кодеков Opus должна быть установлена на машине, на которой работает шлюз:
:::информация
Прежде чем запускать /voice join, вы должны находиться в голосовом канале. Бот присоединяется к тому же ВК, в котором вы находитесь.
Как это работает
Когда бот подключается к голосовому каналу, он:
Прослушивает аудиопоток каждого пользователя независимо.
Обнаруживает тишину — тишина в течение 1,5 с после не менее 0,5 с речи запускает обработку.
Транскрибирует звук через Whisper STT (локальный, Groq или OpenAI).
Процессы через весь конвейер агента (сеанс, инструменты, память).
Проговаривает ответ в голосовом канале через TTS.
Интеграция текстового канала
Когда бот находится в голосовом канале:
Расшифровки появляются в текстовом канале: [Voice] @user: what you said
Ответы агентов отправляются в виде текста в канале и озвучиваются в ВК.
Текстовый канал - это тот, где был выдан /voice join.
Предотвращение эха
Бот автоматически приостанавливает прослушивание звука во время воспроизведения ответов TTS, не позволяя ему слышать и повторно обрабатывать собственный вывод.
Контроль доступа
Только пользователи, перечисленные в DISCORD_ALLOWED_USERS, могут взаимодействовать посредством голоса. Звук других пользователей молча игнорируется.
Бот по умолчанию требует @mention в каналах сервера. Убедитесь, что вы:
Введите @ и выберите пользователя-бота (с #дискриминатором), а не роль с тем же именем.
Или вместо этого используйте личные сообщения — упоминание не требуется.
Или установите DISCORD_REQUIRE_MENTION=false в ~/.hermes/.env.
Бот заходит в ВК, но меня не слышит
Убедитесь, что ваш идентификатор пользователя Discord находится в DISCORD_ALLOWED_USERS.
Убедитесь, что у вас не отключен звук в Discord
Боту требуется событие SPEAKING от Discord, прежде чем он сможет сопоставить ваш звук — начните говорить в течение нескольких секунд после присоединения.
Бот меня слышит, но не отвечает
Убедитесь, что STT доступен: установите faster-whisper (ключ не требуется) или установите GROQ_API_KEY / VOICE_TOOLS_OPENAI_KEY