Add WebAssembly for SenseVoice (#1158)
This commit is contained in:
@@ -14,14 +14,10 @@ function freeConfig(config, Module) {
|
||||
// The user should free the returned pointers
|
||||
function initSherpaOnnxOfflineTtsVitsModelConfig(config, Module) {
|
||||
const modelLen = Module.lengthBytesUTF8(config.model) + 1;
|
||||
const lexiconLen = Module.lengthBytesUTF8(config.lexicon) + 1;
|
||||
const tokensLen = Module.lengthBytesUTF8(config.tokens) + 1;
|
||||
const dataDirLen = Module.lengthBytesUTF8(config.dataDir) + 1;
|
||||
|
||||
if (!('dictDir' in config)) {
|
||||
config.dictDir = ''
|
||||
}
|
||||
const dictDirLen = Module.lengthBytesUTF8(config.dictDir) + 1;
|
||||
const lexiconLen = Module.lengthBytesUTF8(config.lexicon || '') + 1;
|
||||
const tokensLen = Module.lengthBytesUTF8(config.tokens || '') + 1;
|
||||
const dataDirLen = Module.lengthBytesUTF8(config.dataDir || '') + 1;
|
||||
const dictDirLen = Module.lengthBytesUTF8(config.dictDir || '') + 1;
|
||||
|
||||
const n = modelLen + lexiconLen + tokensLen + dataDirLen + dictDirLen;
|
||||
|
||||
@@ -31,19 +27,19 @@ function initSherpaOnnxOfflineTtsVitsModelConfig(config, Module) {
|
||||
const ptr = Module._malloc(len);
|
||||
|
||||
let offset = 0;
|
||||
Module.stringToUTF8(config.model, buffer + offset, modelLen);
|
||||
Module.stringToUTF8(config.model || '', buffer + offset, modelLen);
|
||||
offset += modelLen;
|
||||
|
||||
Module.stringToUTF8(config.lexicon, buffer + offset, lexiconLen);
|
||||
Module.stringToUTF8(config.lexicon || '', buffer + offset, lexiconLen);
|
||||
offset += lexiconLen;
|
||||
|
||||
Module.stringToUTF8(config.tokens, buffer + offset, tokensLen);
|
||||
Module.stringToUTF8(config.tokens || '', buffer + offset, tokensLen);
|
||||
offset += tokensLen;
|
||||
|
||||
Module.stringToUTF8(config.dataDir, buffer + offset, dataDirLen);
|
||||
Module.stringToUTF8(config.dataDir || '', buffer + offset, dataDirLen);
|
||||
offset += dataDirLen;
|
||||
|
||||
Module.stringToUTF8(config.dictDir, buffer + offset, dictDirLen);
|
||||
Module.stringToUTF8(config.dictDir || '', buffer + offset, dictDirLen);
|
||||
offset += dictDirLen;
|
||||
|
||||
offset = 0;
|
||||
@@ -59,9 +55,9 @@ function initSherpaOnnxOfflineTtsVitsModelConfig(config, Module) {
|
||||
Module.setValue(ptr + 12, buffer + offset, 'i8*');
|
||||
offset += dataDirLen;
|
||||
|
||||
Module.setValue(ptr + 16, config.noiseScale, 'float');
|
||||
Module.setValue(ptr + 20, config.noiseScaleW, 'float');
|
||||
Module.setValue(ptr + 24, config.lengthScale, 'float');
|
||||
Module.setValue(ptr + 16, config.noiseScale || 0.667, 'float');
|
||||
Module.setValue(ptr + 20, config.noiseScaleW || 0.8, 'float');
|
||||
Module.setValue(ptr + 24, config.lengthScale || 1.0, 'float');
|
||||
Module.setValue(ptr + 28, buffer + offset, 'i8*');
|
||||
offset += dictDirLen;
|
||||
|
||||
@@ -81,13 +77,13 @@ function initSherpaOnnxOfflineTtsModelConfig(config, Module) {
|
||||
Module._CopyHeap(vitsModelConfig.ptr, vitsModelConfig.len, ptr + offset);
|
||||
offset += vitsModelConfig.len;
|
||||
|
||||
Module.setValue(ptr + offset, config.numThreads, 'i32');
|
||||
Module.setValue(ptr + offset, config.numThreads || 1, 'i32');
|
||||
offset += 4;
|
||||
|
||||
Module.setValue(ptr + offset, config.debug, 'i32');
|
||||
Module.setValue(ptr + offset, config.debug || 0, 'i32');
|
||||
offset += 4;
|
||||
|
||||
const providerLen = Module.lengthBytesUTF8(config.provider) + 1;
|
||||
const providerLen = Module.lengthBytesUTF8(config.provider || 'cpu') + 1;
|
||||
const buffer = Module._malloc(providerLen);
|
||||
Module.stringToUTF8(config.provider, buffer, providerLen);
|
||||
Module.setValue(ptr + offset, buffer, 'i8*');
|
||||
@@ -107,17 +103,17 @@ function initSherpaOnnxOfflineTtsConfig(config, Module) {
|
||||
Module._CopyHeap(modelConfig.ptr, modelConfig.len, ptr + offset);
|
||||
offset += modelConfig.len;
|
||||
|
||||
const ruleFstsLen = Module.lengthBytesUTF8(config.ruleFsts) + 1;
|
||||
const ruleFarsLen = Module.lengthBytesUTF8(config.ruleFars) + 1;
|
||||
const ruleFstsLen = Module.lengthBytesUTF8(config.ruleFsts || '') + 1;
|
||||
const ruleFarsLen = Module.lengthBytesUTF8(config.ruleFars || '') + 1;
|
||||
|
||||
const buffer = Module._malloc(ruleFstsLen + ruleFarsLen);
|
||||
Module.stringToUTF8(config.ruleFsts, buffer, ruleFstsLen);
|
||||
Module.stringToUTF8(config.ruleFars, buffer + ruleFstsLen, ruleFarsLen);
|
||||
Module.stringToUTF8(config.ruleFsts || '', buffer, ruleFstsLen);
|
||||
Module.stringToUTF8(config.ruleFars || '', buffer + ruleFstsLen, ruleFarsLen);
|
||||
|
||||
Module.setValue(ptr + offset, buffer, 'i8*');
|
||||
offset += 4;
|
||||
|
||||
Module.setValue(ptr + offset, config.maxNumSentences, 'i32');
|
||||
Module.setValue(ptr + offset, config.maxNumSentences || 1, 'i32');
|
||||
offset += 4;
|
||||
|
||||
Module.setValue(ptr + offset, buffer + ruleFstsLen, 'i8*');
|
||||
|
||||
Reference in New Issue
Block a user