Kokoro speech
Kokoro 82M runs in a Node worker through onnxruntime-web. Inference stays local; no hosted speech API or key is required.
Choose a voice
await suitecut.narrate('The final report is ready.', {
voice: 'af_heart',
speed: 1,
caption: 'The final report is ready.',
})SuiteCut supports 28 English Kokoro voices. Useful starting points includeaf_heart, af_bella, am_michael, bf_emma, andbm_george.
Listen to voices
Heart
Voice af_heart. Speed 1. Bundled and available offline. Sample text: "This is the Heart voice, generated locally by SuiteCut."
Bella
Voice af_bella. Speed 1. Downloads once, then uses the local cache. Sample text: "This is the Bella voice, generated locally by SuiteCut."
await suitecut.narrate('The final report is ready.', {
voice: 'af_bella',
speed: 1,
})Bundled default
The npm package includes the quantized model, tokenizer, and af_heart voice. These files add about 89 MB to the installed package. The default voice works without a download or network request.
SUITECUT_MODEL_CACHE to choose another cache directory.Use a macOS system voice
macos-say is optional and only works on macOS with an installed system voice. Kokoro with af_heart remains the default on every platform.
await suitecut.narrate('Use the installed system voice.', {
provider: 'macos-say',
voice: 'Samantha',
})Timeline behavior
Narrations are serialized. SuiteCut pauses frame ingestion during synthesis, then records each caption for the measured audio duration. Model startup time does not appear in the video.
Other models
Install another model runtime as an audio plugin. SuiteCut keeps those dependencies outside the core package and loads the selected provider in the narration worker.