Skip to content

Commit cc2ee7c

Browse files
committed
feat: add Kokoro English TTS model and update example usage
1 parent 9548a0c commit cc2ee7c

File tree

8 files changed

+163
-96
lines changed

8 files changed

+163
-96
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,5 @@ vits-*
2424
sherpa-onnx-kws-*
2525
.tmp/
2626
jniLibs/
27-
build/
27+
build/
28+
kokoro-en*/

crates/sherpa-rs-sys/checksum.txt

Lines changed: 48 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,48 @@
1-
sherpa-onnx-1.10.36.aar dee07a1ecb0885c992458d2283a178c7a72e85fc7f310e149b1c5eb432b1d40b
2-
sherpa-onnx-non-streaming-asr-x64-v1.10.36.exe d0b418048411c7c7256b39e509f8c7da5363842b3d636cc0a462e7b1ef88403b
3-
sherpa-onnx-non-streaming-asr-x86-v1.10.36.exe 1fc3519aa1c3e2e90a1482d8da92ed8949e6746737305a4ea19cad727961a93c
4-
sherpa-onnx-non-streaming-tts-x64-v1.10.36.exe 6d28bbe3076170cbfab526144ddee2f58e13de1a9b67938a470ad5a22e3ba95d
5-
sherpa-onnx-non-streaming-tts-x86-v1.10.36.exe 4c1332184976820850fa5740589592ba59755cf6001f9ae17798a4d80987f196
6-
sherpa-onnx-static-link-onnxruntime-1.10.36.aar a528f0fd03b20d6763e130b715acd9403f2ed09f0505face32233a88710a5177
7-
sherpa-onnx-streaming-asr-x64-v1.10.36.exe 26002febd26f6db60eeaca3e7602c9871028fc91ca10b8514678afe675d6813b
8-
sherpa-onnx-streaming-asr-x86-v1.10.36.exe 680a85aafaff9491da71d003277b88f24b760daeea396953a576f1d4b823d46b
9-
sherpa-onnx-v1.10.36-android-static-link-onnxruntime.tar.bz2 32e4d19064194eca105291f46900e12ecae11c455ad47bbe63a06ca92d87d917
10-
sherpa-onnx-v1.10.36-android.tar.bz2 358f4b9eeedfd8ac888962624167a61a9d94569fdd3a03e11cdad993e036869b
11-
sherpa-onnx-v1.10.36-ios-no-tts.tar.bz2 3ea2a06889f0799a0fb3d4c0fe9f08c3eaca1576ec0cbbd1eff87d3881401353
12-
sherpa-onnx-v1.10.36-ios.tar.bz2 da82f2bb62beac3f3c01e31cd2437e0d2dbc1a69bfadcde4b12aa36e81064c8d
13-
sherpa-onnx-v1.10.36-java11.jar d95785df563d422f4e8efc77952f8543b8a1b1e4ee7c183512d84cdad78defa8
14-
sherpa-onnx-v1.10.36-java16.jar 3d6ff52fae3c0a572d38781cccc1ca45e9a9342a6738ecd2e9c2676796d3c1d2
15-
sherpa-onnx-v1.10.36-java17.jar 4816ada283edbeea279492a3c798de8d3bd36c800eddba3cd561a6ecb79529d6
16-
sherpa-onnx-v1.10.36-java21.jar 8c6da77771b6d215220c7aacf48041c0b5b5848c5e2494cba20c1e87a7624e3e
17-
sherpa-onnx-v1.10.36-java8.jar 02847a54ea4cd6728b6442838cbeea6ccda45f755cd4a4080916dbb0e35cb04b
18-
sherpa-onnx-v1.10.36-linux-aarch64-jni.tar.bz2 327e0ebc96b701371d01ab0c3839eaff7cde55df5fcc74c6c675cab9911048a7
19-
sherpa-onnx-v1.10.36-linux-riscv64-shared.tar.bz2 082d8a390ac43855344c5c95504df32ca235ecc1e9edbe5c1ac57efd5efd7785
20-
sherpa-onnx-v1.10.36-linux-x64-gpu.tar.bz2 459daeef67b1a266ae5e65125e374d85af3bc50a1ea6ab935fbdc05c62ca4930
21-
sherpa-onnx-v1.10.36-linux-x64-jni.tar.bz2 7e4fdf59331097e469183de661cebc14f4efb322b6746e2a5cbe591c063619b5
22-
sherpa-onnx-v1.10.36-linux-x64-shared.tar.bz2 4f5d9707a3940a698bf8471fa3871cc419b55624c517e66066905a401e35cfe4
23-
sherpa-onnx-v1.10.36-linux-x64-static.tar.bz2 726c6b64b2d8df8cac16ee3219410caaf1bc08d96f5d964ae72198c600f706a6
24-
sherpa-onnx-v1.10.36-macos-xcframework-static.tar.bz2 19b4656d2026cf45499cc8fe7a1677746a27acad05aa3e983e49e165a5dadbc2
25-
sherpa-onnx-v1.10.36-ohos-arm64-v8a.tar.bz2 b1399139d83e9e48ee35f8395e22b1b4cedc4b7ee9681b57809b3af54db86884
26-
sherpa-onnx-v1.10.36-ohos-armeabi-v7a.tar.bz2 16a3ebb9ded3c9f886ef5388bbbb56ed356d00c7855477ee13fedb0be9d6b8ff
27-
sherpa-onnx-v1.10.36-ohos-x86_64.tar.bz2 ee793dfc04c3699e63daeaf95515ff5132edc0fb8106c37cc07ec04ee2ba4b35
28-
sherpa-onnx-v1.10.36-osx-arm64-jni.tar.bz2 a687809073e75e1d3742ea903c4350b5888b7a8c6506b0fe96c9dcff7c39367d
29-
sherpa-onnx-v1.10.36-osx-universal2-shared-no-tts.tar.bz2 7093edc3afad4a5ca8b4fbaac5fef53f6a19efcb377f832d4f2a6441c10dd6a3
30-
sherpa-onnx-v1.10.36-osx-universal2-shared.tar.bz2 95b9483e8cb8edc6d07ff5bc7b2445d45f9011b862cbd93b21e3aa9e1600f586
31-
sherpa-onnx-v1.10.36-osx-universal2-static-no-tts.tar.bz2 045f2ed5a0df254e81497595070294b8546d67c9642ddc1ebc0dda3680aaae11
32-
sherpa-onnx-v1.10.36-osx-universal2-static.tar.bz2 207981a2acb9a6db9a13700248d8a04311a7b513a787b9367d91729302113dd8
33-
sherpa-onnx-v1.10.36-osx-x86_64-jni.tar.bz2 ec05bc62c008ccd63bf4a61f478a64d232454e45e6a7a08569aac8be7139184a
34-
sherpa-onnx-v1.10.36-win-x64-cuda.tar.bz2 042b96e1bf56de707bc86b41b51a8c2a0b14c743e58ad64b2a45e4d9a1112967
35-
sherpa-onnx-v1.10.36-win-x64-jni.tar.bz2 40935c923ed487f4d536528e1f6d4a7e2fbb636b7c1a46cb8a4b4487c7cbd7d5
36-
sherpa-onnx-v1.10.36-win-x64-shared.tar.bz2 2c69724631cfdc67ed581e31b2a7c3f59c54b39b5870a7604f237b23e97ece7a
37-
sherpa-onnx-v1.10.36-win-x64-static.tar.bz2 1730fe558e8f10a6e580089eb9665ba7df96bce2498c5b676acdfa01acb2bdb6
38-
sherpa-onnx-v1.10.36.jar 8c6da77771b6d215220c7aacf48041c0b5b5848c5e2494cba20c1e87a7624e3e
39-
sherpa-onnx-wasm-simd-1.10.36-vad-asr-en-moonshine_tiny.tar.bz2 0c229f68612ae2df913c416445a32fe5224999b86ded8bbdc383d809d3e537cc
40-
sherpa-onnx-wasm-simd-1.10.36-vad-asr-en-whisper_tiny.tar.bz2 213b96947de943394ae5b98769a54e1bc4a5b65e1350a8b4933f16836ddde3cc
41-
sherpa-onnx-wasm-simd-1.10.36-vad-asr-en-zipformer_gigaspeech.tar.bz2 ea67368887567773bea0bf8ba03d59a1182d4b68bdfba017791916ec0cf19e0c
42-
sherpa-onnx-wasm-simd-1.10.36-vad-asr-ja-zipformer_reazonspeech.tar.bz2 a2ed3be6ae2a211863bdbbc5882cc35ad91e5414fe980059df95209673fada00
43-
sherpa-onnx-wasm-simd-1.10.36-vad-asr-th-zipformer_gigaspeech2.tar.bz2 30e1ed1e09df1ea409b0763fd654e8c0aa69690bb1dcbed06ec6a28c0b446f47
44-
sherpa-onnx-wasm-simd-1.10.36-vad-asr-zh-telespeech.tar.bz2 c117c15bf1cabd2018fac41e8d0cc7db348f9cf7e2f5dfd89fe26d16b817d2b8
45-
sherpa-onnx-wasm-simd-1.10.36-vad-asr-zh-zipformer_wenetspeech.tar.bz2 d729e7853b9b0a06f71145b2f145a9f9a1e8213fa878d34421e7259be6dcf7f8
46-
sherpa-onnx-wasm-simd-1.10.36-vad-asr-zh_en-paraformer_large.tar.bz2 29c9884f6be1fc36d4c648ae0dc2ae30069196c489347c7c0c2a0d73a1537c6a
47-
sherpa-onnx-wasm-simd-1.10.36-vad-asr-zh_en-paraformer_small.tar.bz2 67a9a82f509c646245f9bc0616b552f160c9ec8f39163f9ee352b8c6f28072d4
48-
sherpa-onnx-wasm-simd-1.10.36-vad-asr-zh_en_ja_ko_cantonese-sense_voice_small.tar.bz2 4553874a830ec8f4042a8ec06e48e7cedde99799507495854f965d22000abf56
49-
sherpa-onnx-wasm-simd-v1.10.36-de-tts.tar.bz2 2685e8b7431f706f5d8695eae1fb072a77cd042b88da449ad4b9802af3556604
50-
sherpa-onnx-wasm-simd-v1.10.36-en-asr-zipformer.tar.bz2 73f0e9c3c2df19230cf3226978aae39b5232b5363b806ba2588d7cde033fedaf
51-
sherpa-onnx-wasm-simd-v1.10.36-en-tts.tar.bz2 e960fadb29f95b2b944bf649d7b7ac31da50487d90ceb607393a8642f6ac0580
52-
sherpa-onnx-wasm-simd-v1.10.36-speaker-diarization.tar.bz2 f9a80bec431378a7ab3fe2705e4edb799697d15a60d1a457d7c24a67b6fcd134
53-
sherpa-onnx-wasm-simd-v1.10.36-vad.tar.bz2 4bc3ec8d5e10a117b6f34ed1f1805bc2aaa7468cd6f54d1f035e8d39d669c016
54-
sherpa-onnx-wasm-simd-v1.10.36-zh-cantonese-en-asr-paraformer.tar.bz2 553e785082ae54a33cd97689b3eda458c559b08084df003fc078984fa5886050
55-
sherpa-onnx-wasm-simd-v1.10.36-zh-en-asr-paraformer.tar.bz2 01888806c7baaf7d6793b92cc8a7e65f694095c3d261051376dd3be8094b04e4
56-
sherpa-onnx-wasm-simd-v1.10.36-zh-en-asr-zipformer.tar.bz2 c5d3f38c89d80971c3f76a63d08b9802a67c9c2ce65f60f52a9f3db0b707d476
57-
sherpa_onnx-v1.10.36.har c3ea01929e3bb476fd811e368db5d3c0ca200789b16492e5f391acaf93d933cc
1+
sherpa-onnx-1.10.39.aar 3121db6b2a43edf72cfa62b4d4fc25b685d8d34c903a630b4887e443ec7cf611
2+
sherpa-onnx-non-streaming-asr-x64-v1.10.39.exe c7b2c279612afa079fc092b452f7092020f523a4d7f797545cf490aca8bb43b0
3+
sherpa-onnx-non-streaming-asr-x86-v1.10.39.exe fa523b68cf96373a81e1c5d9e85f835fd082f7ef56bbbaafaeca68b29a5650ab
4+
sherpa-onnx-non-streaming-tts-x64-v1.10.39.exe fd5a4c022360e9570d63b5584bd6a0856b987ed70dd67a88940bb56dc5eb098a
5+
sherpa-onnx-non-streaming-tts-x86-v1.10.39.exe 2e29a86caff38388fb9edf68d961d821337e422301a72566b957a209c08f4eb2
6+
sherpa-onnx-streaming-asr-x64-v1.10.39.exe 6bfe433edb3a35df7f465d6345fe4e820864de8dde675609f41edf9dfe489c27
7+
sherpa-onnx-streaming-asr-x86-v1.10.39.exe 3b87edd0ca16047740a489e6dc85648f812ca92881da7683e9f4c5a77a35a559
8+
sherpa-onnx-v1.10.39-android.tar.bz2 c6377040d30024c93a110d9f1ab366762a2b4621906843d7eaa2d795fd55c772
9+
sherpa-onnx-v1.10.39-java11.jar 22ace7a44e112da9fe3cb0e1c6848e22e84cc0151c92874bbe13b5bccc3e4a6f
10+
sherpa-onnx-v1.10.39-java16.jar 3cbcd4a4b06e24a09cbbcc56c1630770a27834bd1ee7c89f4992bee269c89d0d
11+
sherpa-onnx-v1.10.39-java17.jar 68dc47bf797d5459ef76d0e7e15deacd0f4f320c4fa13fba74c23057f4fdd20c
12+
sherpa-onnx-v1.10.39-java21.jar 7219ed759d24ff1f4f07c3fe72bec4e6d7d1da360d9f8f8076bec7f55d21286b
13+
sherpa-onnx-v1.10.39-java8.jar d8d7a6f786a8c9371c303be17be23b91506d8dd0a3b3b96184f8dfcc19327df3
14+
sherpa-onnx-v1.10.39-linux-riscv64-shared.tar.bz2 4696994ecd5e814ff6e1ad9c1ed709dbe3398bee9336ce4537fb3e2103ae8430
15+
sherpa-onnx-v1.10.39-linux-x64-gpu.tar.bz2 dc005fa76fb5f26e16f60139ebacaf3b548c5ea4e9441b93011f31c4134048de
16+
sherpa-onnx-v1.10.39-linux-x64-jni.tar.bz2 6041a64dd6b4949a709d4b7d1fe9c92e46b19026db3ba932f3227ba2be3166b2
17+
sherpa-onnx-v1.10.39-linux-x64-shared.tar.bz2 424f501c794365c6678c10f004a8ffbbb93503c765142f441ee3497668d9af0b
18+
sherpa-onnx-v1.10.39-linux-x64-static.tar.bz2 7c45146bbd355571088a9de11bb56c61806807e388a9659d797c1399dd7a7607
19+
sherpa-onnx-v1.10.39-macos-xcframework-static.tar.bz2 f5b42aade352b823782703b4a48deda2cd9e0efb86113da060006c25182424aa
20+
sherpa-onnx-v1.10.39-ohos-arm64-v8a.tar.bz2 1d190e0bc687a20fd94eb3a0afafc53e25fe13155607a36e6a310eeb3a400513
21+
sherpa-onnx-v1.10.39-ohos-armeabi-v7a.tar.bz2 7f0e522d4153930ec53a22e7b37a0de645cebab829699a724267f6ec668ebb2d
22+
sherpa-onnx-v1.10.39-ohos-x86_64.tar.bz2 e94ed6f39989d1cc1abbf75d96d31c84189b5595e568eaf242fff4ab30c91b5f
23+
sherpa-onnx-v1.10.39-osx-universal2-shared-no-tts.tar.bz2 e942be07dbc365e0978ff532342122e60f2e715316076a0ef2743d304bba5cde
24+
sherpa-onnx-v1.10.39-osx-universal2-shared.tar.bz2 e5cc2e018ae80a83e0900963bdd46c09dd7f53959daae6831650eda81ab98a86
25+
sherpa-onnx-v1.10.39-osx-universal2-static-no-tts.tar.bz2 f8f240ab3444cfb851831868e0d20839f9fe839b5100f962fae9e04895ee1bc4
26+
sherpa-onnx-v1.10.39-osx-universal2-static.tar.bz2 c8d819a788c5e4dd7250913dd786d4784d3dd9d5ccebee0203e14f86cb8e554c
27+
sherpa-onnx-v1.10.39-win-x64-cuda.tar.bz2 9c8a142b4d6470bd6b91679132e6dd3fd2c598d5e2f4230caf304eb5a8982a01
28+
sherpa-onnx-v1.10.39-win-x64-jni.tar.bz2 3f44237d45df5da9058dacb87fba3029882472f45b1d72119e400926222fbbb2
29+
sherpa-onnx-v1.10.39-win-x64-shared.tar.bz2 c195a46e2bb3c0744f4a8f6371dc8d735a3cafc8d1b0067d234a58b6778a6998
30+
sherpa-onnx-v1.10.39-win-x64-static.tar.bz2 071d25956e161f41a01580be403824bf50f842fb72c28d30fd0818cfcf3ebe0d
31+
sherpa-onnx-v1.10.39.jar 7219ed759d24ff1f4f07c3fe72bec4e6d7d1da360d9f8f8076bec7f55d21286b
32+
sherpa-onnx-wasm-simd-1.10.39-vad-asr-en-moonshine_tiny.tar.bz2 e3f7e3e14eb95d779fb936d4a7207b8bcaf12ae5af84a9d5682e32af9d39a8e0
33+
sherpa-onnx-wasm-simd-1.10.39-vad-asr-en-whisper_tiny.tar.bz2 138957f716a71e6c69f35760f1a70a7f08e98504321275c393df86e5fff0d457
34+
sherpa-onnx-wasm-simd-1.10.39-vad-asr-en-zipformer_gigaspeech.tar.bz2 21dfa6d817f9e14178430a2d1b1e5089a4f394178588a62851e61c15662e98fc
35+
sherpa-onnx-wasm-simd-1.10.39-vad-asr-ja-zipformer_reazonspeech.tar.bz2 2c3d3ab19c1ba1c415b9470071b4de0da097a937d3fa7436cd3b3385222c1718
36+
sherpa-onnx-wasm-simd-1.10.39-vad-asr-th-zipformer_gigaspeech2.tar.bz2 d9f5cab23b0c2ea28b1bca49201ccdacb74e4f99c1638c9b0c7743179aaa6d73
37+
sherpa-onnx-wasm-simd-1.10.39-vad-asr-zh-telespeech.tar.bz2 d56c7f11fcbd98d915da771c191083a9c0684aa45903e4dd3030579c9ccf1590
38+
sherpa-onnx-wasm-simd-1.10.39-vad-asr-zh-zipformer_wenetspeech.tar.bz2 87d9c1e67196b73310d2e21208d51c2821e08bc553b7bbb2371163c2c4643c17
39+
sherpa-onnx-wasm-simd-1.10.39-vad-asr-zh_en-paraformer_large.tar.bz2 c92c106c3dbdd8fd0c6e9a6173193842e42b1d3d96a8f1f666b6fb29ccb2b0ae
40+
sherpa-onnx-wasm-simd-1.10.39-vad-asr-zh_en-paraformer_small.tar.bz2 c3200ad74242a7e1264659edc0d87aa5f4a14ef1aefaf2b5a87af2058aca2858
41+
sherpa-onnx-wasm-simd-1.10.39-vad-asr-zh_en_ja_ko_cantonese-sense_voice_small.tar.bz2 0f46b225f1cb04b51c8ba0c25ff3f3bf16f6703c6c6f131930d19d7d2237b7e5
42+
sherpa-onnx-wasm-simd-v1.10.39-en-asr-zipformer.tar.bz2 8b9ecd9288b504f9e44201f72ea5cbe983978fe6ddc910b6657fde18116349bd
43+
sherpa-onnx-wasm-simd-v1.10.39-en-tts.tar.bz2 859bdc67190b27afce2df0e271a88f974ca4b4a7b2396bd14e9c3bd54f920ee4
44+
sherpa-onnx-wasm-simd-v1.10.39-vad.tar.bz2 eb68aeb4f6e1e39ebfaf906ae86e4b0598030931d20a51bc4b4b660fd61b35e1
45+
sherpa-onnx-wasm-simd-v1.10.39-zh-cantonese-en-asr-paraformer.tar.bz2 0fe88721a3a795c3859e48b4ece2dc4c1acaa3ad10f6e437e844e92883a27879
46+
sherpa-onnx-wasm-simd-v1.10.39-zh-en-asr-paraformer.tar.bz2 7de41612a06d2f40464a84cb49cd086f920571d7a1e659f9ea94dceac141da6c
47+
sherpa-onnx-wasm-simd-v1.10.39-zh-en-asr-zipformer.tar.bz2 66deee9b74bf8d4f443e191b58848f08d9807fd0a0bd61b3042e7962431ae1f3
48+
sherpa_onnx-v1.10.39.har 3587e34154cb625bbcb09845fb0d32eedb113ef0392f88a1fe9cda1105d46c21

