aixblock-voice-ai-deepgram
Version:
A React component for real-time transcription and voice agent interactions using Deepgram APIs
45 lines (44 loc) • 2.09 kB
TypeScript
/**
* Audio processing utilities for smooth real-time audio playback
*/
/**
* Creates an AudioBuffer from raw Linear16 PCM data
* @param audioContext The Web Audio API AudioContext
* @param data ArrayBuffer containing Linear16 PCM audio data
* @param sampleRate Sample rate of the audio data (default: 24000Hz)
* @returns AudioBuffer ready for playback
*/
export declare function createAudioBuffer(audioContext: AudioContext, data: ArrayBuffer, sampleRate?: number): AudioBuffer | undefined;
/**
* Plays an AudioBuffer with precise timing to ensure continuous playback
* @param audioContext The Web Audio API AudioContext
* @param buffer AudioBuffer to play
* @param startTimeRef Reference to the start time (to maintain continuity between chunks)
* @param analyzer Optional AudioAnalyser node for volume analysis
* @returns AudioBufferSourceNode that's playing the buffer
*/
export declare function playAudioBuffer(audioContext: AudioContext, buffer: AudioBuffer, startTimeRef: {
current: number;
}, analyzer?: AnalyserNode): AudioBufferSourceNode;
/**
* Downsamples audio data from one sample rate to another
* @param buffer Float32Array of audio samples
* @param fromSampleRate Original sample rate
* @param toSampleRate Target sample rate
* @returns Downsampled Float32Array
*/
export declare function downsample(buffer: Float32Array, fromSampleRate: number, toSampleRate: number): Float32Array;
/**
* Converts Float32Array audio data to Int16Array format
* @param buffer Float32Array of audio samples
* @returns ArrayBuffer containing Int16 audio data
*/
export declare function convertFloat32ToInt16(buffer: Float32Array): ArrayBuffer;
/**
* Normalizes audio volume using frequency data from an analyzer
* @param analyzer AudioAnalyser node
* @param dataArray Uint8Array to store analyzer data
* @param normalizationFactor Factor to normalize against (higher = quieter)
* @returns Normalized volume level between 0-1
*/
export declare function normalizeVolume(analyzer: AnalyserNode, dataArray: Uint8Array, normalizationFactor: number): number;