Add Flutter example for Kokoro TTS (#1776)
This commit is contained in:
@@ -24,13 +24,14 @@ Future<sherpa_onnx.OfflineTts> createOfflineTts() async {
|
|||||||
|
|
||||||
String modelDir = '';
|
String modelDir = '';
|
||||||
String modelName = '';
|
String modelName = '';
|
||||||
|
String voices = ''; // for Kokoro only
|
||||||
String ruleFsts = '';
|
String ruleFsts = '';
|
||||||
String ruleFars = '';
|
String ruleFars = '';
|
||||||
String lexicon = '';
|
String lexicon = '';
|
||||||
String dataDir = '';
|
String dataDir = '';
|
||||||
String dictDir = '';
|
String dictDir = '';
|
||||||
|
|
||||||
// You can select an example below and change it according to match your
|
// You can select an example below and change it accordingly to match your
|
||||||
// selected tts model
|
// selected tts model
|
||||||
|
|
||||||
// ============================================================
|
// ============================================================
|
||||||
@@ -84,6 +85,13 @@ Future<sherpa_onnx.OfflineTts> createOfflineTts() async {
|
|||||||
// lexicon = 'lexicon.txt';
|
// lexicon = 'lexicon.txt';
|
||||||
// dictDir = 'vits-melo-tts-zh_en/dict';
|
// dictDir = 'vits-melo-tts-zh_en/dict';
|
||||||
|
|
||||||
|
// Example 8
|
||||||
|
// https://k2-fsa.github.io/sherpa/onnx/tts/pretrained_models/kokoro.html#kokoro-en-v0-19-english-11-speakers
|
||||||
|
// modelDir = 'kokoro-en-v0_19';
|
||||||
|
// modelName = 'model.onnx';
|
||||||
|
// voices = 'voices.bin';
|
||||||
|
// dataDir = 'kokoro-en-v0_19/espeak-ng-data';
|
||||||
|
|
||||||
// ============================================================
|
// ============================================================
|
||||||
// Please don't change the remaining part of this function
|
// Please don't change the remaining part of this function
|
||||||
// ============================================================
|
// ============================================================
|
||||||
@@ -126,17 +134,36 @@ Future<sherpa_onnx.OfflineTts> createOfflineTts() async {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final tokens = p.join(directory.path, modelDir, 'tokens.txt');
|
final tokens = p.join(directory.path, modelDir, 'tokens.txt');
|
||||||
|
if (voices != '') {
|
||||||
|
voices = p.join(directory.path, modelDir, voices);
|
||||||
|
}
|
||||||
|
|
||||||
final vits = sherpa_onnx.OfflineTtsVitsModelConfig(
|
late final sherpa_onnx.OfflineTtsVitsModelConfig vits;
|
||||||
model: modelName,
|
late final sherpa_onnx.OfflineTtsKokoroModelConfig kokoro;
|
||||||
lexicon: lexicon,
|
|
||||||
tokens: tokens,
|
if (voices != '') {
|
||||||
dataDir: dataDir,
|
vits = sherpa_onnx.OfflineTtsVitsModelConfig();
|
||||||
dictDir: dictDir,
|
kokoro = sherpa_onnx.OfflineTtsKokoroModelConfig(
|
||||||
);
|
model: modelName,
|
||||||
|
voices: voices,
|
||||||
|
tokens: tokens,
|
||||||
|
dataDir: dataDir,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
vits = sherpa_onnx.OfflineTtsVitsModelConfig(
|
||||||
|
model: modelName,
|
||||||
|
lexicon: lexicon,
|
||||||
|
tokens: tokens,
|
||||||
|
dataDir: dataDir,
|
||||||
|
dictDir: dictDir,
|
||||||
|
);
|
||||||
|
|
||||||
|
kokoro = sherpa_onnx.OfflineTtsKokoroModelConfig();
|
||||||
|
}
|
||||||
|
|
||||||
final modelConfig = sherpa_onnx.OfflineTtsModelConfig(
|
final modelConfig = sherpa_onnx.OfflineTtsModelConfig(
|
||||||
vits: vits,
|
vits: vits,
|
||||||
|
kokoro: kokoro,
|
||||||
numThreads: 2,
|
numThreads: 2,
|
||||||
debug: true,
|
debug: true,
|
||||||
provider: 'cpu',
|
provider: 'cpu',
|
||||||
|
|||||||
Reference in New Issue
Block a user