@@ -24,13 +24,14 @@ Future<sherpa_onnx.OfflineTts> createOfflineTts() async {
24
24
25
25
String modelDir = '' ;
26
26
String modelName = '' ;
27
+ String voices = '' ; // for Kokoro only
27
28
String ruleFsts = '' ;
28
29
String ruleFars = '' ;
29
30
String lexicon = '' ;
30
31
String dataDir = '' ;
31
32
String dictDir = '' ;
32
33
33
- // You can select an example below and change it according to match your
34
+ // You can select an example below and change it accordingly to match your
34
35
// selected tts model
35
36
36
37
// ============================================================
@@ -84,6 +85,13 @@ Future<sherpa_onnx.OfflineTts> createOfflineTts() async {
84
85
// lexicon = 'lexicon.txt';
85
86
// dictDir = 'vits-melo-tts-zh_en/dict';
86
87
88
+ // Example 8
89
+ // https://k2-fsa.github.io/sherpa/onnx/tts/pretrained_models/kokoro.html#kokoro-en-v0-19-english-11-speakers
90
+ // modelDir = 'kokoro-en-v0_19';
91
+ // modelName = 'model.onnx';
92
+ // voices = 'voices.bin';
93
+ // dataDir = 'kokoro-en-v0_19/espeak-ng-data';
94
+
87
95
// ============================================================
88
96
// Please don't change the remaining part of this function
89
97
// ============================================================
@@ -126,17 +134,36 @@ Future<sherpa_onnx.OfflineTts> createOfflineTts() async {
126
134
}
127
135
128
136
final tokens = p.join (directory.path, modelDir, 'tokens.txt' );
137
+ if (voices != '' ) {
138
+ voices = p.join (directory.path, modelDir, voices);
139
+ }
129
140
130
- final vits = sherpa_onnx.OfflineTtsVitsModelConfig (
131
- model: modelName,
132
- lexicon: lexicon,
133
- tokens: tokens,
134
- dataDir: dataDir,
135
- dictDir: dictDir,
136
- );
141
+ late final sherpa_onnx.OfflineTtsVitsModelConfig vits;
142
+ late final sherpa_onnx.OfflineTtsKokoroModelConfig kokoro;
143
+
144
+ if (voices != '' ) {
145
+ vits = sherpa_onnx.OfflineTtsVitsModelConfig ();
146
+ kokoro = sherpa_onnx.OfflineTtsKokoroModelConfig (
147
+ model: modelName,
148
+ voices: voices,
149
+ tokens: tokens,
150
+ dataDir: dataDir,
151
+ );
152
+ } else {
153
+ vits = sherpa_onnx.OfflineTtsVitsModelConfig (
154
+ model: modelName,
155
+ lexicon: lexicon,
156
+ tokens: tokens,
157
+ dataDir: dataDir,
158
+ dictDir: dictDir,
159
+ );
160
+
161
+ kokoro = sherpa_onnx.OfflineTtsKokoroModelConfig ();
162
+ }
137
163
138
164
final modelConfig = sherpa_onnx.OfflineTtsModelConfig (
139
165
vits: vits,
166
+ kokoro: kokoro,
140
167
numThreads: 2 ,
141
168
debug: true ,
142
169
provider: 'cpu' ,
0 commit comments