Skip to content

voxr 0.4.0

Choose a tag to compare

@github-actions github-actions released this 11 Oct 01:30
· 6 commits to main since this release

Added

voxr

  • KokoroEngine::from_dir_on and VitsEngine::from_dir_on load an engine onto any numr runtime's device, such as CUDA.
  • load_vits_from_dir_on builds the VITS TtsBundle on any runtime's device.
  • KokoroEngine::synthesize_seeded and KokoroEngine::with_seed seed 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

  • KokoroSpeech passes the take's seed to Kokoro. A re-roll at a new seed now gives a new Kokoro take.

Changed

voxr

  • KokoroEngine<R> and VitsEngine<R> are generic over the runtime, with CpuRuntime as the default. from_dir still loads on the CPU, so existing call sites compile unchanged. KokoroEngine's model, client and device fields take R's types.
  • KokoroEngine holds a private seed field, so a struct literal no longer builds one. Use from_dir or from_dir_on.
  • TtsEngine holds 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> and VitsSpeech<'a, R> are generic over the runtime, with CpuRuntime as the default.
  • The kokoro and vits features enable the numr and boostr dependencies, whose types the adapters' bounds name.
  • KokoroSpeech refuses a seed that is not a whole number from 0 to 2^53 - 1, as VitsSpeech does.

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 Tensor and 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