Wiki · Features in depth
Voice mode
Dictate the task and the agent answers out loud. Where voice works, what to prepare, how to choose a voice and how to avoid needless spending.
What works and where
| Way | Where it works | How you use it |
|---|---|---|
| Talking to the agent | The terminal on your computer | Enable /voice on, start recording with a key (default Ctrl+B) |
| Spoken replies | Telegram and Discord | The agent sends its answer as a voice message you play on your phone |
| Voice messages from you | Telegram, Discord and more | Send the bot a voice note — it is transcribed and the agent answers |
| Voice channels | Discord | The agent joins a voice channel and talks with you |
What it looks like in practice (terminal)
Switch voice mode on — you can check the state any time:
❯ /voice on ❯ /voice statusPress the recording key (default
Ctrl+B). A beep plays and recording starts.Speak. A level bar shows that the agent can hear you.
Stop speaking. After a moment of silence (3 seconds by default) recording ends by itself and two beeps confirm it.
The audio is transcribed and sent to the agent. With spoken output enabled you hear the answer and recording restarts immediately — keep talking without pressing anything.
Say exactly the word "stop" (configurable) and the voice conversation ends. Recording also has a ceiling (120 seconds by default) so it cannot get stuck.
What to prepare
| What | Why |
|---|---|
| An agent that works in text | It must answer typed messages first — only then does voice make sense |
| A model provider (key) | Voice computes nothing itself, it only turns speech into text and back |
| Audio on the machine running Hermes | A microphone and playback for interactive voice |
| The voice extra | Audio and transcription libraries are configured through hermes tools; in Docker only a curated subset is available and on-demand installs are disabled |
On Windows ARM64 and Intel Macs local transcription (Faster-Whisper) is not available — use a cloud provider (Groq, OpenAI, Mistral…) or voice messages from your phone.
Speech to text (what the agent hears)
| Option | When it fits |
|---|---|
local (default, free) | Runs on your machine, nothing leaves it; heavier on hardware |
| Groq, OpenAI, Mistral, xAI, ElevenLabs, DeepInfra | Fast and accurate even on a modest machine, billed per use or included in a plan |
Transcription off (stt.enabled: false) | When you want to process the recording yourself — the agent gets a file path instead of text |
Model size affects accuracy — from the smallest (tiny) to the largest
(large-v3), with turbo as a good compromise:
The voice the agent speaks with (TTS)
| Option | Cost | Note |
|---|---|---|
| Edge TTS (default) | free | No key needed; 322 voices across 74 languages |
| Paid services (ElevenLabs, OpenAI, MiniMax, Mistral, Gemini, xAI, DeepInfra) | paid / plan | Best sound; each needs its own key |
| Local (NeuTTS, KittenTTS, Piper) | free | Runs on your machine, sends nothing out; some download a model on first use |
Always listen to a voice before keeping it — pronunciation varies a lot between them.
Where you hear it (and find it)
| Where | Shape |
|---|---|
| Telegram | A voice message you play in the chat |
| Discord | A voice message or an attachment |
| An audio attachment | |
| Terminal | Played locally; files stay in ~/.hermes/audio_cache/ |
Pitfalls from our systems
| What happened | What to do |
|---|---|
| The agent ran on a server with no sound card | Interactive voice (a microphone at the server) makes no sense. Use voice messages in Telegram — the agent stays on the server and you speak from your phone |
| Spoken replies arrived for things better read | Spoken output can be switched off (/voice tts) or enabled only when it helps; it is off by default |
| Transcription got names and numbers wrong | Pin the transcription language (language: cs) and have important details (numbers, addresses) confirmed in writing |
| Paid voices started spending without us noticing | Spoken answers are billed per reply. The default Edge voice is free; enable a paid one deliberately |
| "It cannot hear me" | Check that it runs on a computer with a microphone (not in a container on a server), that the right input device is selected and that the agent worked in text first |
Our tips
| Tip | Why |
|---|---|
| Use voice to dictate tasks, not to listen to long answers | Listening to a ten-point list is a chore; dictating a task is a relief |
| Ask for short spoken answers | Put it into the personality file (SOUL.md) that spoken replies must be brief |
| Check permissions for voice messages on Telegram | Only you should be able to talk to the bot — see Telegram and Discord |
| Get the agent working in text before enabling voice | You avoid chasing a problem in two things at once |
