Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/ellmos-ai/bach/voicenpx skills add ellmos-ai/bach --skill voicegit clone --depth 1 https://github.com/ellmos-ai/bachWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/ellmos-ai/bach/voice)<a href="https://agentmods.dev/skills/ellmos-ai/bach/voice"><img src="https://agentmods.dev/badge/skills/ellmos-ai/bach/voice.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00053 | $0.01178 |
| Opus 5 | $0.00026 | $0.00589 |
| Sonnet 5 | $0.00011 | $0.00236 |
| Haiku 4.5 | $0.00005 | $0.00118 |
Grade A, and why
voice-service scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
wget https://github.com/rhasspy/piper/releases/download/v1.2.0/voice-de-de-thorsten-medium.tar.gz How it starts
The opening of the file, as written. The whole thing — 150 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Voice Service
Status: PRODUCTION
Vollstaendige Implementation mit STT, TTS (inkl. File-Export), Wake-Word. Alle Komponenten haben graceful Fallbacks bei fehlenden Dependencies.
Features
- STT (Speech-to-Text): Whisper (online) oder Vosk (offline)
- TTS (Text-to-Speech):
- pyttsx3 mit Voice-Selection (Zira bevorzugt) und Non-Blocking-Modus
- NEU: Piper-TTS für hochwertige deutsche neuronale Stimmen
- NEU:
speak_to_file()- Text als MP3/OGG/WAV exportieren
- Wake-Word: openwakeword + pyaudio, Keyboard-Fallback bei fehlender Hardware
- VoiceService: Kombinierte Klasse mit Status-Reporting
Abhaengigkeiten (alle optional)
# STT Engines
pip install openai-whisper # STT Option 1 (online, hohe Qualitaet)
pip install vosk # STT Option 2 (offline)
# TTS Engines
pip install pyttsx3 # TTS Option 1 (Basic, Windows SAPI5)
pip install piper-tts # TTS Option 2 (Neural, EMPFOHLEN fuer DE)
# Wake-Word
pip install openwakeword # Wake-Word Detection
pip install pyaudio numpy # Mikrofon fuer Wake-Word
# Optional: Audio-Konvertierung
# ffmpeg (fuer MP3/OGG Export)
Verwendung
Basis-Nutzung
from hub._services.voice.voice_stt import VoiceService
svc = VoiceService()
# Status aller Komponenten
status = svc.status()
# Text-to-Speech (Live)
svc.tts.speak("Hallo von BACH")
svc.tts.speak("Nicht blockierend", block=False)
# Speech-to-Text
text = svc.stt.transcribe_file("aufnahme.wav", language="de")
# Wake-Word (threaded)
thread, stop = svc.wakeword.listen_threaded(on_wake=lambda: print("Wach!"))
# ... spaeter: stop.set()
NEU: Text-to-File (für Telegram/Discord Voice-Nachrichten)
from hub._services.voice.voice_stt import VoiceTTS
# Mit pyttsx3 (Standard Windows-Stimmen)
tts = VoiceTTS(engine="pyttsx3")
tts.speak_to_file("Hallo von BACH!", "output.mp3", format="mp3")
# Mit Piper-TTS (hochwertige deutsche neuronale Stimmen)
# Voraussetzung: PIPER_MODEL Environment-Variable gesetzt
# z.B. export PIPER_MODEL=/path/to/de_DE-thorsten-medium.onnx
tts = VoiceTTS(engine="piper")
tts.speak_to_file("Hallo von BACH!", "output.ogg", format="ogg")
# Auto-Select (beste verfügbare Engine)
tts = VoiceTTS(engine="auto")
tts.speak_to_file("Test", "voice.mp3")
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 150 lines · 53 tokens per session scan A 40706d66c029
voice-service is a skill published in the GitHub repository ellmos-ai/bach (7 stars, last pushed today), licensed MIT. It adds 53 tokens to every session and 1,178 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
csv-workbench
Analyze CSV files in /mnt/data and return concise numeric summaries.
md2pdf
Use when the user wants to convert one Markdown file into a publication-ready A4 PDF, especially when the source may contain Mermaid diagrams, ASCII diagrams, CJK text, tables, or pandoc/weasyprint edge cases. Works by copying the source to a pdf.md working file, converting diagrams, escaping PDF-breaking syntax…
data-science-analysis
Computes a numeric or categorical answer to a quantitative data-science question by cleaning and analyzing local data files (CSV, Excel, TSV, and scientific formats .npz/.fits/.h5) with pandas, numpy, and scipy. Use whenever a task ships its own dataset (in whatever local directory it provides) and asks you to derive…
docutranslate
Use when translating documents locally via LLM — PDF, Word, Excel, Markdown, SRT subtitles with format preservation. DocuTranslate: LLM-powered multi-format local file translation tool with MCP server support.
fsl-requirements-document
Generate, edit, and re-verify a human-readable requirements document (Markdown) from a checked FSL requirements/spec dialect file, using fslc document generate/claims/check. The agent is a non-normative editor and review-support assistant, never a compiler — it may only fill in the document's editable slot…
obsidian-knowledge
Use for any knowledge work in an Obsidian vault — capturing a quick note or link, organizing an Inbox, or turning bigger material (PDFs, docx, slides, syllabi, papers, transcripts, URL lists) into structured, teaching-quality notes. Works for any subject, adapts to the vault it's in, and does as much or as little…