Compare commits
48 Commits
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,39 @@ |
||||
class RecognizerAudioProcessor extends AudioWorkletProcessor { |
||||
constructor(options) { |
||||
super(options); |
||||
|
||||
this.port.onmessage = this._processMessage.bind(this); |
||||
} |
||||
|
||||
_processMessage(event) { |
||||
// console.debug(`Received event ${JSON.stringify(event.data, null, 2)}`);
|
||||
if (event.data.action === "init") { |
||||
this._recognizerId = event.data.recognizerId; |
||||
this._recognizerPort = event.ports[0]; |
||||
} |
||||
} |
||||
|
||||
process(inputs, outputs, parameters) { |
||||
const data = inputs[0][0]; |
||||
if (this._recognizerPort && data) { |
||||
// AudioBuffer samples are represented as floating point numbers between -1.0 and 1.0 whilst
|
||||
// Kaldi expects them to be between -32768 and 32767 (the range of a signed int16)
|
||||
const audioArray = data.map((value) => value * 0x8000); |
||||
|
||||
this._recognizerPort.postMessage( |
||||
{ |
||||
action: "audioChunk", |
||||
data: audioArray, |
||||
recognizerId: this._recognizerId, |
||||
sampleRate, // Part of AudioWorkletGlobalScope
|
||||
}, |
||||
{ |
||||
transfer: [audioArray.buffer], |
||||
} |
||||
); |
||||
} |
||||
return true; |
||||
} |
||||
} |
||||
|
||||
registerProcessor('recognizer-processor', RecognizerAudioProcessor) |
Loading…
Reference in new issue