Repolode
nyosegawa

nyosegawa/speech.cpp

A C++ speech toolkit on ggml for text-to-speech, speech recognition and voice activity detection, running on Metal, Vulkan or CPU with an OpenAI-compatible server.

Open-source alternative to:OpenAI Whisper API

Stars
371
Forks
23
Open issues
12
Last commit
6 days ago

What is it?

speech.cpp provides a single `speech` command and a shared library, `libspeech`, with one C API for speech synthesis, speech recognition, voice activity detection and speaker diarization. It runs on the CPU, Metal and Vulkan through ggml, and each model is fetched by name as one GGUF file that includes its codec, so no Python or CUDA setup is needed.

The catalog covers Qwen3-TTS, Irodori-TTS, Drama 3 for synthesis, and Qwen3-ASR, ReazonSpeech, parakeet, Haas and Nemotron for recognition, with Silero VAD and Nemotron diarization for detection and speaker separation. The `speech serve` command exposes OpenAI's audio speech and transcription endpoints plus Realtime transcription over local HTTP, and `speech asr --live` transcribes microphone input as it is spoken.

For programs, `speech worker` serves a loaded model over JSON Lines on stdin and stdout, and the C API lets an application link the library directly. Installers are provided for macOS on Apple silicon, Windows x64 and Linux x86-64.

Key features

  • 01Text-to-speech with several model families and named voices.
  • 02Speech recognition with language detection, timestamps and speaker labels.
  • 03Live microphone transcription through `speech asr --live`.
  • 04OpenAI-compatible audio and Realtime transcription endpoints on localhost.
  • 05Runs on Metal, Vulkan or CPU without Python or CUDA.

Use cases

  • Adding local speech output or transcription to an app that uses OpenAI's audio API.
  • Building a voice assistant that transcribes microphone input in real time.
  • Transcribing Japanese or multilingual recordings offline on a personal computer.
  • Embedding speech models in another program through the C API or JSON Lines worker.

Quick start

  1. 1

    Install speech with the official install script from the README

  2. 2

    Synthesize a sentence with Qwen3-TTS (the model is fetched the first time)

    speech tts qwen3-tts-0.6b --voice ryan -o hello.wav "Hello. It will be sunny in Tokyo tomorrow."
  3. 3

    Transcribe the WAVE file with Qwen3-ASR

    speech asr qwen3-asr-0.6b hello.wav
  4. 4

    Open the local web page to pick models, speak and transcribe

    speech serve --open

Things to know

  • Install scripts are available only for macOS on Apple silicon, Linux on x86-64 and Windows x64; Intel Macs require building from source.
  • The server listens on 127.0.0.1 and has no authentication.
  • Some models are very large, such as drama-3 at 20.8 GB and nemotron-3.5-transcribe at 19.0 GB.

In collections

Topics

FAQ

What is speech.cpp?
A C++ speech toolkit on ggml for text-to-speech, speech recognition and voice activity detection, running on Metal, Vulkan or CPU with an OpenAI-compatible server. speech.cpp provides a single `speech` command and a shared library, `libspeech`, with one C API for speech synthesis, speech recognition, voice activity detection and speaker diarization. It runs on the CPU, Metal and Vulkan through ggml, and each model is fetched by name as one GGUF file that includes its codec, so no Python or CUDA setup is needed.
Is speech.cpp free to use? What license does it have?
speech.cpp is open source under the MIT license. Check the license terms before using it in commercial products.
Is speech.cpp still maintained?
Actively maintained. The last commit to speech.cpp was on Nov 1, 2026.
What can I use speech.cpp for?
Adding local speech output or transcription to an app that uses OpenAI's audio API. Building a voice assistant that transcribes microphone input in real time. Transcribing Japanese or multilingual recordings offline on a personal computer. Embedding speech models in another program through the C API or JSON Lines worker.
How do I install speech.cpp?
Install speech with the official install script from the README Synthesize a sentence with Qwen3-TTS (the model is fetched the first time): speech tts qwen3-tts-0.6b --voice ryan -o hello.wav "Hello. It will be sunny in Tokyo tomorrow." Transcribe the WAVE file with Qwen3-ASR: speech asr qwen3-asr-0.6b hello.wav Open the local web page to pick models, speak and transcribe: speech serve --open
Where can I get speech.cpp?
The source code and installation instructions are on GitHub: https://github.com/nyosegawa/speech.cpp

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects