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
How we test
On this page
  1. Speech-to-text with Whisper
  2. Use the microphone in Lite
  3. KoboldCpp TTS: text-to-speech
  4. What we measured with Kokoro
  5. Set up TTS
  6. Voices and voice cloning
  7. Speech endpoints for apps
  8. SillyTavern voice
  9. Music transcription
  10. When it does not work

Speech-to-text with Whisper

  1. Download a Whisper ggml file

    A .bin such as tiny.en; larger ones are more accurate and slower.
  2. Audio tab, then the transcription field

    Or start with .
  3. Launch and check

    /api/extra/version must say "transcribe": true F27.

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.

Lite settings, Media tab: image backend (found the loaded image model by itself), image options and text to speech.gha-u24-lite-settings-media-01 · gha-u24 · KoboldCpp 1.124.2 · 14 Nov 2026
Lite Settings Media tab with the KCPP, Forge, A1111 image backend, the sdxs model, step count, CFG scale and text to speech
Lite after Detect Voice: spoken phrases appear as user turns and get replies.gha-u24-lite-stt-result-01 · gha-u24 · KoboldCpp 1.124.2 · 14 Nov 2026
Lite chat with spoken phrases transcribed into user turns, each followed by a model reply, and a microphone button lit

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 or . We tested that --ssl serves https with a self-signed certificate (remote access); we did not try a phone.

KoboldCpp TTS: text-to-speech

TTS models named upstream
KokoroOne GGUFWorks on CPU, slower than real time <EvidenceBadge id="F90" />
OuteTTS (since 1.82)TTS GGUF plus a WavTokenizer fileUntested; the missing-file warning is reproduced below
Qwen3-TTS (1.109, 1.110)TTS GGUF plus WavTokenizerUntested
Parler, Dia and othersSee the release notesUntested

What we measured with Kokoro

Kokoro Q4, voice kobo, 4 CPU threads, KoboldCpp 1.124.2
Short121.481.28
Medium704.831.20
Long18210.931.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 () 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 (, default 4096). In Lite, Settings, Media, set Text to speech to KoboldCpp TTS API and press Test F105.

Lite Media tab with Text to speech set to KoboldCpp TTS API.gha-u24-lite-tts-settings-01 · gha-u24 · KoboldCpp 1.124.2 · 14 Nov 2026
Lite Media settings with Text to speech set to KoboldCpp TTS API, with voice choices and a Test button

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 (1.109) for some models. untested Clone only your own voice or one you have permission to use.

Speech endpoints for apps

KoboldCpp API routes
Main parameters
POST/v1/audio/transcriptions
also /audio/transcriptions
WhisperOpenAI-style speech-to-text upload (needs --whispermodel); the wiki notes WAV input is safest.file model prompt languageyesuntested
POST/v1/audio/speech
also /audio/speech
TTSOpenAI-style text-to-speech (needs --ttsmodel); wav or mp3 output.model input voice speaker_wav speaker_json response_formatyesuntested
GET/v1/audio/voices
also /audio/voices
TTSLists voices available for the speech endpoint.–yesuntested
POST/api/extra/transcribeWhisperNative speech-to-text (base64 audio or file).audio_data prompt langcode language suppress_non_speech fileyesuntested
POST/api/extra/music/transcribeWhisperTranscribes music/audio to text and ABC notation (SheetSage2 model).audio_data prompt langcode language suppress_non_speech fileyesuntested
POST/api/extra/tts
also /tts_to_audio
TTSNative TTS; /tts_to_audio is the XTTS-compatible alias.input voice speaker_wav speaker_json instructions languageyesuntested
GET/api/extra/speakers_list
also /speakers_list
TTSList of TTS speakers (XTTS-compatible).–yesuntested
GET/speakersTTSXTTS-compatible speaker list.–nountested
GET/get_tts_settingsTTSXTTS-compatible settings stub.–nountested
POST/set_tts_settingsTTSXTTS-compatible settings stub (accepts and ignores).–nountested
GET/voice/check
also /voice/speakers, /voice/vits
TTSAllTalk/VITS-style voice compatibility stubs (unverified exact client).–nountested

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

Voice problems
Transcription succeeds but the text is emptyThe 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 formatSend WAV. Not reproduced by us.
<code>Could not load TTS model!</code>, exit 3A wrong file, or a missing WavTokenizer <EvidenceBadge id="F90" />Load the TTS file and its WavTokenizer file together.
Microphone blockedThe page is not https or localhostUse the PC itself, --remotetunnel or --ssl.
No soundUsers report: TTS not turned on in Lite, browser autoplay rules, or the wrong output deviceCheck Lite's speech setting and the browser's sound permission. Not reproduced by us.
Speech is slower than it playsCPU 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.