Support whisper language/task in various language bindings. (#679)
This commit is contained in:
@@ -393,11 +393,13 @@ function initSherpaOnnxOfflineNemoEncDecCtcModelConfig(config, Module) {
|
||||
function initSherpaOnnxOfflineWhisperModelConfig(config, Module) {
|
||||
const encoderLen = Module.lengthBytesUTF8(config.encoder) + 1;
|
||||
const decoderLen = Module.lengthBytesUTF8(config.decoder) + 1;
|
||||
const languageLen = Module.lengthBytesUTF8(config.language) + 1;
|
||||
const taskLen = Module.lengthBytesUTF8(config.task) + 1;
|
||||
|
||||
const n = encoderLen + decoderLen;
|
||||
const n = encoderLen + decoderLen + languageLen + taskLen;
|
||||
const buffer = Module._malloc(n);
|
||||
|
||||
const len = 2 * 4; // 2 pointers
|
||||
const len = 4 * 4; // 4 pointers
|
||||
const ptr = Module._malloc(len);
|
||||
|
||||
let offset = 0;
|
||||
@@ -405,12 +407,25 @@ function initSherpaOnnxOfflineWhisperModelConfig(config, Module) {
|
||||
offset += encoderLen;
|
||||
|
||||
Module.stringToUTF8(config.decoder, buffer + offset, decoderLen);
|
||||
offset += decoderLen;
|
||||
|
||||
Module.stringToUTF8(config.language, buffer + offset, languageLen);
|
||||
offset += languageLen;
|
||||
|
||||
Module.stringToUTF8(config.task, buffer + offset, taskLen);
|
||||
|
||||
offset = 0;
|
||||
Module.setValue(ptr, buffer + offset, 'i8*');
|
||||
offset += encoderLen;
|
||||
|
||||
Module.setValue(ptr + 4, buffer + offset, 'i8*');
|
||||
offset += decoderLen;
|
||||
|
||||
Module.setValue(ptr + 8, buffer + offset, 'i8*');
|
||||
offset += languageLen;
|
||||
|
||||
Module.setValue(ptr + 12, buffer + offset, 'i8*');
|
||||
offset += taskLen;
|
||||
|
||||
return {
|
||||
buffer: buffer, ptr: ptr, len: len,
|
||||
|
||||
@@ -14,7 +14,7 @@ static_assert(sizeof(SherpaOnnxOfflineTransducerModelConfig) == 3 * 4, "");
|
||||
static_assert(sizeof(SherpaOnnxOfflineParaformerModelConfig) == 4, "");
|
||||
|
||||
static_assert(sizeof(SherpaOnnxOfflineNemoEncDecCtcModelConfig) == 4, "");
|
||||
static_assert(sizeof(SherpaOnnxOfflineWhisperModelConfig) == 2 * 4, "");
|
||||
static_assert(sizeof(SherpaOnnxOfflineWhisperModelConfig) == 4 * 4, "");
|
||||
static_assert(sizeof(SherpaOnnxOfflineTdnnModelConfig) == 4, "");
|
||||
static_assert(sizeof(SherpaOnnxOfflineLMConfig) == 2 * 4, "");
|
||||
|
||||
@@ -77,6 +77,8 @@ void PrintOfflineRecognizerConfig(SherpaOnnxOfflineRecognizerConfig *config) {
|
||||
fprintf(stdout, "----------offline whisper model config----------\n");
|
||||
fprintf(stdout, "encoder: %s\n", whisper->encoder);
|
||||
fprintf(stdout, "decoder: %s\n", whisper->decoder);
|
||||
fprintf(stdout, "language: %s\n", whisper->language);
|
||||
fprintf(stdout, "task: %s\n", whisper->task);
|
||||
|
||||
fprintf(stdout, "----------offline tdnn model config----------\n");
|
||||
fprintf(stdout, "model: %s\n", tdnn->model);
|
||||
|
||||
Reference in New Issue
Block a user