UNPKG

audio-inspect

Version:

Lightweight yet powerful audio analysis library

107 lines (103 loc) 3.48 kB
interface AudioData { sampleRate: number; channelData: Float32Array[]; duration: number; numberOfChannels: number; length: number; } type ChannelSelector = 'mix' | number | 'all' | readonly number[]; interface AmplitudeOptions { channel?: ChannelSelector; asDB?: boolean; reference?: number; truePeak?: boolean; oversamplingFactor?: number; interpolation?: 'linear' | 'cubic' | 'sinc'; } interface ProgressOptions { onProgress?: (percent: number, message?: string) => void; } interface BaseAnalysisResult { sampleRate: number; duration: number; processingTime?: number; } interface WaveformAnalysisResult extends BaseAnalysisResult { amplitudes: Float32Array; timestamps?: Float32Array; frameCount: number; samplesPerFrame: number; framesPerSecond: number; maxAmplitude: number; averageAmplitude: number; } interface PeaksAnalysisResult extends BaseAnalysisResult { positions: Float32Array; amplitudes: Float32Array; times: Float32Array; maxAmplitude: number; averageAmplitude: number; count: number; } interface RMSAnalysisResult extends BaseAnalysisResult { value: number; valueDB?: number; channel: number; } interface PeaksOptions { count?: number; threshold?: number; channel?: ChannelSelector; minDistance?: number; } interface Peak { position: number; time: number; amplitude: number; } interface PeaksResult { peaks: Peak[]; maxAmplitude: number; averageAmplitude: number; } declare function getPeaks(audio: AudioData, options?: PeaksOptions): PeaksResult; declare function getRMS(audio: AudioData, options?: AmplitudeOptions): number; declare function getPeakAmplitude(audio: AudioData, options?: AmplitudeOptions): number; declare function getZeroCrossing(audio: AudioData, channel?: ChannelSelector): number; interface WaveformOptions { framesPerSecond?: number; channel?: ChannelSelector; method?: 'rms' | 'peak' | 'average'; } interface WaveformPoint { time: number; amplitude: number; } interface WaveformResult { waveform: WaveformPoint[]; maxAmplitude: number; averageAmplitude: number; frameCount: number; samplesPerFrame: number; } declare function getWaveform(audio: AudioData, options?: WaveformOptions): WaveformResult; interface WaveformAnalysisOptions extends ProgressOptions { framesPerSecond?: number; channel?: ChannelSelector; method?: 'rms' | 'peak' | 'average'; } interface PeaksAnalysisOptions extends ProgressOptions { count?: number; threshold?: number; channel?: ChannelSelector; minDistance?: number; } interface RMSAnalysisOptions extends ProgressOptions { channel?: ChannelSelector; asDB?: boolean; reference?: number; } declare function getWaveformAnalysis(audio: AudioData, options?: WaveformAnalysisOptions): WaveformAnalysisResult; declare function getPeaksAnalysis(audio: AudioData, options?: PeaksAnalysisOptions): PeaksAnalysisResult; declare function getRMSAnalysis(audio: AudioData, options?: RMSAnalysisOptions): RMSAnalysisResult; export { type Peak, type PeaksAnalysisOptions, type PeaksOptions, type PeaksResult, type RMSAnalysisOptions, type WaveformAnalysisOptions, type WaveformOptions, type WaveformPoint, type WaveformResult, getPeakAmplitude as getPeak, getPeakAmplitude, getPeaks, getPeaksAnalysis, getRMS, getRMSAnalysis, getWaveform, getWaveformAnalysis, getZeroCrossing };