Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add Kokoro English TTS model and update example usage #73

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,5 @@ vits-*
sherpa-onnx-kws-*
.tmp/
jniLibs/
build/
build/
kokoro-en*/
105 changes: 48 additions & 57 deletions crates/sherpa-rs-sys/checksum.txt
Original file line number Diff line number Diff line change
@@ -1,57 +1,48 @@
sherpa-onnx-1.10.36.aar dee07a1ecb0885c992458d2283a178c7a72e85fc7f310e149b1c5eb432b1d40b
sherpa-onnx-non-streaming-asr-x64-v1.10.36.exe d0b418048411c7c7256b39e509f8c7da5363842b3d636cc0a462e7b1ef88403b
sherpa-onnx-non-streaming-asr-x86-v1.10.36.exe 1fc3519aa1c3e2e90a1482d8da92ed8949e6746737305a4ea19cad727961a93c
sherpa-onnx-non-streaming-tts-x64-v1.10.36.exe 6d28bbe3076170cbfab526144ddee2f58e13de1a9b67938a470ad5a22e3ba95d
sherpa-onnx-non-streaming-tts-x86-v1.10.36.exe 4c1332184976820850fa5740589592ba59755cf6001f9ae17798a4d80987f196
sherpa-onnx-static-link-onnxruntime-1.10.36.aar a528f0fd03b20d6763e130b715acd9403f2ed09f0505face32233a88710a5177
sherpa-onnx-streaming-asr-x64-v1.10.36.exe 26002febd26f6db60eeaca3e7602c9871028fc91ca10b8514678afe675d6813b
sherpa-onnx-streaming-asr-x86-v1.10.36.exe 680a85aafaff9491da71d003277b88f24b760daeea396953a576f1d4b823d46b
sherpa-onnx-v1.10.36-android-static-link-onnxruntime.tar.bz2 32e4d19064194eca105291f46900e12ecae11c455ad47bbe63a06ca92d87d917
sherpa-onnx-v1.10.36-android.tar.bz2 358f4b9eeedfd8ac888962624167a61a9d94569fdd3a03e11cdad993e036869b
sherpa-onnx-v1.10.36-ios-no-tts.tar.bz2 3ea2a06889f0799a0fb3d4c0fe9f08c3eaca1576ec0cbbd1eff87d3881401353
sherpa-onnx-v1.10.36-ios.tar.bz2 da82f2bb62beac3f3c01e31cd2437e0d2dbc1a69bfadcde4b12aa36e81064c8d
sherpa-onnx-v1.10.36-java11.jar d95785df563d422f4e8efc77952f8543b8a1b1e4ee7c183512d84cdad78defa8
sherpa-onnx-v1.10.36-java16.jar 3d6ff52fae3c0a572d38781cccc1ca45e9a9342a6738ecd2e9c2676796d3c1d2
sherpa-onnx-v1.10.36-java17.jar 4816ada283edbeea279492a3c798de8d3bd36c800eddba3cd561a6ecb79529d6
sherpa-onnx-v1.10.36-java21.jar 8c6da77771b6d215220c7aacf48041c0b5b5848c5e2494cba20c1e87a7624e3e
sherpa-onnx-v1.10.36-java8.jar 02847a54ea4cd6728b6442838cbeea6ccda45f755cd4a4080916dbb0e35cb04b
sherpa-onnx-v1.10.36-linux-aarch64-jni.tar.bz2 327e0ebc96b701371d01ab0c3839eaff7cde55df5fcc74c6c675cab9911048a7
sherpa-onnx-v1.10.36-linux-riscv64-shared.tar.bz2 082d8a390ac43855344c5c95504df32ca235ecc1e9edbe5c1ac57efd5efd7785
sherpa-onnx-v1.10.36-linux-x64-gpu.tar.bz2 459daeef67b1a266ae5e65125e374d85af3bc50a1ea6ab935fbdc05c62ca4930
sherpa-onnx-v1.10.36-linux-x64-jni.tar.bz2 7e4fdf59331097e469183de661cebc14f4efb322b6746e2a5cbe591c063619b5
sherpa-onnx-v1.10.36-linux-x64-shared.tar.bz2 4f5d9707a3940a698bf8471fa3871cc419b55624c517e66066905a401e35cfe4
sherpa-onnx-v1.10.36-linux-x64-static.tar.bz2 726c6b64b2d8df8cac16ee3219410caaf1bc08d96f5d964ae72198c600f706a6
sherpa-onnx-v1.10.36-macos-xcframework-static.tar.bz2 19b4656d2026cf45499cc8fe7a1677746a27acad05aa3e983e49e165a5dadbc2
sherpa-onnx-v1.10.36-ohos-arm64-v8a.tar.bz2 b1399139d83e9e48ee35f8395e22b1b4cedc4b7ee9681b57809b3af54db86884
sherpa-onnx-v1.10.36-ohos-armeabi-v7a.tar.bz2 16a3ebb9ded3c9f886ef5388bbbb56ed356d00c7855477ee13fedb0be9d6b8ff
sherpa-onnx-v1.10.36-ohos-x86_64.tar.bz2 ee793dfc04c3699e63daeaf95515ff5132edc0fb8106c37cc07ec04ee2ba4b35
sherpa-onnx-v1.10.36-osx-arm64-jni.tar.bz2 a687809073e75e1d3742ea903c4350b5888b7a8c6506b0fe96c9dcff7c39367d
sherpa-onnx-v1.10.36-osx-universal2-shared-no-tts.tar.bz2 7093edc3afad4a5ca8b4fbaac5fef53f6a19efcb377f832d4f2a6441c10dd6a3
sherpa-onnx-v1.10.36-osx-universal2-shared.tar.bz2 95b9483e8cb8edc6d07ff5bc7b2445d45f9011b862cbd93b21e3aa9e1600f586
sherpa-onnx-v1.10.36-osx-universal2-static-no-tts.tar.bz2 045f2ed5a0df254e81497595070294b8546d67c9642ddc1ebc0dda3680aaae11
sherpa-onnx-v1.10.36-osx-universal2-static.tar.bz2 207981a2acb9a6db9a13700248d8a04311a7b513a787b9367d91729302113dd8
sherpa-onnx-v1.10.36-osx-x86_64-jni.tar.bz2 ec05bc62c008ccd63bf4a61f478a64d232454e45e6a7a08569aac8be7139184a
sherpa-onnx-v1.10.36-win-x64-cuda.tar.bz2 042b96e1bf56de707bc86b41b51a8c2a0b14c743e58ad64b2a45e4d9a1112967
sherpa-onnx-v1.10.36-win-x64-jni.tar.bz2 40935c923ed487f4d536528e1f6d4a7e2fbb636b7c1a46cb8a4b4487c7cbd7d5
sherpa-onnx-v1.10.36-win-x64-shared.tar.bz2 2c69724631cfdc67ed581e31b2a7c3f59c54b39b5870a7604f237b23e97ece7a
sherpa-onnx-v1.10.36-win-x64-static.tar.bz2 1730fe558e8f10a6e580089eb9665ba7df96bce2498c5b676acdfa01acb2bdb6
sherpa-onnx-v1.10.36.jar 8c6da77771b6d215220c7aacf48041c0b5b5848c5e2494cba20c1e87a7624e3e
sherpa-onnx-wasm-simd-1.10.36-vad-asr-en-moonshine_tiny.tar.bz2 0c229f68612ae2df913c416445a32fe5224999b86ded8bbdc383d809d3e537cc
sherpa-onnx-wasm-simd-1.10.36-vad-asr-en-whisper_tiny.tar.bz2 213b96947de943394ae5b98769a54e1bc4a5b65e1350a8b4933f16836ddde3cc
sherpa-onnx-wasm-simd-1.10.36-vad-asr-en-zipformer_gigaspeech.tar.bz2 ea67368887567773bea0bf8ba03d59a1182d4b68bdfba017791916ec0cf19e0c
sherpa-onnx-wasm-simd-1.10.36-vad-asr-ja-zipformer_reazonspeech.tar.bz2 a2ed3be6ae2a211863bdbbc5882cc35ad91e5414fe980059df95209673fada00
sherpa-onnx-wasm-simd-1.10.36-vad-asr-th-zipformer_gigaspeech2.tar.bz2 30e1ed1e09df1ea409b0763fd654e8c0aa69690bb1dcbed06ec6a28c0b446f47
sherpa-onnx-wasm-simd-1.10.36-vad-asr-zh-telespeech.tar.bz2 c117c15bf1cabd2018fac41e8d0cc7db348f9cf7e2f5dfd89fe26d16b817d2b8
sherpa-onnx-wasm-simd-1.10.36-vad-asr-zh-zipformer_wenetspeech.tar.bz2 d729e7853b9b0a06f71145b2f145a9f9a1e8213fa878d34421e7259be6dcf7f8
sherpa-onnx-wasm-simd-1.10.36-vad-asr-zh_en-paraformer_large.tar.bz2 29c9884f6be1fc36d4c648ae0dc2ae30069196c489347c7c0c2a0d73a1537c6a
sherpa-onnx-wasm-simd-1.10.36-vad-asr-zh_en-paraformer_small.tar.bz2 67a9a82f509c646245f9bc0616b552f160c9ec8f39163f9ee352b8c6f28072d4
sherpa-onnx-wasm-simd-1.10.36-vad-asr-zh_en_ja_ko_cantonese-sense_voice_small.tar.bz2 4553874a830ec8f4042a8ec06e48e7cedde99799507495854f965d22000abf56
sherpa-onnx-wasm-simd-v1.10.36-de-tts.tar.bz2 2685e8b7431f706f5d8695eae1fb072a77cd042b88da449ad4b9802af3556604
sherpa-onnx-wasm-simd-v1.10.36-en-asr-zipformer.tar.bz2 73f0e9c3c2df19230cf3226978aae39b5232b5363b806ba2588d7cde033fedaf
sherpa-onnx-wasm-simd-v1.10.36-en-tts.tar.bz2 e960fadb29f95b2b944bf649d7b7ac31da50487d90ceb607393a8642f6ac0580
sherpa-onnx-wasm-simd-v1.10.36-speaker-diarization.tar.bz2 f9a80bec431378a7ab3fe2705e4edb799697d15a60d1a457d7c24a67b6fcd134
sherpa-onnx-wasm-simd-v1.10.36-vad.tar.bz2 4bc3ec8d5e10a117b6f34ed1f1805bc2aaa7468cd6f54d1f035e8d39d669c016
sherpa-onnx-wasm-simd-v1.10.36-zh-cantonese-en-asr-paraformer.tar.bz2 553e785082ae54a33cd97689b3eda458c559b08084df003fc078984fa5886050
sherpa-onnx-wasm-simd-v1.10.36-zh-en-asr-paraformer.tar.bz2 01888806c7baaf7d6793b92cc8a7e65f694095c3d261051376dd3be8094b04e4
sherpa-onnx-wasm-simd-v1.10.36-zh-en-asr-zipformer.tar.bz2 c5d3f38c89d80971c3f76a63d08b9802a67c9c2ce65f60f52a9f3db0b707d476
sherpa_onnx-v1.10.36.har c3ea01929e3bb476fd811e368db5d3c0ca200789b16492e5f391acaf93d933cc
sherpa-onnx-1.10.39.aar 3121db6b2a43edf72cfa62b4d4fc25b685d8d34c903a630b4887e443ec7cf611
sherpa-onnx-non-streaming-asr-x64-v1.10.39.exe c7b2c279612afa079fc092b452f7092020f523a4d7f797545cf490aca8bb43b0
sherpa-onnx-non-streaming-asr-x86-v1.10.39.exe fa523b68cf96373a81e1c5d9e85f835fd082f7ef56bbbaafaeca68b29a5650ab
sherpa-onnx-non-streaming-tts-x64-v1.10.39.exe fd5a4c022360e9570d63b5584bd6a0856b987ed70dd67a88940bb56dc5eb098a
sherpa-onnx-non-streaming-tts-x86-v1.10.39.exe 2e29a86caff38388fb9edf68d961d821337e422301a72566b957a209c08f4eb2
sherpa-onnx-streaming-asr-x64-v1.10.39.exe 6bfe433edb3a35df7f465d6345fe4e820864de8dde675609f41edf9dfe489c27
sherpa-onnx-streaming-asr-x86-v1.10.39.exe 3b87edd0ca16047740a489e6dc85648f812ca92881da7683e9f4c5a77a35a559
sherpa-onnx-v1.10.39-android.tar.bz2 c6377040d30024c93a110d9f1ab366762a2b4621906843d7eaa2d795fd55c772
sherpa-onnx-v1.10.39-java11.jar 22ace7a44e112da9fe3cb0e1c6848e22e84cc0151c92874bbe13b5bccc3e4a6f
sherpa-onnx-v1.10.39-java16.jar 3cbcd4a4b06e24a09cbbcc56c1630770a27834bd1ee7c89f4992bee269c89d0d
sherpa-onnx-v1.10.39-java17.jar 68dc47bf797d5459ef76d0e7e15deacd0f4f320c4fa13fba74c23057f4fdd20c
sherpa-onnx-v1.10.39-java21.jar 7219ed759d24ff1f4f07c3fe72bec4e6d7d1da360d9f8f8076bec7f55d21286b
sherpa-onnx-v1.10.39-java8.jar d8d7a6f786a8c9371c303be17be23b91506d8dd0a3b3b96184f8dfcc19327df3
sherpa-onnx-v1.10.39-linux-riscv64-shared.tar.bz2 4696994ecd5e814ff6e1ad9c1ed709dbe3398bee9336ce4537fb3e2103ae8430
sherpa-onnx-v1.10.39-linux-x64-gpu.tar.bz2 dc005fa76fb5f26e16f60139ebacaf3b548c5ea4e9441b93011f31c4134048de
sherpa-onnx-v1.10.39-linux-x64-jni.tar.bz2 6041a64dd6b4949a709d4b7d1fe9c92e46b19026db3ba932f3227ba2be3166b2
sherpa-onnx-v1.10.39-linux-x64-shared.tar.bz2 424f501c794365c6678c10f004a8ffbbb93503c765142f441ee3497668d9af0b
sherpa-onnx-v1.10.39-linux-x64-static.tar.bz2 7c45146bbd355571088a9de11bb56c61806807e388a9659d797c1399dd7a7607
sherpa-onnx-v1.10.39-macos-xcframework-static.tar.bz2 f5b42aade352b823782703b4a48deda2cd9e0efb86113da060006c25182424aa
sherpa-onnx-v1.10.39-ohos-arm64-v8a.tar.bz2 1d190e0bc687a20fd94eb3a0afafc53e25fe13155607a36e6a310eeb3a400513
sherpa-onnx-v1.10.39-ohos-armeabi-v7a.tar.bz2 7f0e522d4153930ec53a22e7b37a0de645cebab829699a724267f6ec668ebb2d
sherpa-onnx-v1.10.39-ohos-x86_64.tar.bz2 e94ed6f39989d1cc1abbf75d96d31c84189b5595e568eaf242fff4ab30c91b5f
sherpa-onnx-v1.10.39-osx-universal2-shared-no-tts.tar.bz2 e942be07dbc365e0978ff532342122e60f2e715316076a0ef2743d304bba5cde
sherpa-onnx-v1.10.39-osx-universal2-shared.tar.bz2 e5cc2e018ae80a83e0900963bdd46c09dd7f53959daae6831650eda81ab98a86
sherpa-onnx-v1.10.39-osx-universal2-static-no-tts.tar.bz2 f8f240ab3444cfb851831868e0d20839f9fe839b5100f962fae9e04895ee1bc4
sherpa-onnx-v1.10.39-osx-universal2-static.tar.bz2 c8d819a788c5e4dd7250913dd786d4784d3dd9d5ccebee0203e14f86cb8e554c
sherpa-onnx-v1.10.39-win-x64-cuda.tar.bz2 9c8a142b4d6470bd6b91679132e6dd3fd2c598d5e2f4230caf304eb5a8982a01
sherpa-onnx-v1.10.39-win-x64-jni.tar.bz2 3f44237d45df5da9058dacb87fba3029882472f45b1d72119e400926222fbbb2
sherpa-onnx-v1.10.39-win-x64-shared.tar.bz2 c195a46e2bb3c0744f4a8f6371dc8d735a3cafc8d1b0067d234a58b6778a6998
sherpa-onnx-v1.10.39-win-x64-static.tar.bz2 071d25956e161f41a01580be403824bf50f842fb72c28d30fd0818cfcf3ebe0d
sherpa-onnx-v1.10.39.jar 7219ed759d24ff1f4f07c3fe72bec4e6d7d1da360d9f8f8076bec7f55d21286b
sherpa-onnx-wasm-simd-1.10.39-vad-asr-en-moonshine_tiny.tar.bz2 e3f7e3e14eb95d779fb936d4a7207b8bcaf12ae5af84a9d5682e32af9d39a8e0
sherpa-onnx-wasm-simd-1.10.39-vad-asr-en-whisper_tiny.tar.bz2 138957f716a71e6c69f35760f1a70a7f08e98504321275c393df86e5fff0d457
sherpa-onnx-wasm-simd-1.10.39-vad-asr-en-zipformer_gigaspeech.tar.bz2 21dfa6d817f9e14178430a2d1b1e5089a4f394178588a62851e61c15662e98fc
sherpa-onnx-wasm-simd-1.10.39-vad-asr-ja-zipformer_reazonspeech.tar.bz2 2c3d3ab19c1ba1c415b9470071b4de0da097a937d3fa7436cd3b3385222c1718
sherpa-onnx-wasm-simd-1.10.39-vad-asr-th-zipformer_gigaspeech2.tar.bz2 d9f5cab23b0c2ea28b1bca49201ccdacb74e4f99c1638c9b0c7743179aaa6d73
sherpa-onnx-wasm-simd-1.10.39-vad-asr-zh-telespeech.tar.bz2 d56c7f11fcbd98d915da771c191083a9c0684aa45903e4dd3030579c9ccf1590
sherpa-onnx-wasm-simd-1.10.39-vad-asr-zh-zipformer_wenetspeech.tar.bz2 87d9c1e67196b73310d2e21208d51c2821e08bc553b7bbb2371163c2c4643c17
sherpa-onnx-wasm-simd-1.10.39-vad-asr-zh_en-paraformer_large.tar.bz2 c92c106c3dbdd8fd0c6e9a6173193842e42b1d3d96a8f1f666b6fb29ccb2b0ae
sherpa-onnx-wasm-simd-1.10.39-vad-asr-zh_en-paraformer_small.tar.bz2 c3200ad74242a7e1264659edc0d87aa5f4a14ef1aefaf2b5a87af2058aca2858
sherpa-onnx-wasm-simd-1.10.39-vad-asr-zh_en_ja_ko_cantonese-sense_voice_small.tar.bz2 0f46b225f1cb04b51c8ba0c25ff3f3bf16f6703c6c6f131930d19d7d2237b7e5
sherpa-onnx-wasm-simd-v1.10.39-en-asr-zipformer.tar.bz2 8b9ecd9288b504f9e44201f72ea5cbe983978fe6ddc910b6657fde18116349bd
sherpa-onnx-wasm-simd-v1.10.39-en-tts.tar.bz2 859bdc67190b27afce2df0e271a88f974ca4b4a7b2396bd14e9c3bd54f920ee4
sherpa-onnx-wasm-simd-v1.10.39-vad.tar.bz2 eb68aeb4f6e1e39ebfaf906ae86e4b0598030931d20a51bc4b4b660fd61b35e1
sherpa-onnx-wasm-simd-v1.10.39-zh-cantonese-en-asr-paraformer.tar.bz2 0fe88721a3a795c3859e48b4ece2dc4c1acaa3ad10f6e437e844e92883a27879
sherpa-onnx-wasm-simd-v1.10.39-zh-en-asr-paraformer.tar.bz2 7de41612a06d2f40464a84cb49cd086f920571d7a1e659f9ea94dceac141da6c
sherpa-onnx-wasm-simd-v1.10.39-zh-en-asr-zipformer.tar.bz2 66deee9b74bf8d4f443e191b58848f08d9807fd0a0bd61b3042e7962431ae1f3
sherpa_onnx-v1.10.39.har 3587e34154cb625bbcb09845fb0d32eedb113ef0392f88a1fe9cda1105d46c21
2 changes: 1 addition & 1 deletion crates/sherpa-rs-sys/dist.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"tag": "v1.10.36",
"tag": "v1.10.39",
"url": "https://github.com/k2-fsa/sherpa-onnx/releases/download/{tag}/{archive}",
"targets": {
"x86_64-pc-windows-msvc": {
Expand Down
2 changes: 1 addition & 1 deletion crates/sherpa-rs-sys/sherpa-onnx
Submodule sherpa-onnx updated 323 files
27 changes: 27 additions & 0 deletions crates/sherpa-rs-sys/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,30 @@
#![allow(non_snake_case)]

include!(concat!(env!("OUT_DIR"), "/bindings.rs"));

macro_rules! impl_default_for_bindgen {
($struct_name:ident { $($field_name:ident : $field_type:ty),* $(,)? }) => {
impl Default for $struct_name {
fn default() -> Self {
Self {
$(
$field_name: default_value::<$field_type>(),
)*
}
}
}
};
}

macro_rules! impl_default_for_bindgen {
($struct_name:ident) => {
impl Default for $struct_name {
fn default() -> Self {
unsafe { std::mem::zeroed() }
}
}
};
}

impl_default_for_bindgen!(SherpaOnnxOfflineTtsMatchaModelConfig);
impl_default_for_bindgen!(SherpaOnnxOfflineTtsVitsModelConfig);
4 changes: 4 additions & 0 deletions crates/sherpa-rs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -92,3 +92,7 @@ path = "../../examples/whisper.rs"
[[example]]
name = "moonshine"
path = "../../examples/moonshine.rs"

[[example]]
name = "kokoro"
path = "../../examples/kokoro.rs"
76 changes: 53 additions & 23 deletions crates/sherpa-rs/src/tts.rs
Original file line number Diff line number Diff line change
@@ -1,40 +1,50 @@
use std::ptr::null;

use crate::{get_default_provider, utils::RawCStr};
use eyre::{bail, Result};
use hound::{WavSpec, WavWriter};

#[derive(Debug)]
pub struct OfflineTtsConfig {
pub model: String,

// Piper / Vits
pub rule_fars: String,
pub rule_fsts: String,
pub max_num_sentences: i32,

// speed
pub length_scale: f32,

// Kokoro
pub voices_path: String,
pub data_dir: String,

// Onnx options
pub num_threads: Option<i32>,
pub debug: bool,
pub provider: Option<String>,
pub tokens: String,
}

#[derive(Debug)]
pub struct VitsConfig {
pub lexicon: String,
pub tokens: String,
pub data_dir: String,

pub dict_dir: String,

pub noise_scale: f32,
pub noise_scale_w: f32,
pub length_scale: f32,
}

impl Default for VitsConfig {
fn default() -> Self {
Self {
lexicon: String::new(),
tokens: String::new(),
data_dir: String::new(),

dict_dir: String::new(),
noise_scale: 0.0,
noise_scale_w: 0.0,
length_scale: 1.0,
}
}
}
Expand All @@ -45,51 +55,71 @@ impl Default for OfflineTtsConfig {
model: String::new(),
rule_fars: String::new(),
rule_fsts: String::new(),
voices_path: String::new(),
data_dir: String::new(),
max_num_sentences: 2,
tokens: String::new(),
num_threads: None,
debug: false,
provider: None,
length_scale: 1.0,
}
}
}

