UNPKG

voice-stream

Version:

A powerful React hook for real-time voice streaming, designed for AI-powered applications. Perfect for real-time transcription, voice assistants, and audio processing with features like silence detection and configurable audio processing.

35 lines (34 loc) 1.1 kB
export const downsampleBuffer = ( buffer: Float32Array, sampleRate: number, outSampleRate: number ): Int16Array => { if (outSampleRate === sampleRate) { const result = new Int16Array(buffer.length); for (let i = 0; i < buffer.length; i++) { const s = Math.max(-1, Math.min(1, buffer[i])); result[i] = s < 0 ? s * 0x8000 : s * 0x7fff; } return result; } const sampleRateRatio = sampleRate / outSampleRate; const newLength = Math.round(buffer.length / sampleRateRatio); const result = new Int16Array(newLength); let offsetResult = 0; let offsetBuffer = 0; while (offsetResult < newLength) { const nextOffsetBuffer = Math.round((offsetResult + 1) * sampleRateRatio); let accum = 0; let count = 0; for (let i = offsetBuffer; i < nextOffsetBuffer && i < buffer.length; i++) { accum += buffer[i]; count++; } const avg = accum / count; const s = Math.max(-1, Math.min(1, avg)); result[offsetResult] = s < 0 ? s * 0x8000 : s * 0x7fff; offsetResult++; offsetBuffer = nextOffsetBuffer; } return result; };