Support extra languages in multi-lang kokoro tts (#2303)

This commit is contained in:
Fangjun Kuang
2025-06-20 11:22:52 +08:00
committed by GitHub
parent a6095f5f64
commit 6982b86c66
28 changed files with 187 additions and 49 deletions

View File

@@ -201,6 +201,7 @@ final class SherpaOnnxOfflineTtsKokoroModelConfig extends Struct {
external double lengthScale;
external Pointer<Utf8> dictDir;
external Pointer<Utf8> lexicon;
external Pointer<Utf8> lang;
}
final class SherpaOnnxOfflineTtsModelConfig extends Struct {

View File

@@ -117,6 +117,7 @@ class OfflineTtsKokoroModelConfig {
this.lengthScale = 1.0,
this.dictDir = '',
this.lexicon = '',
this.lang = '',
});
factory OfflineTtsKokoroModelConfig.fromJson(Map<String, dynamic> json) {
@@ -128,12 +129,13 @@ class OfflineTtsKokoroModelConfig {
lengthScale: (json['lengthScale'] as num?)?.toDouble() ?? 1.0,
dictDir: json['dictDir'] as String? ?? '',
lexicon: json['lexicon'] as String? ?? '',
lang: json['lang'] as String? ?? '',
);
}
@override
String toString() {
return 'OfflineTtsKokoroModelConfig(model: $model, voices: $voices, tokens: $tokens, dataDir: $dataDir, lengthScale: $lengthScale, dictDir: $dictDir, lexicon: $lexicon)';
return 'OfflineTtsKokoroModelConfig(model: $model, voices: $voices, tokens: $tokens, dataDir: $dataDir, lengthScale: $lengthScale, dictDir: $dictDir, lexicon: $lexicon, lang: $lang)';
}
Map<String, dynamic> toJson() => {
@@ -144,6 +146,7 @@ class OfflineTtsKokoroModelConfig {
'lengthScale': lengthScale,
'dictDir': dictDir,
'lexicon': lexicon,
'lang': lang,
};
final String model;
@@ -153,6 +156,7 @@ class OfflineTtsKokoroModelConfig {
final double lengthScale;
final String dictDir;
final String lexicon;
final String lang;
}
class OfflineTtsModelConfig {
@@ -286,6 +290,7 @@ class OfflineTts {
c.ref.model.kokoro.lengthScale = config.model.kokoro.lengthScale;
c.ref.model.kokoro.dictDir = config.model.kokoro.dictDir.toNativeUtf8();
c.ref.model.kokoro.lexicon = config.model.kokoro.lexicon.toNativeUtf8();
c.ref.model.kokoro.lang = config.model.kokoro.lang.toNativeUtf8();
c.ref.model.numThreads = config.model.numThreads;
c.ref.model.debug = config.model.debug ? 1 : 0;
@@ -302,6 +307,7 @@ class OfflineTts {
calloc.free(c.ref.ruleFsts);
calloc.free(c.ref.model.provider);
calloc.free(c.ref.model.kokoro.lang);
calloc.free(c.ref.model.kokoro.lexicon);
calloc.free(c.ref.model.kokoro.dictDir);
calloc.free(c.ref.model.kokoro.dataDir);