# Ollama adds local text-to-speech, 100x faster than real time on Apple Silicon

> Source: <https://ollama.com/blog/speech-models>
> Published: 2026-10-26 09:34:16+00:00

# Speech models in Ollama

## October 24, 2026

Ollama can now turn text into speech. The first speech model is [Phonon](https://ollama.com/library/phonon), a family of small, state-of-the-art text-to-speech models from [Gradium](https://gradium.ai). Speech models are now available for macOS, with Windows and Linux support coming soon.

```
ollama run phonon "Hello from Ollama."
```

## Performance on Apple Silicon

On Apple Silicon, Ollama is accelerated by MLX, Apple’s machine learning framework, for state-of-the-art throughput. On a MacBook Pro with M5 Max, Ollama was 35% faster than the next fastest engine, Gradium’s own runtime.

Ollama’s implementation is just as accurate, matching the word error rate of the reference implementation in Hugging Face Transformers:

## Voices

Choose a voice with `--voice`, or `voice` in the API:

```
ollama run phonon --voice Hadley "Hello from Ollama."
```

The voices come from Gradium’s [voice catalog](https://huggingface.co/gradium/phonon-voices). `ollama show phonon` lists them all.

## Languages

| Model | Language | 
|---|---|
| `phonon` | English | 
| `phonon:40m-fr` | French | 
| `phonon:40m-de` | German | 
| `phonon:40m-es` | Spanish | 
| `phonon:40m-pt` | Portuguese | 
| `phonon:40m-multilingual` | All five | 

`phonon` is released under Apache 2.0. The 40M models are released under CC BY-NC 4.0, which limits them to noncommercial use.

## Read replies aloud

Pipe a chat model’s reply into Phonon. Text is spoken as it arrives, so the reply starts playing after its first sentence:

```
ollama run gemma4 --hidethinking "Tell me a fun fact about owls in two sentences." | ollama run phonon
```

Run `ollama run phonon` with no text to type lines at a prompt, or redirect the output to save a WAV file:

```
ollama run phonon "Save this to a file." > speech.wav
```

## API

Phonon works with the OpenAI-compatible `/v1/audio/speech` endpoint, so existing code that uses the OpenAI SDK only needs a new base URL.

```
curl http://localhost:11434/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{
    "model": "phonon",
    "voice": "Zoey",
    "input": "Hello from Ollama."
  }' --output speech.wav
python
from openai import OpenAI

client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

with client.audio.speech.with_streaming_response.create(
    model="phonon",
    voice="Zoey",
    input="Hello from Ollama.",
    response_format="wav",
) as response:
    response.stream_to_file("speech.wav")
python
import fs from "node:fs"
import OpenAI from "openai"

const openai = new OpenAI({ baseURL: "http://localhost:11434/v1", apiKey: "ollama" })

const response = await openai.audio.speech.create({
  model: "phonon",
  voice: "Zoey",
  input: "Hello from Ollama.",
  response_format: "wav",
})
fs.writeFileSync("speech.wav", Buffer.from(await response.arrayBuffer()))
```

The response streams while the audio is generated, so it can play right away:

```
curl -sN http://localhost:11434/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{"model": "phonon", "input": "Playback starts right away."}' \
  | ffplay -nodisp -autoexit -loglevel error -
```

Audio is 24 kHz mono, returned as WAV by default or as raw 16-bit samples with `"response_format": "pcm"`.

## Get started

Speech models run on Apple Silicon Macs. [Download Ollama](https://ollama.com/download) 0.40.11 or later, then pull Phonon:

```
ollama pull phonon
```

For more information, see:
