sidebar_position: 9
title: "Voice & TTS"
description: "Text-to-speech and voice message transcription across all platforms"
lang: ru
Голос и TTS
Hermes Agent поддерживает как преобразование текста в речь, так и транскрипцию голосовых сообщений на всех платформах обмена сообщениями.
💡 Tip
Подписчики
Если у вас есть платная подписка на [Nous Portal](https://portal.nousresearch.com), OpenAI TTS доступен через **[Tool Gateway](tool-gateway.md)** без отдельного ключа OpenAI API. Запустите `hermes model` или `hermes tools`, чтобы включить его.
Преобразование текста в речь
Преобразование текста в речь с помощью десяти провайдеров:
Провайдер
Качество
Стоимость
API-ключ
Пограничный TTS (по умолчанию)
Хорошо
Бесплатно
Ничего не нужно
ЭлевенЛабс
Отлично
Платный
ELEVENLABS_API_KEY
OpenAI TTS
Хорошо
Платный
VOICE_TOOLS_OPENAI_KEY
МиниМакс ТТС
Отлично
Платный
MINIMAX_API_KEY
Мистраль (Вокстрал ТТС)
Отлично
Платный
MISTRAL_API_KEY
Google Gemini TTS
Отлично
Уровень бесплатного пользования
GEMINI_API_KEY
xAI TTS
Отлично
Платный
XAI_API_KEY
НейТТС
Хорошо
Бесплатно (локально)
Ничего не нужно
КотенокTTS
Хорошо
Бесплатно (локально)
Ничего не нужно
Пайпер
Хорошо
Бесплатно (локально)
Ничего не нужно
Доставка платформы
Платформа
Доставка
Формат
Телеграмма
Голосовой пузырь (играет в режиме онлайн)
Опус .ogg
Раздор
Голосовой пузырь (Opus/OGG), возвращается к вложенному файлу
Опус/MP3
WhatsApp
Вложенный аудиофайл
MP3
интерфейс командной строки
Сохранено в ~/.hermes/audio_cache/
MP3
Конфигурация
# In ~/.hermes/config.yamltts:provider:"edge"# "edge" | "elevenlabs" | "openai" | "minimax" | "mistral" | "gemini" | "xai" | "neutts" | "kittentts" | "piper"speed:1.0# Global speed multiplier (provider-specific settings override this)edge:voice:"en-US-AriaNeural"# 322 voices, 74 languagesspeed:1.0# Converted to rate percentage (+/-%)elevenlabs:voice_id:"pNInz6obpgDQGcFmaJgB"# Adammodel_id:"eleven_multilingual_v2"openai:model:"gpt-4o-mini-tts"voice:"alloy"# alloy, echo, fable, onyx, nova, shimmerbase_url:"https://api.openai.com/v1"# Override for OpenAI-compatible TTS endpointsspeed:1.0# 0.25 - 4.0minimax:model:"speech-2.8-hd"# speech-2.8-hd (default), speech-2.8-turbovoice_id:"English_Graceful_Lady"# See https://platform.minimax.io/faq/system-voice-idspeed:1# 0.5 - 2.0vol:1# 0 - 10pitch:0# -12 - 12mistral:model:"voxtral-mini-tts-2603"voice_id:"c69964a6-ab8b-4f8a-9465-ec0925096ec8"# Paul - Neutral (default)gemini:model:"gemini-2.5-flash-preview-tts"# or gemini-2.5-pro-preview-ttsvoice:"Kore"# 30 prebuilt voices: Zephyr, Puck, Kore, Enceladus, Gacrux, etc.xai:voice_id:"eve"# or a custom voice ID — see docs belowlanguage:"en"# ISO 639-1 codesample_rate:24000# 22050 / 24000 (default) / 44100 / 48000bit_rate:128000# MP3 bitrate; only applies when codec=mp3# base_url: "https://api.x.ai/v1" # Override via XAI_BASE_URL env varneutts:ref_audio:''ref_text:''model:neuphonic/neutts-air-q4-ggufdevice:cpukittentts:model:KittenML/kitten-tts-nano-0.8-int8# 25MB int8; also: kitten-tts-micro-0.8 (41MB), kitten-tts-mini-0.8 (80MB)voice:Jasper# Jasper, Bella, Luna, Bruno, Rosie, Hugo, Kiki, Leospeed:1.0# 0.5 - 2.0clean_text:true# Expand numbers, currencies, unitspiper:voice:en_US-lessac-medium# voice name (auto-downloaded) OR absolute path to .onnx# voices_dir: '' # default: ~/.hermes/cache/piper-voices/# use_cuda: false # requires onnxruntime-gpu# length_scale: 1.0 # 2.0 = twice as slow# noise_scale: 0.667# noise_w_scale: 0.8# volume: 1.0 # 0.5 = half as loud# normalize_audio: true
Контроль скорости: глобальное значение tts.speed по умолчанию применяется ко всем поставщикам. Каждый провайдер может переопределить его с помощью собственной настройки speed (например, tts.openai.speed: 1.5). Скорость, зависящая от поставщика, имеет приоритет над глобальным значением. По умолчанию — 1.0 (нормальная скорость).
Голосовые пузыри Telegram и ffmpeg
Для голосовых сообщений Telegram требуется аудиоформат Opus/OGG:
OpenAI, ElevenLabs и Mistral самостоятельно создают Opus — без дополнительной настройки.
Edge TTS (по умолчанию) выводит MP3, и для преобразования требуется ffmpeg:
MiniMax TTS выводит MP3 и требует ffmpeg для преобразования в голосовые сообщения Telegram.
Google Gemini TTS выводит необработанный PCM и использует ffmpeg для кодирования Opus напрямую для голосовых пузырей Telegram.
xAI TTS выводит MP3 и требует ffmpeg для преобразования в голосовые пузырьки Telegram.
NeuTTS выводит WAV, а также требует ffmpeg для преобразования в голосовые пузырьки Telegram.
KittenTTS выводит WAV, а также требует ffmpeg для преобразования в голосовые сообщения Telegram.
Piper выводит WAV, а также требует ffmpeg для преобразования в голосовые сообщения Telegram.
Без ffmpeg аудио Edge TTS, MiniMax TTS, NeuTTS, KittenTTS и Piper отправляются как обычные аудиофайлы (воспроизводимые, но отображаются в виде прямоугольного проигрывателя вместо голосового пузыря).
:::совет
Если вам нужны голосовые пузыри без установки ffmpeg, переключитесь на поставщика OpenAI, ElevenLabs или Mistral.
xAI Custom Voices (клонирование голоса)
xAI поддерживает клонирование вашего голоса и использование его с TTS. Создайте собственный голос в xAI Console, затем установите полученный voice_id в свою конфигурацию:
tts:provider:xaixai:voice_id:"nlbqfwie"# your custom voice ID
Piper — это быстрый локальный нейронный TTS-движок от Open Home Foundation (сопровождающие Home Assistant). Он полностью работает на процессоре, поддерживает 44 языка с заранее обученными голосами и не требует ключа API.
Установить через hermes tools → Голос и TTS → Piper — Hermes запускает для вас pip install piper-tts. Или установите вручную: pip install piper-tts.
Переключиться на Пайпер:
tts:provider:piperpiper:voice:en_US-lessac-medium
При первом вызове TTS для голоса, который не кэшируется локально, Hermes запускает python -m piper.download_voices <name> и загружает модель (~20–90 МБ в зависимости от уровня качества) в ~/.hermes/cache/piper-voices/. Последующие вызовы повторно используют кэшированную модель.
Выбор голоса.Полный каталог голосов охватывает английский, испанский, французский, немецкий, итальянский, голландский, португальский, русский, польский, турецкий, китайский, арабский, хинди и другие языки — каждый из них имеет уровни качества x_low / low / medium / high. Примеры голосов можно найти на rhasspy.github.io/piper-samples.
Использование предварительно загруженного голоса. Задайте для tts.piper.voice абсолютный путь, заканчивающийся на .onnx:
tts:piper:voice:/path/to/my-custom-voice.onnx
Расширенные ручки (tts.piper.length_scale / noise_scale / noise_w_scale / volume / normalize_audio, use_cuda) соответствуют 1:1 Piper SynthesisConfig. Они игнорируются в более старых версиях piper-tts.
Поставщики пользовательских команд
Если нужный вам движок TTS не поддерживается изначально (VoxCPM, MLX-Kokoro, XTTS CLI, сценарий клонирования голоса, что-либо еще, предоставляющее CLI), вы можете подключить его как поставщик командного типа без написания какого-либо Python. Hermes записывает входной текст во временный файл UTF-8, запускает команду оболочки и читает аудиофайл, созданный этой командой.
Объявите одного или нескольких провайдеров в tts.providers.<name> и переключайтесь между ними с помощью tts.provider: <name> — так же, как вы переключаетесь между встроенными модулями, такими как edge и openai.
tts:provider:voxcpm# pick any name under tts.providersproviders:voxcpm:type:commandcommand:"voxcpm--ref~/voice.wav--text-file{input_path}--out{output_path}"output_format:mp3timeout:180voice_compatible:true# try to deliver as a Telegram voice bubblemlx-kokoro:type:commandcommand:"python-mmlx_kokoro--in{input_path}--out{output_path}--voice{voice}"voice:af_skyoutput_format:wavpiper-custom:# native Piper also supports custom .onnx via tts.piper.voicetype:commandcommand:"piper-m/path/to/custom.onnx-f{output_path}<{input_path}"output_format:wav
Заполнители
Ваш шаблон команды может ссылаться на эти заполнители. Hermes заменяет их во время рендеринга и заключает каждое значение в кавычки для окружающего контекста (голые/одинарные/двойные кавычки), поэтому пути с пробелами и другими символами, чувствительными к оболочке, безопасны.
Заполнитель
Значение
{input_path}
Путь к временному текстовому файлу UTF-8 Гермес написал
{text_path}
Псевдоним для {input_path}
{output_path}
Путь, куда команда должна записать аудио
{format}
mp3 / wav / ogg / flac
{voice}
tts.providers.<name>.voice, пусто, если не установлено
{model}
tts.providers.<name>.model
{speed}
Разрешенный множитель скорости (поставщик или глобальный)
Используйте {{ и }} для буквальных фигурных скобок.
Дополнительные клавиши
Ключ
По умолчанию
Значение
timeout
120
Секунды; дерево процессов уничтожается по истечении срока действия (Unix killpg, Windows taskkill /T).
output_format
mp3
Один из mp3 / wav / ogg / flac. Автоматически выводится из выходного расширения, если Гермес выбирает путь.
voice_compatible
false
Когда true, Hermes преобразует выходные данные MP3/WAV в Opus/OGG через ffmpeg, поэтому Telegram отображает голосовой пузырь.
max_text_length
5000
Ввод усекается до этой длины перед обработкой команды.
voice / model
пустой
Передаются команде только как значения-заполнители.
Замечания по поведению
Встроенные имена всегда выигрывают. Запись tts.providers.openai никогда не затеняет собственного провайдера OpenAI, поэтому никакая пользовательская конфигурация не может незаметно заменить встроенную.
По умолчанию доставка осуществляется в виде документа. Поставщики команд доставляются в виде обычных аудиовложений на каждой платформе. Включите доставку голосовых сообщений для каждого поставщика с помощью voice_compatible: true.
Ошибки выполнения команд видны агенту. Ненулевой выход, пустой вывод или тайм-аут возвращают ошибку с включенным потоком stderr/stdout команды, поэтому вы можете отладить поставщика из диалога.
type: command используется по умолчанию, если установлен command:. Явное написание type: command является хорошей практикой, но не является обязательным; запись с непустой строкой command рассматривается как поставщик команд.
{input_path} / {text_path} взаимозаменяемы. Используйте тот, который лучше читается в вашей команде.
Безопасность
Поставщики командного типа запускают любую настроенную вами команду оболочки с разрешениями вашего пользователя. Hermes цитирует значения-заполнители и применяет настроенный тайм-аут, но сам шаблон команды является доверенным локальным вводом — относитесь к нему так же, как к сценарию оболочки в вашем PATH.
Транскрипция голосовых сообщений (STT)
Голосовые сообщения, отправленные в Telegram, Discord, WhatsApp, Slack или Signal, автоматически расшифровываются и вставляются в разговор в виде текста. Агент видит стенограмму как обычный текст.
Провайдер
Качество
Стоимость
API-ключ
Локальный шепот (по умолчанию)
Хорошо
Бесплатно
Ничего не нужно
API Грока Шепота
Хорошо–Лучший
Уровень бесплатного пользования
GROQ_API_KEY
API OpenAI Whisper
Хорошо–Лучший
Платный
VOICE_TOOLS_OPENAI_KEY или OPENAI_API_KEY
:::информация Нулевая конфигурация
Локальная транскрипция работает сразу после установки faster-whisper. Если это недоступно, Hermes также может использовать локальный интерфейс командной строки whisper из обычных мест установки (например, /opt/homebrew/bin) или пользовательскую команду через HERMES_LOCAL_STT_COMMAND.
Локальный (faster-whisper) — Whisper запускается локально через faster-whisper. По умолчанию используется процессор, графический процессор, если доступен. Размеры модели:
Модель
Размер
Скорость
Качество
tiny
~75 МБ
Самый быстрый
Базовый
base
~150 МБ
Быстро
Хорошо (по умолчанию)
small
~500 МБ
Средний
Лучше
medium
~1,5 ГБ
Медленнее
Отлично
large-v3
~3 ГБ
Самый медленный
Лучшее
Groq API — требуется GROQ_API_KEY. Хороший запасной вариант в облаке, если вам нужен бесплатный вариант STT с хостингом.
OpenAI API — сначала принимает VOICE_TOOLS_OPENAI_KEY и возвращается к OPENAI_API_KEY. Поддерживает whisper-1, gpt-4o-mini-transcribe и gpt-4o-transcribe.
Mistral API (Voxtral Transcribe) — требуется MISTRAL_API_KEY. Использует модели Mistral Voxtral Transcribe. Поддерживает 13 языков, дневникизацию говорящих и временные метки на уровне слов. Установите с помощью pip install hermes-agent[mistral].
xAI Grok STT — Требуется XAI_API_KEY. Сообщения для https://api.x.ai/v1/stt as multipart/form-data. Good choice if you're already using xAI for chat or TTS and want one API key for everything. Auto-detection order puts it after Groq — explicitly set stt.provider: xai to force it.
Custom local CLI fallback — Set HERMES_LOCAL_STT_COMMAND if you want Hermes to call a local transcription command directly. The command template supports {input_path}, {output_dir}@@IC 0104@@{язык}, and {модель} placeholders.
Fallback Behavior
If your configured provider isn't available, Hermes automatically falls back:
- Local faster-whisper unavailable → Tries a local whisper CLI or HERMES_LOCAL_STT_COMMAND перед облачными провайдерами
- Ключ Groq не установлен → Возвращается к локальной транскрипции, затем OpenAI
- Ключ OpenAI не установлен → Возвращается к локальной транскрипции, затем Groq
- Ключ Mistral/SDK не установлен → Пропускается при автоматическом обнаружении; переходит к следующему доступному провайдеру
- Ничего недоступно → Голосовые сообщения передаются пользователю с точными примечаниями.