Nightingale — voice audition

gpt-realtime-mini · 10 voices · captured 2026-08-06 · 6.8¢

Every voice below says the same sentence, forced verbatim, so what you are comparing is timbre and not phrasing. All of them were captured through the real call path at 8 kHz — the bandwidth an actual caller gets.

Northgate Family Dental — the office is closed right now, but I can take your details so the team can call you back first thing in the morning. Let me read that number back to you: six oh four, five five five, zero one eight eight. Did I get that right?

How to judge these

  1. Use the worst speakers you own. Laptop speakers or a phone, not headphones. A voice that only works on good monitors is the wrong voice.
  2. Listen to the digits, not the greeting. Every voice sounds plausible saying hello. The read-back is where narrowband does its damage — if you cannot cleanly separate five from nine, reject it.
  3. Judge on the second listen. The first pass tells you what is novel; the second tells you what is grating. A caller at 2am in pain is not hearing this for novelty.
  4. Then check it against the clips. The pre-rendered consent and 911 lines are ash, deliberately a different voice — the caller should be able to hear that something changed. Pick an agent voice that stays clearly distinct from it.

The ten voices, at 8 kHz

marin deployed now 12.9s

Trained for the Realtime models. Selected 2026-08-06.

cedar 13.3s

Trained for the Realtime models. The previous default.

sage 13.2s

Carried over from the text-to-speech set.

verse 14.3s

Carried over from the text-to-speech set.

ballad 13.9s

Carried over from the text-to-speech set.

coral 13.2s

Carried over from the text-to-speech set.

ash 14.9s

Carried over. Also the voice of the pre-rendered clips.

alloy 12.8s

Carried over from the text-to-speech set.

echo 13.6s

Carried over from the text-to-speech set.

shimmer 13.6s

Carried over from the text-to-speech set.

Is it the voice, or the phone line?

The two takes below are the same voices again with the codec removed — full 24 kHz. This is the diagnostic that matters. If these sound good and the 8 kHz versions above do not, no voice change will fix it — that gap is the telephony path doing precisely what it was built to do, and the only real levers left are the full gpt-realtime model or accepting it as the point of the demo.

marin deployed now 11.8s

Trained for the Realtime models. Selected 2026-08-06.

cedar 12.7s

Trained for the Realtime models. The previous default.

Changing it

The voice is now read from the environment and validated at boot, so switching it is a config change and a restart — not a rebuild. An invalid name stops the service at startup rather than failing on a live call.

sudo sed -i 's/^NIGHTINGALE_VOICE=.*/NIGHTINGALE_VOICE=<voice>/' /etc/personal/nightingale.env sudo systemctl restart personal-nightingale sudo journalctl -u personal-nightingale -n 3 # confirm the voice it booted with