Dallas Read

Epic Creek Adventures: audio tools

The show is published at dallasread.com/epiccreekadventures. The planning notes (story options, each story’s full arc) are in _epic-creek/show-bible.html, which the site doesn’t publish because it spoils the endings.

Each episode lives at epiccreekadventures/<story>/<episode>/, with three files:

Producing an episode

The voices come from Kokoro, an open-weight text-to-speech model that runs locally. The sound effects and music are synthesized from scratch in sfx.py, so there are no sound files to license.

python3 -m venv venv && ./venv/bin/pip install kokoro-onnx soundfile numpy scipy
curl -LO https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.0/kokoro-v1.0.onnx
curl -LO https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.0/voices-v1.0.bin

E=epiccreekadventures/twelve-seconds-in-the-sky/episode-1
./venv/bin/python scripts/epic-creek/produce.py $E/script.txt $E/episode-1.mp3 \
  --model kokoro-v1.0.onnx --voices voices-v1.0.bin
python3 scripts/epic-creek/render_script.py $E/script.txt $E/index.html \
  --audio episode-1.mp3 --back ../../

produce.py also needs ffmpeg (with rubberband). Voices for each character are set in VOICES in produce.py; words the voice model mispronounces go in SAY.

Script format

= SCENE 1. PLACE. TIME.          starts a scene and stops the ambience
[SFX creek: description]         a sound effect, or an ambience bed (see BEDS in sfx.py)
[MUSIC theme: description]       a music cue (see MUSIC in sfx.py)
THEO (quietly): The line.        dialogue, with an optional direction

Directions change the delivery: shouting, quiet, thinking, telling the story, on the phone, muffled, into the mic.

Making Kokoro sound more natural

Kokoro has no children’s voices and reads every line at the same pace, so produce.py: