CHIMERA

A physical-modeling voice synthesizer in the browser. Every sound comes from a simulated airway (lungs, vocal folds or syrinx, a branched vocal tract, lips, nose), not from samples. The engine is Rust, compiled to WebAssembly for an AudioWorklet; the same code runs natively for tests and the chimera CLI.

What it does

  • Play: drag the tongue, lips and jaw in a live cutaway of the head; vowel pad, encoders, computer keyboard and Web MIDI.
  • Speak: English text (CMUdict with a letter-to-sound fallback) or IPA, turned into gestures and prosody, with the gestural score and a consonant chart on screen.
  • Sing: piano roll with lyrics per note; consonants land before the beat.
  • Beatbox: pads and a step sequencer, every drum an articulatory gesture.
  • Bestiary: songbird (two-voice syrinx), seal, alligator and elephant.
  • Duet (?show=<id>): two 3D heads replay a pre-rendered song.

Male, female and child bodies blend continuously. Everything on screen animates from live engine state: pressure in the airway, airflow, the vocal folds, spectra and formants.

Run it

Needs Rust with the wasm32-unknown-unknown target, and Bun.

bun install
bun run dev        # builds the wasm, then Vite on 127.0.0.1:5317
bun run test       # wasm build, cargo test --workspace, bun test tests

The AudioWorklet needs a secure context, so open it on localhost or over HTTPS (for example tailscale serve). Vercel builds it with vercel.json.

Offline renders and measurement:

cargo run --release -p chimera-cli -- render speech|text|song|notes|beatbox|creature|vowels …
cargo run --release -p chimera-cli -- diagnose       # nasal leakage, formants, bandwidths, pitch
cargo run --release -p chimera-cli -- compare csd    # against a real singer (docs/csd-comparison.md)
bun tools/spectrogram.ts in.wav out.png

Docs

Agents: see AGENTS.md.

License

MIT. Bundled third-party files keep their own licenses: the CMU Pronouncing Dictionary (public/data/CMUDICT-LICENSE.txt) and the fonts (public/fonts/).