Parakeet Cli Ssml
v1.3.2Offline voice toolkit for speech-to-text, text-to-speech, and language detection supporting 25 languages with no API keys or cloud usage.
Like a lobster shell, security has layers — review code before you run it.
kesha-voice-kit
Local voice toolkit: transcribe voice messages to text, synthesize speech, detect language of audio or text. Fully offline after kesha install. No API keys, no per-minute billing.
Trigger keywords for when to use this skill: voice message, voice memo, .ogg, .wav, .mp3, audio file, transcribe, transcription, speech-to-text, STT, text-to-speech, TTS, synthesize speech, say, multilingual voice, multilingual ASR, language detection, offline voice, privacy, Apple Silicon, CoreML.
When to use
- Voice memo arrived (Telegram, WhatsApp, Slack, Signal .ogg/.opus/.m4a): transcribe with
kesha --json <path>and branch on the detected language. - Need to reply with audio: synthesize with
kesha say "<text>" > reply.wav. Auto-routes by detected language (Kokoro-82M for English, Piper for Russian). For other languages and ~180 more voices use--voice macos-*on macOS (zero model download). - Need to detect what language a file is in before choosing a pipeline:
kesha --json audio.oggreturns both audio-based and text-based language detection with confidence scores.
STT: transcribe audio
# JSON output with language detection (recommended for automation)
kesha --json voice.ogg
[{
"file": "voice.ogg",
"text": "Привет, как дела?",
"lang": "ru",
"audioLanguage": { "code": "ru", "confidence": 0.98 },
"textLanguage": { "code": "ru", "confidence": 0.99 }
}]
Use lang (or the more detailed audioLanguage/textLanguage) to decide how to respond.
Formats: .ogg, .opus, .mp3, .m4a, .wav, .flac, .webm — decoded via symphonia, no ffmpeg required.
Other output modes:
kesha audio.ogg— plain transcript on stdoutkesha --format transcript audio.ogg— transcript +[lang: ru, confidence: 0.99]footerkesha --verbose audio.ogg— human-readable with language infokesha --lang en audio.ogg— warn if detected language differs (useful sanity check)
TTS: synthesize speech
kesha say "Hello, world" > hello.wav # auto-routes en → Kokoro-82M
kesha say "Привет, мир" > privet.wav # auto-routes ru → Piper
kesha say --voice macos-de-DE "Guten Tag" > de.wav # any macOS system voice — German, French, Italian, ...
kesha say --list-voices # Kokoro + Piper + ~180 macos-* voices
Output: WAV mono float32. --out <path> writes to a file instead of stdout.
Language detection standalone
kesha --json audio.ogg includes both audio-based (audioLanguage) and text-based (textLanguage) detection. Use audio detection to identify the language before running language-specific logic.
Install
bun add --global @drakulavich/kesha-voice-kit # or: npm i -g @drakulavich/kesha-voice-kit
kesha install # downloads engine (~350 MB)
kesha install --tts # adds Kokoro + Piper RU (~390 MB more, for TTS)
One-time runtime prereq for TTS on each platform:
- macOS:
brew install espeak-ng - Linux:
sudo apt install espeak-ng - Windows:
choco install espeak-ng
macos-* voices need no install — they use voices already on the Mac.
Supported languages
Speech-to-text (25): Bulgarian, Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hungarian, Italian, Latvian, Lithuanian, Maltese, Polish, Portuguese, Romanian, Russian, Slovak, Slovenian, Spanish, Swedish, Ukrainian.
Text-to-speech: English (Kokoro-82M, ~70 voices), Russian (Piper ru-denis), plus any macOS system voice via --voice macos-*.
Performance
- ASR: ~19× faster than OpenAI Whisper on Apple Silicon (CoreML via FluidAudio), ~2.5× on CPU (ONNX via
ort). - TTS: sub-second latency for short utterances on Apple Silicon.
Why local
No API keys to manage. No per-minute billing. Voice data never leaves the machine — important for regulated industries, personal messaging, and anything that shouldn't be in a third-party log.
Links
Comments
Loading comments...
