---
title: "Transcribe and dictate"
description: "Transcribe audio files, dictate live from the microphone, and serve the audio API with Phonon-1."
canonical: "https://www.fermionresearch.com/docs/speech/"
source: "Fermion Research"
---

Docs / Speech

# Transcribe and dictate

Transcribe audio files, dictate live from the microphone, and serve the audio API with Phonon-1.

## Install

```text
pip install fermion-research
pip install mlx mlx-audio mlx-lm soundfile scipy zstandard
```

Speech runs on the MLX audio stack, installed separately from the CLI. The second line is needed once, on Apple silicon; if anything is missing, `fermion transcribe` prints the exact command. On NVIDIA GPUs, use the Docker image from the [GitHub repository](https://github.com/fermionresearch/phonon) instead.

## File transcription

```text
fermion transcribe meeting.wav
fermion transcribe clip.flac --json
```

`transcribe` turns an audio file into a line of text. It reads anything libsndfile decodes: wav, flac, ogg, and aiff at any sample rate or channel count, resampled to 16 kHz mono. mp3 and m4a are refused with the exact ffmpeg conversion command to run first.

Standard output carries only the transcript, so `fermion transcribe clip.wav > out.txt` writes exactly the words. Progress, warnings, and timings go to standard error. `--json` returns a JSON object with the text, the model id, and the decode time. There are no sampler flags: transcription decodes greedily, and punctuation and capitalization come from the model itself.

## Live dictation

```text
fermion listen
fermion listen > note.txt
fermion listen --wav clip.wav
```

`listen` transcribes the microphone live. The current hypothesis updates on one terminal line, finished segments print permanently, and Ctrl-C stops the session and prints the full transcript to standard output.`--wav` streams a file through the identical live path, paced to real time.

- The first hypothesis appears after about 0.35 s of speech and updates about twice per second.
- A segment finalizes after about 0.7 s of silence, or at the 30 s segment cap.
- On macOS, grant your terminal microphone access under System Settings, Privacy & Security, Microphone.

## Transcription server

```text
fermion serve --model phonon
```

With a speech model, `serve` mounts the audio routes and answers OpenAI audio clients unmodified against`base_url=http://127.0.0.1:8000/v1`. The chat routes are not mounted; a request to one returns a 404 naming the endpoint that exists.

| Method | Route | Purpose |
| --- | --- | --- |
| POST | /v1/audio/transcriptions | One-shot file transcription. |
| GET | /v1/audio/stream | Live transcription over WebSocket. |
| GET | /v1/models | The served model id. |
| GET | /health | Model, decode configuration, and request counters. |

```text
curl -s http://127.0.0.1:8000/v1/audio/transcriptions \
  -F file=@clip.wav
# {"text": "The transcript."}
```

`response_format` selects `json` (default), `text`, or `verbose_json`. The`model` form field is checked: a name this process does not serve returns 404 rather than a transcript from a different model. Request bodies are capped at 32 MB; the model handles utterances up to 30 s and decodes longer audio in chunks. `--api-key` requires a bearer token on every /v1 route. The Docker image serves this same API on an NVIDIA GPU.

[Streaming API](https://www.fermionresearch.com/docs/speech-streaming/) covers the live WebSocket route: the opening frame, audio formats, server frames, and session limits.

## Model selection

Phonon-1 is the default and the more accurate model. Phonon-1 Micro is the smallest build of the family and trades accuracy for a smaller download.

| Model | Download | On disk | LibriSpeech test-clean | Aliases |
| --- | --- | --- | --- | --- |
| [Phonon-1](https://huggingface.co/FermionResearch/Phonon-1) | 415 MB | 455 MB | 2.640% | phonon, phonon-1, stt, asr |
| [Phonon-1-Micro](https://huggingface.co/FermionResearch/Phonon-1-Micro) | 285 MB | 331 MB | 3.002% | phonon-1-micro, micro |

```text
fermion transcribe clip.wav --model micro
fermion listen --model FermionResearch/Phonon-1-Micro
```

Both models transcribe English from 16 kHz audio, were trained at 2.4 bits per weight from the start, and are open under Apache 2.0. `fermion models` lists every published model and marks the ones already on your machine. [Speech models](https://www.fermionresearch.com/docs/speech-models/) lists every Phonon release with its measurements.

Source: [https://www.fermionresearch.com/docs/speech/](https://www.fermionresearch.com/docs/speech/)
