in frontend/src/lib/utils.ts [18:34]
export function arrayBufferToBase64(
arrayBuffer: ArrayBuffer | ArrayBufferLike | Float32Array | Int16Array
) {
if (arrayBuffer instanceof Float32Array) {
arrayBuffer = floatTo16BitPCM(arrayBuffer);
} else if (arrayBuffer instanceof Int16Array) {
arrayBuffer = arrayBuffer.buffer;
}
let binary = "";
const bytes = new Uint8Array(arrayBuffer);
const chunkSize = 0x8000; // 32KB chunk size
for (let i = 0; i < bytes.length; i += chunkSize) {
const chunk = bytes.subarray(i, i + chunkSize);
binary += String.fromCharCode.apply(null, [...chunk]);
}
return btoa(binary);
}