audio-inspect
Version:
Lightweight yet powerful audio analysis library
107 lines (103 loc) • 3.48 kB
TypeScript
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 };