Voice in KoboldCpp: speech-to-text and text-to-speech
For voice input, load a Whisper model (Audio tab or --whispermodel); for spoken replies, load a TTS model such as Kokoro (--ttsmodel, plus a WavTokenizer file for some models). Then turn on voice input and speech in KoboldAI Lite's settings. The microphone only works when Lite is opened as localhost or over HTTPS, so use the tunnel or --ssl on a phone. Whisper tiny.en transcribed our test sentence in 2 seconds on a CPU.
Checked against KoboldCpp 1.124.2 · updated 13 Nov 2026
- lab-lnx: Linux test VM · 4 vCPU · 15 GB · no GPU
- gha-w25: Windows Server 2025 test machine · 4 vCPU · 16 GB · no GPU
- gha-w22: Windows Server 2022 test machine · 4 vCPU · 16 GB · no GPU
- gha-u24: Ubuntu 24.04 test machine · 4 vCPU · 16 GB · no GPU
On this page
Speech-to-text with Whisper
Download a Whisper ggml file
A.binsuch astiny.en; larger ones are more accurate and slower.Audio tab, then the transcription field
Or start with Whisper .bin model for speech-to-text, or a SheetSage2 GGUF for music-to-ABC transcription.Default Launcher Audio tab: Audio Transcription (Whisper .bin or SheetSage2 .gguf)Since v1.67All details.Launch and check
Use the microphone in Lite
In Lite, Settings, Media tab, “Speech to text” offers Off, Detect Voice, Push-To-Talk and Toggle-To-Talk, and “Text to speech” offers Off, Browser Inbuilt TTS, KoboldCpp TTS API, XTTS API Server, AllTalk API Server and OpenAI-Compat. API Server, with a Test button F104. We tried both in Chrome against a real KoboldCpp F105. With “KoboldCpp TTS API” chosen, the Test button sent one POST /api/extra/tts with the text and the voice kobo. With “Detect Voice” chosen and a fake microphone playing a recording, Lite posted the clips to /api/extra/transcribe, turned each transcript into a user turn on its own and got a reply to each, with no click: you speak, it sends. The clips were cut mid-sentence and Whisper tiny.en misheard some words (“What you all my fellow America?”), so a clear voice and a bigger Whisper model help. We did not test Push-To-Talk, Toggle-To-Talk or a real microphone.
The browser rule is the part to know: a browser lets a page use the microphone only over https or on localhost. On http://<PC address>:5001 the microphone is blocked (users report “Cannot initialize microphone”). Fixes: open Lite on the PC itself, or use Downloads cloudflared and opens a trycloudflare.com tunnel so the instance is reachable from the internet without port forwarding.Default falseLauncher Quick Launch tab: Remote TunnelSince v1.48All details or Serves HTTPS using an unencrypted certificate and key PEM file.Default noneSince v1.53All details. We tested that --ssl serves https with a self-signed certificate (remote access); we did not try a phone.
KoboldCpp TTS: text-to-speech
| Kokoro | One GGUF | Works on CPU, slower than real time <EvidenceBadge id="F90" /> |
| OuteTTS (since 1.82) | TTS GGUF plus a WavTokenizer file | Untested; the missing-file warning is reproduced below |
| Qwen3-TTS (1.109, 1.110) | TTS GGUF plus WavTokenizer | Untested |
| Parler, Dia and others | See the release notes | Untested |
What we measured with Kokoro
| Short | 12 | 1.48 | 1.28 |
| Medium | 70 | 4.83 | 1.20 |
| Long | 182 | 10.93 | 1.19 |
Below 1.0 would be faster than real time. On this CPU speech takes about 1.2 times as long as it lasts, so a GPU (Runs the TTS model on the GPU.Default falseLauncher Audio tab: TTS Use GPUSince v1.82All details) matters for live replies (not measured by us). Output is a 24 kHz mono WAV; response_format mp3 returned MP3 in 2.3 s F90.
Set up TTS
Audio tab: TTS Model, WavTokenizer Model if the model needs one, TTS Use GPU, and TTS Max Tokens (Maximum audio tokens generated per TTS request (default 4096).Default 4096Launcher Audio tab: TTS Threads / TTS Max TokensSince v1.83All details, default 4096). In Lite, Settings, Media, set Text to speech to KoboldCpp TTS API and press Test F105.
Voices and voice cloning
/v1/audio/voices listed seven voices for Kokoro: kobo, cheery, sleepy, shouty, chatty, random and instruct F90. Upstream describes cloning from reference samples in a folder given with Folder of reference voice samples for TTS voice cloning.Default Launcher Audio tab: TTS Voices DirSince v1.109All details (1.109) for some models. untested Clone only your own voice or one you have permission to use.
Speech endpoints for apps
| Main parameters | ||||||
|---|---|---|---|---|---|---|
| POST | /v1/audio/transcriptions | Whisper | OpenAI-style speech-to-text upload (needs --whispermodel); the wiki notes WAV input is safest. | file model prompt language | yes | untested |
| POST | /v1/audio/speech | TTS | OpenAI-style text-to-speech (needs --ttsmodel); wav or mp3 output. | model input voice speaker_wav speaker_json response_format | yes | untested |
| GET | /v1/audio/voices | TTS | Lists voices available for the speech endpoint. | yes | untested | |
| POST | /api/extra/transcribe | Whisper | Native speech-to-text (base64 audio or file). | audio_data prompt langcode language suppress_non_speech file | yes | untested |
| POST | /api/extra/music/transcribe | Whisper | Transcribes music/audio to text and ABC notation (SheetSage2 model). | audio_data prompt langcode language suppress_non_speech file | yes | untested |
| POST | /api/extra/tts | TTS | Native TTS; /tts_to_audio is the XTTS-compatible alias. | input voice speaker_wav speaker_json instructions language | yes | untested |
| GET | /api/extra/speakers_list | TTS | List of TTS speakers (XTTS-compatible). | yes | untested | |
| GET | /speakers | TTS | XTTS-compatible speaker list. | no | untested | |
| GET | /get_tts_settings | TTS | XTTS-compatible settings stub. | no | untested | |
| POST | /set_tts_settings | TTS | XTTS-compatible settings stub (accepts and ignores). | no | untested | |
| GET | /voice/check | TTS | AllTalk/VITS-style voice compatibility stubs (unverified exact client). | no | untested |
Tested with captured answers F90: /v1/audio/transcriptions (multipart file), /api/extra/transcribe (base64 audio_data), /v1/audio/speech, /api/extra/tts, /v1/audio/voices, the XTTS-style /tts_to_audio/, /speakers_list and /speakers: all answered 200. Send WAV: 16 kHz mono and 8 kHz stereo both worked.
SillyTavern voice
SillyTavern can use an OpenAI-style or XTTS-style speech provider; KoboldCpp answers both kinds of route. We did not run SillyTavern’s settings; see SillyTavern.
Music transcription
Upstream says --whispermodel also accepts a SheetSage2 model that turns music into ABC notation (1.124.2). untested See music.
When it does not work
| Transcription succeeds but the text is empty | The file is not WAV: we sent MP3-named random bytes and got status 200 with <code>{"text": ""}</code> <EvidenceBadge id="F90" /> | Convert to WAV, 16 kHz mono is safest. |
| <code>failed to open WAV file from stdin</code> | Users report an unsupported audio format | Send WAV. Not reproduced by us. |
| <code>Could not load TTS model!</code>, exit 3 | A wrong file, or a missing WavTokenizer <EvidenceBadge id="F90" /> | Load the TTS file and its WavTokenizer file together. |
| Microphone blocked | The page is not https or localhost | Use the PC itself, --remotetunnel or --ssl. |
| No sound | Users report: TTS not turned on in Lite, browser autoplay rules, or the wrong output device | Check Lite's speech setting and the browser's sound permission. Not reproduced by us. |
| Speech is slower than it plays | CPU speech ran at about 1.2 times its length <EvidenceBadge id="F90" /> | Use --ttsgpu on a GPU build. |
Frequently asked questions
How do I use TTS with KoboldCpp?
Load a TTS model with --ttsmodel (Audio tab). We tested Kokoro: it answered /v1/audio/speech with a 24 kHz WAV, 70 characters in 4.8 seconds on 4 CPU threads, and listed seven voices.
Which TTS model is best for KoboldCpp?
We ran only Kokoro. OuteTTS, Qwen3-TTS and others are listed upstream but untested here, so we name no best one.
Why does the microphone not work on my phone?
Browsers allow the microphone only on https or localhost. Opening Lite at http://<PC address>:5001 blocks it. Use the tunnel or --ssl. We tested --ssl serving https, not the phone.
Which Whisper model should I use?
tiny.en is small and fast: 2.0 seconds for 11 seconds of speech on a CPU, word for word on a clear recording. We did not compare it with larger models or other languages.
Can KoboldCpp clone a voice?
Upstream describes cloning from reference samples in a folder (--ttsdir) for some models. We did not test it. Clone only your own voice or one you have permission to use.
What audio format does transcription accept?
Send WAV. It accepted 16 kHz mono and 8 kHz stereo WAV. A non-WAV file returned success with an empty transcript, not an error.
Can SillyTavern use KoboldCpp for TTS?
KoboldCpp answers OpenAI-style and XTTS-style speech routes, which we called directly. We did not test SillyTavern's own settings.