Repository navigation
voxr 0.4.0
Added
voxr
KokoroEngine::from_dir_onandVitsEngine::from_dir_onload an engine onto any numr runtime's device, such as CUDA.load_vits_from_dir_onbuilds the VITSTtsBundleon any runtime's device.KokoroEngine::synthesize_seededandKokoroEngine::with_seedseed Kokoro's harmonic source. The same text, voice, speed and seed give the same samples on one device. CPU and GPU run separate PRNGs, so one seed gives different samples on each.
voxr-narrate
KokoroSpeechpasses the take's seed to Kokoro. A re-roll at a new seed now gives a new Kokoro take.
Changed
voxr
KokoroEngine<R>andVitsEngine<R>are generic over the runtime, withCpuRuntimeas the default.from_dirstill loads on the CPU, so existing call sites compile unchanged.KokoroEngine'smodel,clientanddevicefields takeR's types.KokoroEngineholds a private seed field, so a struct literal no longer builds one. Usefrom_dirorfrom_dir_on.TtsEngineholds for both engines on every runtime whose client covers the model's ops.- A seeded VITS take reproduces on one device only. CPU and GPU draw different noise from one seed.
voxr-narrate
KokoroSpeech<'a, R>andVitsSpeech<'a, R>are generic over the runtime, withCpuRuntimeas the default.- The
kokoroandvitsfeatures enable thenumrandboostrdependencies, whose types the adapters' bounds name. KokoroSpeechrefuses a seed that is not a whole number from 0 to 2^53 - 1, asVitsSpeechdoes.
Dependencies
- voxr and voxr-narrate require boostr 0.6 and numr 0.11. boostr 0.6 runs Kokoro on any runtime, and numr 0.11 makes the inverse STFT give the same samples on every GPU run. The
Tensorand runtime types voxr passes through come from these versions, so a caller that hands voxr a tensor must use the same ones.
Full diff: v0.3.0...v0.4.0