Skip to content

Commit 59ff854

Browse files
authored
Add Flutter example for Kokoro TTS (#1776)
1 parent 8847151 commit 59ff854

File tree

1 file changed

+35
-8
lines changed

1 file changed

+35
-8
lines changed

flutter-examples/tts/lib/model.dart

+35-8
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,14 @@ Future<sherpa_onnx.OfflineTts> createOfflineTts() async {
2424

2525
String modelDir = '';
2626
String modelName = '';
27+
String voices = ''; // for Kokoro only
2728
String ruleFsts = '';
2829
String ruleFars = '';
2930
String lexicon = '';
3031
String dataDir = '';
3132
String dictDir = '';
3233

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
3435
// selected tts model
3536

3637
// ============================================================
@@ -84,6 +85,13 @@ Future<sherpa_onnx.OfflineTts> createOfflineTts() async {
8485
// lexicon = 'lexicon.txt';
8586
// dictDir = 'vits-melo-tts-zh_en/dict';
8687

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+
8795
// ============================================================
8896
// Please don't change the remaining part of this function
8997
// ============================================================
@@ -126,17 +134,36 @@ Future<sherpa_onnx.OfflineTts> createOfflineTts() async {
126134
}
127135

128136
final tokens = p.join(directory.path, modelDir, 'tokens.txt');
137+
if (voices != '') {
138+
voices = p.join(directory.path, modelDir, voices);
139+
}
129140

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+
}
137163

138164
final modelConfig = sherpa_onnx.OfflineTtsModelConfig(
139165
vits: vits,
166+
kokoro: kokoro,
140167
numThreads: 2,
141168
debug: true,
142169
provider: 'cpu',

0 commit comments

Comments
 (0)