Skip to content

Commit 1ee3983

Browse files
committed
Wrap SherpaOnnxOfflineTtsModelConfig.
1 parent e64b033 commit 1ee3983

File tree

2 files changed

+49
-4
lines changed

2 files changed

+49
-4
lines changed

wasm/sherpa-onnx-wasm-main.cc

+7-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ extern "C" {
1313

1414
static_assert(sizeof(SherpaOnnxOfflineTtsVitsModelConfig) == 7 * 4, "");
1515

16-
void MyPrint(SherpaOnnxOfflineTtsVitsModelConfig *vits_model_config) {
16+
void MyPrint(SherpaOnnxOfflineTtsModelConfig *tts_model_config) {
17+
auto vits_model_config = &tts_model_config->vits;
1718
fprintf(stdout, "----------vits model config----------\n");
1819
fprintf(stdout, "model: %s\n", vits_model_config->model);
1920
fprintf(stdout, "lexicon: %s\n", vits_model_config->lexicon);
@@ -22,6 +23,11 @@ void MyPrint(SherpaOnnxOfflineTtsVitsModelConfig *vits_model_config) {
2223
fprintf(stdout, "noise scale: %.3f\n", vits_model_config->noise_scale);
2324
fprintf(stdout, "noise scale w: %.3f\n", vits_model_config->noise_scale_w);
2425
fprintf(stdout, "length scale: %.3f\n", vits_model_config->length_scale);
26+
27+
fprintf(stdout, "----------tts model config----------\n");
28+
fprintf(stdout, "num threads: %d\n", tts_model_config->num_threads);
29+
fprintf(stdout, "debug: %d\n", tts_model_config->debug);
30+
fprintf(stdout, "provider: %s\n", tts_model_config->provider);
2531
}
2632

2733
void CopyHeap(const char *src, int32_t num_bytes, char *dst) {

wasm/sherpa-onnx.js

+42-3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ function freeConfig(config) {
33
if ('buffer' in config) {
44
_free(config.buffer);
55
}
6+
7+
if ('config' in config) {
8+
freeConfig(config.config)
9+
}
10+
611
_free(config.ptr);
712
}
813

@@ -18,7 +23,7 @@ function initSherpaOnnxOfflineTtsVitsModelConfig(config) {
1823
let buffer = _malloc(n);
1924

2025
let len = 7 * 4;
21-
let ptr = _malloc(7 * 4);
26+
let ptr = _malloc(len);
2227

2328
let offset = 0;
2429
stringToUTF8(config.model, buffer + offset, modelLen);
@@ -55,16 +60,50 @@ function initSherpaOnnxOfflineTtsVitsModelConfig(config) {
5560
}
5661
}
5762

63+
function initSherpaOnnxOfflineTtsModelConfig(config) {
64+
let vitsModelConfig =
65+
initSherpaOnnxOfflineTtsVitsModelConfig(config.offlineTtsVitsModelConfig);
66+
67+
let len = vitsModelConfig.len + 3 * 4;
68+
let ptr = _malloc(len);
69+
70+
let offset = 0;
71+
Module._CopyHeap(vitsModelConfig.ptr, vitsModelConfig.len, ptr + offset);
72+
offset += vitsModelConfig.len;
73+
74+
Module.setValue(ptr + offset, config.numThreads, 'i32');
75+
offset += 4;
76+
77+
Module.setValue(ptr + offset, config.debug, 'i32');
78+
offset += 4;
79+
80+
let providerLen = lengthBytesUTF8(config.provider) + 1;
81+
let buffer = _malloc(providerLen);
82+
stringToUTF8(config.provider, buffer, providerLen);
83+
Module.setValue(ptr + offset, buffer, 'i8*');
84+
85+
return {
86+
buffer: buffer, ptr: ptr, len: len, config: vitsModelConfig,
87+
}
88+
}
89+
5890
function initSherpaOnnxOfflineTts() {
59-
let offlineTtsVitsModelConfig = initSherpaOnnxOfflineTtsVitsModelConfig({
91+
let offlineTtsVitsModelConfig = {
6092
model: './model.onnx',
6193
lexicon: './lexicon.txt',
6294
tokens: './tokens.txt',
6395
dataDir: './espeak-ng-data',
6496
noiseScale: 0.667,
6597
noiseScaleW: 0.8,
6698
lengthScale: 1.0,
99+
};
100+
let offlineTtsModelConfig = initSherpaOnnxOfflineTtsModelConfig({
101+
offlineTtsVitsModelConfig: offlineTtsVitsModelConfig,
102+
numThreads: 1,
103+
debug: 1,
104+
provider: 'cpu',
67105
})
68106
console.log(offlineTtsVitsModelConfig)
69-
Module._MyPrint(offlineTtsVitsModelConfig.ptr);
107+
console.log(offlineTtsModelConfig)
108+
Module._MyPrint(offlineTtsModelConfig.ptr);
70109
}

0 commit comments

Comments
 (0)