Files
react-voice-agent/js_server/static/audio-processor-worklet.js
T
Jacob Lee 5bec194aa0 Adds TS example agent (#2)
* Adds TS example agent

* Adds README

* Fix calculator
2024-10-04 09:56:36 -07:00

32 lines
1.0 KiB
JavaScript

// source: https://github.com/Azure-Samples/aisearch-openai-rag-audio/blob/7f685a8969e3b63e8c3ef345326c21f5ab82b1c3/app/frontend/public/audio-processor-worklet.js
const MIN_INT16 = -0x8000;
const MAX_INT16 = 0x7fff;
class PCMAudioProcessor extends AudioWorkletProcessor {
constructor() {
super();
}
process(inputs, outputs, parameters) {
const input = inputs[0];
if (input.length > 0) {
const float32Buffer = input[0];
const int16Buffer = this.float32ToInt16(float32Buffer);
this.port.postMessage(int16Buffer);
}
return true;
}
float32ToInt16(float32Array) {
const int16Array = new Int16Array(float32Array.length);
for (let i = 0; i < float32Array.length; i++) {
let val = Math.floor(float32Array[i] * MAX_INT16);
val = Math.max(MIN_INT16, Math.min(MAX_INT16, val));
int16Array[i] = val;
}
return int16Array;
}
}
registerProcessor("audio-processor-worklet", PCMAudioProcessor);