---
slug: voice
kind: recipe
status: ran
sh: https://insidethemachine.ai/install/voice.sh
ps1: null
json: https://insidethemachine.ai/install/voice.json
page: https://insidethemachine.ai/do/voice
---

# Install: Speech to text

Accurate speech-to-text for meetings, interviews and voice notes, without sending audio anywhere.

**Run status: Checked: the commands were run end to end by us.** Run end to end by hand on an Apple M4 Mac with 16 GB on 2026-10-15.

**This script:** The wrapper scripts are generated from the site data. Every .sh passed bash -n and shellcheck and ran in plan mode on Linux (Debian 13). Every .ps1 passed the PowerShell parser and chat.ps1 ran in plan, verify and rollback mode under PowerShell 7 on Linux with Windows calls mocked. Not run on macOS or real Windows.

## One command

```bash
curl -fsSL https://insidethemachine.ai/install/voice.sh | bash
```

Actions: `| bash -s -- plan` (print only), `verify`, `rollback --yes`. Env: ITM_RAM. Read the script first: `curl -fsSL https://insidethemachine.ai/install/voice.sh | less`.

Lines marked YOU RUN are not run by the script (servers, interactive apps, your own files). The script prints them at the end, in order.

## Steps

### macOS and Linux (bash; brew lines are macOS only)

Install:

1. **Install the build tools**
   - run (macOS only): `xcode-select --install`
   - run (macOS only): `brew install cmake ffmpeg`
2. **Get whisper.cpp and a voice model**
   - run: `git clone https://github.com/ggml-org/whisper.cpp.git && cd whisper.cpp`
   - run: `sh ./models/download-ggml-model.sh $WHISPER`
3. **Build it**
   - run: `cmake -B build && cmake --build build -j --config Release`
4. **Test it**
   - run: `./build/bin/whisper-cli -m models/ggml-$WHISPER.bin -f samples/jfk.wav`
5. **Use your own audio**
   - YOU RUN (needs your own file, folder or model name): `ffmpeg -i input.m4a -ar 16000 -ac 1 -c:a pcm_s16le output.wav`
   - YOU RUN (needs your own file, folder or model name): `./build/bin/whisper-cli -m models/ggml-$WHISPER.bin -f output.wav -otxt`

Verify:

- `test -x whisper.cpp/build/bin/whisper-cli` → expect: whisper-cli is built
- `whisper.cpp/build/bin/whisper-cli -m whisper.cpp/models/ggml-$WHISPER.bin -f whisper.cpp/samples/jfk.wav` → expect: the words of the sample speech (“ask not what your country can do for you…”)

Rollback:

- run: `rm -rf whisper.cpp`
- run (macOS only): `brew uninstall cmake`