crates/sherpa-rs-sys/dist.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"tag": "v1.10.36",
2+
"tag": "v1.10.39",
33
"url": "https://github.com/k2-fsa/sherpa-onnx/releases/download/{tag}/{archive}",
44
"targets": {
55
"x86_64-pc-windows-msvc": {

crates/sherpa-rs-sys/sherpa-onnx

Submodule sherpa-onnx updated 323 files

crates/sherpa-rs-sys/src/lib.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,30 @@
33
#![allow(non_snake_case)]
44

55
include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
6+
7+
macro_rules! impl_default_for_bindgen {
8+
($struct_name:ident { $($field_name:ident : $field_type:ty),* $(,)? }) => {
9+
impl Default for $struct_name {
10+
fn default() -> Self {
11+
Self {
12+
$(
13+
$field_name: default_value::<$field_type>(),
14+
)*
15+
}
16+
}
17+
}
18+
};
19+
}
20+
21+
macro_rules! impl_default_for_bindgen {
22+
($struct_name:ident) => {
23+
impl Default for $struct_name {
24+
fn default() -> Self {
25+
unsafe { std::mem::zeroed() }
26+
}
27+
}
28+
};
29+
}
30+
31+
impl_default_for_bindgen!(SherpaOnnxOfflineTtsMatchaModelConfig);
32+
impl_default_for_bindgen!(SherpaOnnxOfflineTtsVitsModelConfig);

crates/sherpa-rs/Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,7 @@ path = "../../examples/whisper.rs"
9292
[[example]]
9393
name = "moonshine"
9494
path = "../../examples/moonshine.rs"
95+
96+
[[example]]
97+
name = "kokoro"
98+
path = "../../examples/kokoro.rs"

crates/sherpa-rs/src/tts.rs

Lines changed: 53 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,50 @@
1+
use std::ptr::null;
2+
13
use crate::{get_default_provider, utils::RawCStr};
24
use eyre::{bail, Result};
35
use hound::{WavSpec, WavWriter};
46

57
#[derive(Debug)]
68
pub struct OfflineTtsConfig {
79
pub model: String,
10+
11+
// Piper / Vits
812
pub rule_fars: String,
913
pub rule_fsts: String,
1014
pub max_num_sentences: i32,
15+
16+
// speed
17+
pub length_scale: f32,
18+
19+
// Kokoro
20+
pub voices_path: String,
21+
pub data_dir: String,
22+
23+
// Onnx options
1124
pub num_threads: Option<i32>,
1225
pub debug: bool,
1326
pub provider: Option<String>,
27+
pub tokens: String,
1428
}
1529

1630
#[derive(Debug)]
1731
pub struct VitsConfig {
1832
pub lexicon: String,
19-
pub tokens: String,
20-
pub data_dir: String,
33+
2134
pub dict_dir: String,
2235

2336
pub noise_scale: f32,
2437
pub noise_scale_w: f32,
25-
pub length_scale: f32,
2638
}
2739

2840
impl Default for VitsConfig {
2941
fn default() -> Self {
3042
Self {
3143
lexicon: String::new(),
32-
tokens: String::new(),
33-
data_dir: String::new(),
44+
3445
dict_dir: String::new(),
3546
noise_scale: 0.0,
3647
noise_scale_w: 0.0,
37-
length_scale: 1.0,
3848
}
3949
}
4050
}
@@ -45,51 +55,71 @@ impl Default for OfflineTtsConfig {
4555
model: String::new(),
4656
rule_fars: String::new(),
4757
rule_fsts: String::new(),
58+
voices_path: String::new(),
59+
data_dir: String::new(),
4860
max_num_sentences: 2,
61+
tokens: String::new(),
4962
num_threads: None,
5063
debug: false,
5164
provider: None,
65+
length_scale: 1.0,
5266
}
5367
}
5468
}
5569

