coyotte508's picture
coyotte508 HF staff
🍱 Copy folders from huggingface.js
b2ecf7d
// for js/src/lib/components/InferenceWidget/shared/WidgetRealtimeRecorder/Recorder.ts
class AudioDataExtractor extends AudioWorkletProcessor {
_updateIntervalInMS;
_sampleInFrames;
_index;
_buffer;
constructor() {
super();
this._updateIntervalInMS = 50;
this._sampleInFrames = parseInt((this._updateIntervalInMS / 1000.0) * sampleRate);
this._index = 0;
this._buffer = new Float32Array(this._sampleInFrames);
}
process(inputs, outputs, parameters) {
// Note that the input will be down-mixed to mono; however, if no inputs are
// connected then zero channels will be passed in.
if (inputs.length > 0 && inputs[0].length > 0) {
const rest = this._buffer.length - this._index;
if (rest < inputs[0][0].length) {
this._buffer.set(inputs[0][0].slice(0, rest), this._index);
this.port.postMessage({
buffer: this._buffer.slice(0),
sampling_rate: sampleRate,
});
this._buffer.fill(0);
this._index = inputs[0][0].length - rest;
} else {
this._buffer.set(inputs[0][0], this._index);
this._index += inputs[0][0].length;
}
}
return true;
}
}
registerProcessor("AudioDataExtractor", AudioDataExtractor);