#[derive(Debug)]
pub struct OfflineTts {
pub(crate) tts: *mut sherpa_rs_sys::SherpaOnnxOfflineTts,
pub(crate) tts: *const sherpa_rs_sys::SherpaOnnxOfflineTts,
}

impl OfflineTts {
pub fn new(config: OfflineTtsConfig, vits_config: VitsConfig) -> Self {
let provider = config.provider.unwrap_or(get_default_provider());

let data_dir = RawCStr::new(&vits_config.data_dir);
let dict_dir = RawCStr::new(&vits_config.dict_dir);
let lexicon = RawCStr::new(&vits_config.lexicon);
let model = RawCStr::new(&config.model);
let tokens = RawCStr::new(&vits_config.tokens);

let provider = RawCStr::new(&provider);

// Vits / Piper
let lexicon = RawCStr::new(&vits_config.lexicon);
let tokens = RawCStr::new(&config.tokens);
let rule_fars = RawCStr::new(&config.rule_fars);
let rule_fsts = RawCStr::new(&config.rule_fsts);

// Espeak
let data_dir = RawCStr::new(&config.data_dir);
let dict_dir = RawCStr::new(&vits_config.dict_dir);

// Kokoro
let voices_path = RawCStr::new(&config.voices_path);

let vits: sherpa_rs_sys::SherpaOnnxOfflineTtsVitsModelConfig =
unsafe { std::mem::zeroed() };
let matcha: sherpa_rs_sys::SherpaOnnxOfflineTtsMatchaModelConfig =
unsafe { std::mem::zeroed() };

println!(
"{:?} {} {} {} {}",
config.model, config.voices_path, config.tokens, config.data_dir, config.length_scale,
);
let tts_config = sherpa_rs_sys::SherpaOnnxOfflineTtsConfig {
max_num_sentences: config.max_num_sentences,
model: sherpa_rs_sys::SherpaOnnxOfflineTtsModelConfig {
vits: sherpa_rs_sys::SherpaOnnxOfflineTtsVitsModelConfig {
data_dir: data_dir.as_ptr(),
dict_dir: dict_dir.as_ptr(),
length_scale: vits_config.length_scale,
lexicon: lexicon.as_ptr(),
model: model.as_ptr(),
noise_scale: vits_config.noise_scale,
noise_scale_w: vits_config.noise_scale_w,
tokens: tokens.as_ptr(),
},
vits,
matcha,
num_threads: config.num_threads.unwrap_or(1),
debug: config.debug.into(),
provider: provider.as_ptr(),
kokoro: sherpa_rs_sys::SherpaOnnxOfflineTtsKokoroModelConfig {
model: model.as_ptr(),
voices: voices_path.as_ptr(),
tokens: tokens.as_ptr(),
data_dir: data_dir.as_ptr(),
length_scale: config.length_scale,
},
},
rule_fars: rule_fars.as_ptr(),
rule_fsts: rule_fsts.as_ptr(),
rule_fars: null(),
rule_fsts: null(),
};

let tts = unsafe { sherpa_rs_sys::SherpaOnnxCreateOfflineTts(&tts_config) };
Expand Down
Loading
Loading