Skip to main content

sonic-forge

Local speech, narration with frame-accurate timings, and music made from code, in one CLI.

  • narrate: a script becomes one WAV plus timing.json, which gives the start and end of every paragraph and pause. You cut visuals (Remotion, DaVinci, ffmpeg) to the real voice instead of guessing. It is seedable, so the same input and seed give the same WAV.
  • speak: text to speech with three engines: Kokoro-82M (local neural, any OS), Microsoft Edge neural voices (20+ languages) and macOS say.
  • Voice FX: helmet, intercom, droid, ringmod, bitcrush and vocoder.
  • Music: bytebeat genre templates, a YAML song format, 27 bundled tracks, and sung songs via ACE-Step.
  • Built for agents too: sonic-forge --skill hands any coding agent its skill card, and it installs itself for Claude Code, Codex and ~/.agents agents.

Install

pipx install "sonic-forge[kokoro]"     # the CLI plus the Kokoro neural voice engine (recommended)
pipx install sonic-forge               # CLI only: macOS say voices, music, FX
pipx install edge-tts                  # optional: 20+ languages via Microsoft Edge voices

narrate needs ffmpeg and ffprobe on PATH. Kokoro's weights (about 340 MB) download once, on first use, to ~/.starforge/models/kokoro.

Narration for video

sonic-forge narrate script.txt narration.wav --engine kokoro --voice am_fenrir --seed 608 --pause-mode explicit

script.txt has paragraphs separated by blank lines. To set a pause, put a marker on a line of its own:

Before you leave the room, say it back.

[pause: short]

Repeat the instruction in your own words.

[pause: xlong]

That is all it takes.
Marker Seconds
blank line (default) medium, 0.55–1.10
[pause: tiny] 0.15–0.40
[pause: short] 0.30–0.68
[pause: medium] 0.55–1.10
[pause: long] 0.95–1.60
[pause: xlong] 1.50–2.35
[pause: 1.2] 1.2 ± 15 %

Pauses are drawn from these pools so the voice doesn't sound metronomic, and --seed makes the draw reproducible.

Use --pause-mode explicit. With it, a marker sets the length of the gap it sits in. The default, legacy, keeps outputs from earlier versions byte-identical. In legacy mode every blank line also draws a medium pause and the longer one wins, so [pause: short] comes out medium.

Next to narration.wav you get narration.timing.json:

{
  "total_duration": 64.524, "fps": 30, "total_frames": 1935, "pause_mode": "explicit",
  "segments": [
    {"kind": "text",  "index": 0, "start": 0.0,  "end": 4.21, "duration": 4.21, "text": "Before you leave the room, say it back."},
    {"kind": "pause", "index": 1, "start": 4.21, "end": 4.62, "duration": 0.41}
  ]
}

More options:

  • --phonics phonics.json fixes pronunciation with whole-word replacements, longest key first, for example {"CI/CD": "C I C D"}.
  • --lang telugu picks an engine and voice for a language.
  • - reads the script from stdin.
  • --no-manifest skips the timing file.

Voices

sonic-forge voices                       # every engine
sonic-forge voices --engine kokoro       # 54 Kokoro voices, 28 of them English
sonic-forge voices --lang hindi          # who speaks Hindi
sonic-forge speak --text "Hello there" --voice onyx
sonic-forge speak --text "Welcome" --voice heart -o intro.wav --no-play
sonic-forge speak --text "Bonjour le monde" --lang french
Engine Runs Languages
kokoro locally on any OS (onnx) English (US, UK), es, fr, hi, it, ja, pt, zh
edge Microsoft cloud, free 20+, including Telugu, Tamil, Arabic, Korean and German
say macOS, offline the system voices
  • Kokoro short names: heart, bella, nova, sky (female); onyx, fenrir, adam, michael (male); emma, alice (British female); george, daniel (British male). Full IDs look like af_heart and am_fenrir.
  • Default engine: with no engine, voice or language given, a Mac uses say. Every other system uses Kokoro.

Voice effects

sonic-forge speak --text "Copy that" --voice fenrir --fx intercom
sonic-forge robotize voice.wav --fx helmet --fx droid

Music

sonic-forge                              # interactive launcher: browse and play the bundled tracks
sonic-forge beat ambient -d 60 -o bed.wav --no-play
sonic-forge templates                    # trance, lofi, cinematic, ambient, acid, hiphop, minimal, anthem, bluegrass
sonic-forge dsl                          # the YAML song format (also good for teaching an LLM to compose)
sonic-forge export acid-session          # copy a bundled song's source to remix
sonic-forge render song.yaml --play
sonic-forge sing "watching cranes move" --style bluegrass -o cranes.mp3
sonic-forge stop                         # silence everything that's playing

play and speak play audio aloud with macOS afplay; elsewhere, write a file with -o. ChucK tracks need chuck on PATH. sing downloads about 4 GB of ACE-Step models on first run.

For coding agents

sonic-forge --skill                      # print the stock SKILL.md
sonic-forge --skill install              # (re)install it for every coding agent on this machine, and show where
sonic-forge --skill list                 # Skillflag-compatible listing (github.com/osolmaz/skillflag) …
sonic-forge --skill export | npx skillflag install --agent claude   # … so its installer works too

Every sonic-forge run silently installs or refreshes the card where an agent is present:

  • ~/.claude/skills/sonic-forge/ (Claude Code)
  • ~/.codex/skills/sonic-forge/ (Codex)
  • ~/.agents/skills/sonic-forge/ (pi, omo, opencode, goose)

A copy you have edited is never overwritten. SONIC_FORGE_NO_SKILLS=1 turns the silent install off.

Python

from sonic_forge.narrate import narrate
narrate("script.txt", "narration.wav", engine="kokoro", voice="am_fenrir", seed=608, pause_mode="explicit")

sonic-forge --help and sonic-forge COMMAND --help are the full manual, with examples for every option.

Metadata

Release files for sonic-forge 0.10.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sonic-forge 0.10.1
File Size Uploaded
sonic_forge-0.10.1.tar.gz 102.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sonic-forge 0.10.1
File Interpreter ABI Platform
sonic_forge-0.10.1-py3-none-any.whl Python 3 none any Details

Total release size: 228.3 kB

Release files / sonic_forge-0.10.1.tar.gz

Download URL sonic_forge-0.10.1.tar.gz
Size 102.6 kB
Tags Source
SHA-256 checksum
How to use checksums
71789cf0b21a7bc7bc466f27f772dfba4d04ec7b63ae252e8c78c8ca684c1c0f
BLAKE2b-256 checksum
How to use checksums
b1765057d811f1d22f264240194c391c26b5a748c2efee2394d696faad116eb1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.7

Release files / sonic_forge-0.10.1-py3-none-any.whl

Download URL sonic_forge-0.10.1-py3-none-any.whl
Size 125.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
814525a123ac9b938101675b19be95688b8cc73164b86fcb707c814b08921979
BLAKE2b-256 checksum
How to use checksums
58a494b5a086c037eb5627226ac9ddb0d4f7b315c86ec97d88540a75f5111f7d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.10.1 This release

2 release files

0.9.0

2 release files

0.8.1

2 release files

0.7.7

2 release files

0.7.6

2 release files

0.7.5

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

1 release file

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page