Add dict_dir arg to c api to support Chinese TTS models using jieba (#809)
This commit is contained in:
@@ -43,6 +43,7 @@ void PrintOfflineTtsConfig(SherpaOnnxOfflineTtsConfig *tts_config) {
|
||||
fprintf(stdout, "noise scale: %.3f\n", vits_model_config->noise_scale);
|
||||
fprintf(stdout, "noise scale w: %.3f\n", vits_model_config->noise_scale_w);
|
||||
fprintf(stdout, "length scale: %.3f\n", vits_model_config->length_scale);
|
||||
fprintf(stdout, "dict_dir: %s\n", vits_model_config->dict_dir);
|
||||
|
||||
fprintf(stdout, "----------tts model config----------\n");
|
||||
fprintf(stdout, "num threads: %d\n", tts_model_config->num_threads);
|
||||
|
||||
@@ -18,7 +18,12 @@ function initSherpaOnnxOfflineTtsVitsModelConfig(config, Module) {
|
||||
const tokensLen = Module.lengthBytesUTF8(config.tokens) + 1;
|
||||
const dataDirLen = Module.lengthBytesUTF8(config.dataDir) + 1;
|
||||
|
||||
const n = modelLen + lexiconLen + tokensLen + dataDirLen;
|
||||
if (!('dictDir' in config)) {
|
||||
config.dictDir = ''
|
||||
}
|
||||
const dictDirLen = Module.lengthBytesUTF8(config.dictDir) + 1;
|
||||
|
||||
const n = modelLen + lexiconLen + tokensLen + dataDirLen + dictDirLen;
|
||||
|
||||
const buffer = Module._malloc(n);
|
||||
|
||||
@@ -38,6 +43,9 @@ function initSherpaOnnxOfflineTtsVitsModelConfig(config, Module) {
|
||||
Module.stringToUTF8(config.dataDir, buffer + offset, dataDirLen);
|
||||
offset += dataDirLen;
|
||||
|
||||
Module.stringToUTF8(config.dictDir, buffer + offset, dictDirLen);
|
||||
offset += dictDirLen;
|
||||
|
||||
offset = 0;
|
||||
Module.setValue(ptr, buffer + offset, 'i8*');
|
||||
offset += modelLen;
|
||||
@@ -54,6 +62,8 @@ function initSherpaOnnxOfflineTtsVitsModelConfig(config, Module) {
|
||||
Module.setValue(ptr + 16, config.noiseScale, 'float');
|
||||
Module.setValue(ptr + 20, config.noiseScaleW, 'float');
|
||||
Module.setValue(ptr + 24, config.lengthScale, 'float');
|
||||
Module.setValue(ptr + 28, buffer + offset, 'i8*');
|
||||
offset += dictDirLen;
|
||||
|
||||
return {
|
||||
buffer: buffer, ptr: ptr, len: len,
|
||||
@@ -184,6 +194,7 @@ function createOfflineTts(Module, myConfig) {
|
||||
lexicon: '',
|
||||
tokens: './tokens.txt',
|
||||
dataDir: './espeak-ng-data',
|
||||
dictDir: '',
|
||||
noiseScale: 0.667,
|
||||
noiseScaleW: 0.8,
|
||||
lengthScale: 1.0,
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
extern "C" {
|
||||
|
||||
static_assert(sizeof(SherpaOnnxOfflineTtsVitsModelConfig) == 7 * 4, "");
|
||||
static_assert(sizeof(SherpaOnnxOfflineTtsVitsModelConfig) == 8 * 4, "");
|
||||
static_assert(sizeof(SherpaOnnxOfflineTtsModelConfig) ==
|
||||
sizeof(SherpaOnnxOfflineTtsVitsModelConfig) + 3 * 4,
|
||||
"");
|
||||
@@ -32,6 +32,7 @@ void MyPrint(SherpaOnnxOfflineTtsConfig *tts_config) {
|
||||
fprintf(stdout, "noise scale: %.3f\n", vits_model_config->noise_scale);
|
||||
fprintf(stdout, "noise scale w: %.3f\n", vits_model_config->noise_scale_w);
|
||||
fprintf(stdout, "length scale: %.3f\n", vits_model_config->length_scale);
|
||||
fprintf(stdout, "dict_dir: %s\n", vits_model_config->dict_dir);
|
||||
|
||||
fprintf(stdout, "----------tts model config----------\n");
|
||||
fprintf(stdout, "num threads: %d\n", tts_model_config->num_threads);
|
||||
|
||||
Reference in New Issue
Block a user