UNPKG

sherpa-onnx-node

Version:

Speech-to-text, text-to-speech, speaker diarization, and speech enhancement using Next-gen Kaldi without internet connection

69 lines (59 loc) 1.61 kB
/** @typedef {import('./types').KeywordSpotterConfig} KeywordSpotterConfig */ /** @typedef {import('./types').KeywordSpotterHandle} KeywordSpotterHandle */ /** @typedef {import('./types').KeywordResult} KeywordResult */ /** @typedef {import('./streaming-asr').OnlineStream} OnlineStream */ const addon = require('./addon.js'); const streaming_asr = require('./streaming-asr.js'); /** * KeywordSpotter handles keyword detection. */ class KeywordSpotter { /** * @param {KeywordSpotterConfig} config */ constructor(config) { this.handle = addon.createKeywordSpotter(config); this.config = config } /** * Create an OnlineStream for the spotter. * @returns {OnlineStream} */ createStream() { const handle = addon.createKeywordStream(this.handle); return new streaming_asr.OnlineStream(handle); } /** * @param {OnlineStream} stream * @returns {boolean} */ isReady(stream) { return addon.isKeywordStreamReady(this.handle, stream.handle); } /** * Trigger decode on a stream. * @param {OnlineStream} stream */ decode(stream) { addon.decodeKeywordStream(this.handle, stream.handle); } /** * Reset a stream. * @param {OnlineStream} stream */ reset(stream) { addon.resetKeywordStream(this.handle, stream.handle); } /** * Get the keyword result for a stream. * @param {OnlineStream} stream * @returns {KeywordResult} */ getResult(stream) { const jsonStr = addon.getKeywordResultAsJson(this.handle, stream.handle); return JSON.parse(jsonStr); } } module.exports = { KeywordSpotter, }