diagnosing-voice
Skill6 starsChanged 9 days agoMITView on GitHub
Diagnose Hermes voice mode issues — STT/TTS provider failures, audio device problems, latency, ffmpeg missing, and voice message transcription.
- Reads credentials
- Installs packages
In this repository32 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- diagnosing-authSkill
- diagnosing-backupSkill
- diagnosing-bot-modeSkill
- diagnosing-browserSkill
- diagnosing-cli-tuiSkill
- diagnosing-commandsSkill
- diagnosing-configSkill
- diagnosing-cronSkill
- diagnosing-desktopSkill
- diagnosing-gatewaySkill
- diagnosing-hooksSkill
- diagnosing-host-pressureSkill
- diagnosing-mcpSkill
- diagnosing-memoriesSkill
- diagnosing-memorySkill
- diagnosing-pathSkill
- diagnosing-pluginsSkill
- diagnosing-profilesSkill
- diagnosing-providersSkill
- diagnosing-runtimeSkill
- diagnosing-secretsSkill
- diagnosing-sessionsSkill
- diagnosing-skillsSkill
- diagnosing-storageSkill
- diagnosing-triageSkill
- diagnosing-updateSkill
- hermes-configuration-guideSkill
- hermes-post-updateSkill
- installing-hermesSkill
- plugin-authoringSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 0 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 74
Check config.yaml stt: and tts: blocks — verify provider, model, API key.
- Very specific: line 75
Check $HERMES_HOME/.env — verify provider API keys.
- Very specific: line 126
Run hermes pm install ffmpeg (PM-era install) or apt install ffmpeg / brew install ffmpeg (older checkout), then restart the gateway with …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Diagnosing Voice Mode
Goal: reduce any voice problem to one concrete fix — a config.yaml field, a provider switch, or a missing dependency. Voice mode covers STT (speech-to-text), TTS (text-to-speech), and voice message transcription.
1. Configuration shape
# ~/.hermes/config.yaml
voice:
record_key: "ctrl+b"
max_recording_seconds: 120
auto_tts: false
beep_enabled: true
silence_threshold: 200
silence_duration: 3.0
stop_phrases: ["stop"]
stt:
enabled: true
provider: "local" # local | groq | openai | mistral | xai | elevenlabs | deepinfra
local:
model: "base" # tiny | base | small | medium | large-v3
language: ""
tts:
provider: "edge" # edge | elevenlabs | openai | minimax | mistral | gemini | xai | deepinfra | neutts | kittentts | piper
edge:
voice: "en-US-AriaNeural"
speed: 1.0
streaming:
min_len: 201b. Voice turns (route model vs session model)
Spoken turns run on a voice route (agent/voice_turn_route.py) that may select a separate model or retain the session model — with auxiliary.voice_chat on provider: auto (or main without model/base_url), expect the session route. The route reasons off by default, which reads as less detailed replies. Streaming transcription is capability-gated (stt.streaming plus provider support; live resampling is pure-Python). Catalog voice bridges (alice-voice, carbonvoice-platform, deepgram-voice, hermes-live-voice, omnivoice) are separate installable providers — a bridge-specific failure points at the bridge plugin, not the turn router. ffmpeg matters on the file path: command-provider transcription normalizes audio through ffmpeg when configured. Diagnose accordingly: unexpected-model symptoms → check which route served the turn; stalls → streaming support and credentials first, ffmpeg only for file-based normalize failures.
2. How to inspect
[!NOTE] Voice controls are in-session slash commands, not
hermes voiceCLI subcommands. There is nohermes voice status,hermes voice tts, orhermes voice stt. The only valid subcommands are:/voice,/voice on,/voice off,/voice tts,/voice status.
/voice status— show current voice mode state and provider config/voice on//voice off— toggle voice mode/voice tts— toggle spoken output (not a provider test — controls whether TTS is spoken)hermes logs --follow— watch for voice-related errorsarecord -l(Linux) /system_profiler SPAudioDataType(macOS) — list audio devices
3. Pitfalls (symptom → cause → fix)
- No audio output / agent responds in text only —
tts.providernot set or invalid; provider API key missing. → Settts.providerin config.yaml; verify API key in$HERMES_HOME/.env. - Ctrl+B does nothing / microphone not detected — (a) audio device not connected or not default; (b) PulseAudio bridge not active (WSL2); (c)
voice.record_keychanged. → Checkarecord -l(Linux) or audio settings (macOS); verify default input device; check config.yaml for custom record_key. - Transcription is inaccurate or misses words — (a) STT model too small (
baseis fastest but least accurate); (b) background noise; (c) microphone quality. → Switchstt.local.modeltosmallormedium; use a headset or directional mic; reduce background noise. - TTS not responding — (a)
tts.providernot set; (b) provider API key missing; (c) provider service down. → Verify config; check API key; run/voice ttsto confirm TTS is enabled. - Voice bubbles showing as files on Telegram — ffmpeg unavailable (required for audio format conversion). → ffmpeg is a PM-managed required runtime tool on a PM-era install, so restore it with
hermes pm install ffmpegorhermes update; on an older checkout install it with your system package manager (apt install ffmpeg,brew install ffmpeg). Restart the gateway afterward. - Response latency too high — (a) STT model too large; (b) TTS provider slow; (c) network latency. → Start with local STT + Edge TTS (no-key baseline); switch one stage at a time; check network.
- STT returns garbage text — (a) wrong language hint; (b) model too small; (c) audio quality poor. → Set
stt.local.languageto ISO-639-1 code; upgrade model; improve audio input. - Voice mode crashes on start — (a) missing Python dependencies — on a PM-era install the environment is managed, so re-run the installer or
hermes updaterather than pip-installing into it (PyPI is stale and no longer a supported route); on an older checkoutpip install hermes-agent[voice]still applies; (b) audio device busy. → Install voice extras; check for other apps using the microphone.
4. Localization workflow
/voice status— check current provider and mode state./voice tts— confirm TTS output is enabled.- Check config.yaml
stt:andtts:blocks — verify provider, model, API key. - Check
$HERMES_HOME/.env— verify provider API keys. - Match the failure: no output → pitfall 1; no input → pitfall 2; bad quality → pitfall 3.
- Apply the fix, restart gateway, and test with
/voice status. - Headless:
/voice*steps need a live session — checkhermes logs --followfor voice errors and inspect thestt:/tts:blocks inconfig.yaml. On PM-era installs, check ffmpeg withhermes pm status; on older checkouts, runffmpeg -version.
5. Cross-references
hermes-configuration-guide— for $HERMES_HOME resolution and config.yaml structurediagnosing-cli-tui— for Windows CLI/TUI rendering and encoding issuesdiagnosing-auth— for provider API key and token issues
Verification
After applying fixes:
# Check current voice state and provider config (in-session)
# /voice status
# Watch for voice errors in real time — run this in a SECOND terminal;
# it is a live stream and does not return, so later commands in this
# block are unreachable while it runs.
hermes logs --follow
# Bounded alternative for a sequential run: recent errors only
hermes logs errors
# PM-era installs: confirm ffmpeg is present
hermes pm status
# Older checkouts only: confirm the system ffmpeg binary
ffmpeg -versionExpected: /voice status shows the configured provider; no ffmpeg not found or provider auth errors in the log stream (hermes logs --follow in a second terminal, or hermes logs errors); on a PM-era install hermes pm status lists ffmpeg, on an older checkout ffmpeg -version prints a version.
Report
This skill diagnoses voice mode issues — STT/TTS provider failures, audio device problems, latency, ffmpeg missing, and voice message transcription. When you run the diagnostic workflow, present findings in the standard format below.
Summary
Your voice messages on Telegram are showing as files instead of playable voice bubbles because ffmpeg is not installed. ffmpeg is required for audio format conversion and is a PM-managed runtime tool on PM-era installs.
Findings
| Severity | What | Evidence |
| HIGH | ffmpeg not installed | hermes pm status shows ffmpeg: not installed; Telegram voice messages appear as document files |
| MEDIUM | TTS provider not configured | /voice status shows tts.provider: (not set); agent responds in text only |
Recommended Fix
Run hermes pm install ffmpeg (PM-era install) or apt install ffmpeg / brew install ffmpeg (older checkout), then restart the gateway with hermes gateway restart. For TTS, set tts.provider: edge in config.yaml for a no-key baseline.
References
$HERMES_HOME/config.yaml—voice:,stt:,tts:blockshermes_cli/voice.py— STT/TTS provider dispatch and playback pipelinehermes_cli/cli_voice_mixin.py,hermes_cli/setup_tts.py— voice wiring and TTS setuptools/tts_streaming.py— streaming provider resolution (resolve_streaming_provider)
Facts re-verified 2026-09-21 against upstream source at commit cedf4a3d78675283fa93e4e6ea2d6212bf414667: hermes_cli/voice.py; plus the official docs (hermes-agent.nousresearch.com/docs/user-guide/features/voice-mode). Re-checked 2026-10-12 against the live install (upstream e0734a66): hermes_cli/tts.py and hermes_cli/stt.py do not exist — provider logic lives in hermes_cli/voice.py (+ cli_voice_mixin.py, setup_tts.py, tools/tts_streaming.py). Voice turns verified 2026-10-15 against the installed source at 9bda154d (v0.21.7) (agent/voice_turn_route.py route model + reasoning-off floor, voice_chat reasoning none, stt.streaming capability flag). Re-verify before reuse.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

