ysdede's picture
feat(space): migrate Hugging Face Space to keet SolidJS app
b8cc2bf
/**
* Simple linear interpolation resampler for downsampling audio.
* Good enough for speech recognition where we're going 48kHz -> 16kHz.
*/
export function resampleLinear(input: Float32Array, fromRate: number, toRate: number): Float32Array {
if (fromRate === toRate) return input;
const ratio = fromRate / toRate;
const outputLength = Math.floor(input.length / ratio);
const output = new Float32Array(outputLength);
for (let i = 0; i < outputLength; i++) {
const srcIndex = i * ratio;
const srcIndexFloor = Math.floor(srcIndex);
const srcIndexCeil = Math.min(srcIndexFloor + 1, input.length - 1);
const t = srcIndex - srcIndexFloor;
// Linear interpolation
output[i] = input[srcIndexFloor] * (1 - t) + input[srcIndexCeil] * t;
}
return output;
}