Add node-addon-api for VAD (#864)
This commit is contained in:
@@ -1,8 +1,12 @@
|
||||
const addon = require('./addon.js')
|
||||
const streaming_asr = require('./streaming-asr.js');
|
||||
const vad = require('./vad.js');
|
||||
|
||||
module.exports = {
|
||||
OnlineRecognizer: streaming_asr.OnlineRecognizer,
|
||||
readWave: addon.readWave,
|
||||
writeWave: addon.writeWave,
|
||||
Display: streaming_asr.Display,
|
||||
Vad: vad.Vad,
|
||||
CircularBuffer: vad.CircularBuffer,
|
||||
}
|
||||
|
||||
@@ -15,10 +15,11 @@ class OnlineStream {
|
||||
this.handle = handle;
|
||||
}
|
||||
|
||||
// obj is {samples: samples, sampleRate: sampleRate}
|
||||
// samples is a float32 array containing samples in the range [-1, 1]
|
||||
acceptWaveform(samples, sampleRate) {
|
||||
addon.acceptWaveformOnline(
|
||||
this.handle, {samples: samples, sampleRate: sampleRate})
|
||||
// sampleRate is a number
|
||||
acceptWaveform(obj) {
|
||||
addon.acceptWaveformOnline(this.handle, obj)
|
||||
}
|
||||
|
||||
inputFinished() {
|
||||
|
||||
88
scripts/node-addon-api/lib/vad.js
Normal file
88
scripts/node-addon-api/lib/vad.js
Normal file
@@ -0,0 +1,88 @@
|
||||
const addon = require('./addon.js');
|
||||
|
||||
class CircularBuffer {
|
||||
constructor(capacity) {
|
||||
this.handle = addon.createCircularBuffer(capacity);
|
||||
}
|
||||
|
||||
// samples is a float32 array
|
||||
push(samples) {
|
||||
addon.circularBufferPush(this.handle, samples);
|
||||
}
|
||||
|
||||
// return a float32 array
|
||||
get(startIndex, n) {
|
||||
return addon.circularBufferGet(this.handle, startIndex, n);
|
||||
}
|
||||
|
||||
pop(n) {
|
||||
return addon.circularBufferPop(this.handle, n);
|
||||
}
|
||||
|
||||
size() {
|
||||
return addon.circularBufferSize(this.handle);
|
||||
}
|
||||
|
||||
head() {
|
||||
return addon.circularBufferHead(this.handle);
|
||||
}
|
||||
|
||||
reset() {
|
||||
return addon.circularBufferReset(this.handle);
|
||||
}
|
||||
}
|
||||
|
||||
class Vad {
|
||||
/*
|
||||
config = {
|
||||
sileroVad: {
|
||||
model: "./silero_vad.onnx",
|
||||
threshold: 0.5,
|
||||
}
|
||||
}
|
||||
*/
|
||||
constructor(config, bufferSizeInSeconds) {
|
||||
this.handle =
|
||||
addon.createVoiceActivityDetector(config, bufferSizeInSeconds);
|
||||
this.config = config;
|
||||
}
|
||||
|
||||
acceptWaveform(samples) {
|
||||
addon.voiceActivityDetectorAcceptWaveform(this.handle, samples)
|
||||
}
|
||||
|
||||
isEmpty() {
|
||||
return addon.voiceActivityDetectorIsEmpty(this.handle)
|
||||
}
|
||||
|
||||
isDetected() {
|
||||
return addon.voiceActivityDetectorIsDetected(this.handle)
|
||||
}
|
||||
|
||||
pop() {
|
||||
addon.voiceActivityDetectorPop(this.handle)
|
||||
}
|
||||
|
||||
clear() {
|
||||
addon.VoiceActivityDetectorClearWrapper(this.handle)
|
||||
}
|
||||
|
||||
/*
|
||||
{
|
||||
samples: a 1-d float32 array,
|
||||
start: a int32
|
||||
}
|
||||
*/
|
||||
front() {
|
||||
return addon.voiceActivityDetectorFront(this.handle)
|
||||
}
|
||||
|
||||
reset() {
|
||||
return addon.VoiceActivityDetectorResetWrapper(this.handle)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
Vad,
|
||||
CircularBuffer,
|
||||
}
|
||||
Reference in New Issue
Block a user