sherpa-onnx
Version:
Speech-to-text, text-to-speech, speaker diarization, and speech enhancement using Next-gen Kaldi without internet connection
118 lines (96 loc) • 3.53 kB
JavaScript
// Copyright (c) 2023-2024 Xiaomi Corporation (authors: Fangjun Kuang)
// Emscripten >= 3.1.50 made MODULARIZE always return a Promise, even with
// WASM_ASYNC_COMPILATION=0. The runtime still attaches the exports onto the
// user-supplied moduleArg synchronously, so we pass our own object and ignore
// the (already-resolved) Promise — keeping this whole module synchronous.
const wasmModule = {};
require('./sherpa-onnx-wasm-nodejs.js')(wasmModule);
const sherpa_onnx_asr = require('./sherpa-onnx-asr.js');
const sherpa_onnx_tts = require('./sherpa-onnx-tts.node.js');
const sherpa_onnx_kws = require('./sherpa-onnx-kws.js');
const sherpa_onnx_wave = require('./sherpa-onnx-wave.js');
const sherpa_onnx_vad = require('./sherpa-onnx-vad.js');
const sherpa_onnx_punctuation = require('./sherpa-onnx-punctuation.js');
const sherpa_onnx_speaker_diarization =
require('./sherpa-onnx-speaker-diarization.js');
const sherpa_onnx_speech_enhancement =
require('./sherpa-onnx-speech-enhancement.js');
function createOnlineRecognizer(config) {
return sherpa_onnx_asr.createOnlineRecognizer(wasmModule, config);
}
function createOfflineRecognizer(config) {
return new sherpa_onnx_asr.OfflineRecognizer(config, wasmModule);
}
function createOfflineTts(config) {
return sherpa_onnx_tts.createOfflineTts(wasmModule, config);
}
function createKws(config) {
return sherpa_onnx_kws.createKws(wasmModule, config);
}
function createCircularBuffer(capacity) {
return new sherpa_onnx_vad.CircularBuffer(capacity, wasmModule);
}
function createVad(config) {
return sherpa_onnx_vad.createVad(wasmModule, config);
}
function createOfflinePunctuation(config) {
return new sherpa_onnx_punctuation.OfflinePunctuation(config, wasmModule);
}
function createOnlinePunctuation(config) {
return new sherpa_onnx_punctuation.OnlinePunctuation(config, wasmModule);
}
function createOfflineSpeakerDiarization(config) {
return sherpa_onnx_speaker_diarization.createOfflineSpeakerDiarization(
wasmModule, config);
}
function readWave(filename) {
return sherpa_onnx_wave.readWave(filename, wasmModule);
}
function writeWave(filename, data) {
sherpa_onnx_wave.writeWave(filename, data, wasmModule);
}
function readWaveFromBinaryData(uint8Array) {
return sherpa_onnx_wave.readWaveFromBinaryData(uint8Array, wasmModule);
}
function createOfflineSpeechDenoiser(config) {
return sherpa_onnx_speech_enhancement.createOfflineSpeechDenoiser(
wasmModule, config);
}
function createOnlineSpeechDenoiser(config) {
return sherpa_onnx_speech_enhancement.createOnlineSpeechDenoiser(
wasmModule, config);
}
function getVersion() {
const v = wasmModule._SherpaOnnxGetVersionStr();
return wasmModule.UTF8ToString(v);
}
function getGitSha1() {
const v = wasmModule._SherpaOnnxGetGitSha1();
return wasmModule.UTF8ToString(v);
}
function getGitDate() {
const v = wasmModule._SherpaOnnxGetGitDate();
return wasmModule.UTF8ToString(v);
}
// Note: online means streaming and offline means non-streaming here.
// Both of them don't require internet connection.
module.exports = {
createOnlineRecognizer,
createOfflineRecognizer,
createOfflineTts,
createKws,
readWave,
readWaveFromBinaryData,
writeWave,
createCircularBuffer,
createVad,
createOfflinePunctuation,
createOnlinePunctuation,
createOfflineSpeakerDiarization,
createOfflineSpeechDenoiser,
createOnlineSpeechDenoiser,
version: getVersion(),
gitSha1: getGitSha1(),
gitDate: getGitDate(),
};