Kokoro-82M · loads on first use

Turn text
into voiceover

Eight open voices with natural pacing, generated on your own device. Pair a voice with a sound bed and drop both under a clip from Video.

Narrate any script

Paste up to 2,000 characters. Long scripts are split on sentences and stitched with natural pauses.

Score the scene

Rain, wind, ocean, city night, campfire, forest and room tone, rendered from scratch in seconds.

Voices

Tap to choose · ▶ to hear a line

History

Nothing yet. Generate a voice or render a bed and it lands here, saved in this browser.

How it works

Voiceover in your browser uses Kokoro-82M, an 82-million-parameter open-weight text-to-speech model (Apache-2.0), running locally through kokoro-js. Text is split into sentences, spoken chunk by chunk and joined into one 24 kHz WAV. Nothing leaves your device.

For Spanish, French, Chinese, Japanese and Korean, pick MeloTTS (MIT). Your script is sent to Cloudflare Workers AI in chunks under 1,000 characters, and the audio comes back and is joined here into one 44.1 kHz WAV. Nothing is stored there.

Captions use Whisper large-v3-turbo (MIT) on Cloudflare Workers AI. Your file is decoded in this tab and only the audio is sent, as 16 kHz mono WAV, when you press Transcribe. Files over about nine minutes go in parts of up to eight minutes, and the timestamps are joined back together. It is not stored.

Sound beds are built from noise, filters and envelopes in an OfflineAudioContext and exported as 48 kHz stereo WAV. They are made in this tab; nothing is uploaded.

Extract audio decodes your file in this tab with the browser's own decoder, at the file's own sample rate. A background worker trims, fades and encodes it. Even out loudness measures the whole file (ITU-R BS.1770), sets it to about −14 LUFS and holds peaks under −1 dB with a look-ahead limiter. Nothing is uploaded.

MP3 uses LAME 3.100 (LGPL), built for browsers by wasm-media-encoders (MIT). It is loaded unmodified from jsDelivr and checked against a fixed hash before it runs. M4A uses your browser's AAC encoder and mp4-muxer (MIT). WAV is 16-bit PCM. Use it with files you have the rights to; for your own YouTube uploads, download them from YouTube Studio first.

Master measures your mix in this tab (ITU-R BS.1770 loudness, loudness range, 4x-oversampled true peak, tone against a typical mastered mix, stereo width, clipping), then runs a fixed chain: a 25 Hz high-pass and 19.5 kHz low-pass, a gentle tilt EQ for the character you pick, slow glue compression, optional width with the bass kept in the middle, and a look-ahead limiter that watches the peaks between samples. The gain is corrected until the result measures on your destination's loudness, and the exported file itself is measured again. Nothing is uploaded.

Free tools on Cloudflare have a daily cap so they stay at $0. If you hit it, try again after midnight UTC, or use Kokoro, which has no limit.

Models & limits

Voice: Kokoro-82M (Apache-2.0), in your browser, or MeloTTS (MIT) on Cloudflare Workers AI. Captions: Whisper large-v3-turbo (MIT) on Cloudflare Workers AI. Sound beds: Chucksi synth (MIT), in your browser. Extract audio: LAME 3.100 MP3 encoder (LGPL) via wasm-media-encoders 0.7.0 (MIT), or your browser's AAC encoder with mp4-muxer (MIT), in your browser. Master: Chucksi mastering chain (MIT), in your browser. Cost: $0.