5670
#[derive(Debug)]
5771
pub struct OfflineTts {
58-
pub(crate) tts: *mut sherpa_rs_sys::SherpaOnnxOfflineTts,
72+
pub(crate) tts: *const sherpa_rs_sys::SherpaOnnxOfflineTts,
5973
}
6074

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

65-
let data_dir = RawCStr::new(&vits_config.data_dir);
66-
let dict_dir = RawCStr::new(&vits_config.dict_dir);
67-
let lexicon = RawCStr::new(&vits_config.lexicon);
6879
let model = RawCStr::new(&config.model);
69-
let tokens = RawCStr::new(&vits_config.tokens);
80+
7081
let provider = RawCStr::new(&provider);
82+
83+
// Vits / Piper
84+
let lexicon = RawCStr::new(&vits_config.lexicon);
85+
let tokens = RawCStr::new(&config.tokens);
7186
let rule_fars = RawCStr::new(&config.rule_fars);
7287
let rule_fsts = RawCStr::new(&config.rule_fsts);
7388

89+
// Espeak
90+
let data_dir = RawCStr::new(&config.data_dir);
91+
let dict_dir = RawCStr::new(&vits_config.dict_dir);
92+
93+
// Kokoro
94+
let voices_path = RawCStr::new(&config.voices_path);
95+
96+
let vits: sherpa_rs_sys::SherpaOnnxOfflineTtsVitsModelConfig =
97+
unsafe { std::mem::zeroed() };
98+
let matcha: sherpa_rs_sys::SherpaOnnxOfflineTtsMatchaModelConfig =
99+
unsafe { std::mem::zeroed() };
100+
101+
println!(
102+
"{:?} {} {} {} {}",
103+
config.model, config.voices_path, config.tokens, config.data_dir, config.length_scale,
104+
);
74105
let tts_config = sherpa_rs_sys::SherpaOnnxOfflineTtsConfig {
75106
max_num_sentences: config.max_num_sentences,
76107
model: sherpa_rs_sys::SherpaOnnxOfflineTtsModelConfig {
77-
vits: sherpa_rs_sys::SherpaOnnxOfflineTtsVitsModelConfig {
78-
data_dir: data_dir.as_ptr(),
79-
dict_dir: dict_dir.as_ptr(),
80-
length_scale: vits_config.length_scale,
81-
lexicon: lexicon.as_ptr(),
82-
model: model.as_ptr(),
83-
noise_scale: vits_config.noise_scale,
84-
noise_scale_w: vits_config.noise_scale_w,
85-
tokens: tokens.as_ptr(),
86-
},
108+
vits,
109+
matcha,
87110
num_threads: config.num_threads.unwrap_or(1),
88111
debug: config.debug.into(),
89112
provider: provider.as_ptr(),
113+
kokoro: sherpa_rs_sys::SherpaOnnxOfflineTtsKokoroModelConfig {
114+
model: model.as_ptr(),
115+
voices: voices_path.as_ptr(),
116+
tokens: tokens.as_ptr(),
117+
data_dir: data_dir.as_ptr(),
118+
length_scale: config.length_scale,
119+
},
90120
},
91-
rule_fars: rule_fars.as_ptr(),
92-
rule_fsts: rule_fsts.as_ptr(),
121+
rule_fars: null(),
122+
rule_fsts: null(),
93123
};
94124

95125
let tts = unsafe { sherpa_rs_sys::SherpaOnnxCreateOfflineTts(&tts_config) };

0 commit comments

Comments
 (0)