UNPKG

audio-inspect

Version:

Lightweight yet powerful audio analysis library

227 lines (222 loc) 6.92 kB
/** * audio-inspect ライブラリの型定義 */ /** * 音声データの構造 */ interface AudioData { /** サンプルレート(Hz) */ sampleRate: number; /** チャンネルごとのオーディオデータ */ channelData: Float32Array[]; /** 音声の長さ(秒) */ duration: number; /** チャンネル数 */ numberOfChannels: number; /** サンプル数 */ length: number; } /** * 振幅測定のオプション */ interface AmplitudeOptions { channel?: number; 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; } /** * 新しいWaveform解析結果(Float32Array対応) */ interface WaveformAnalysisResult extends BaseAnalysisResult { /** 振幅データ(直接使用可能) */ amplitudes: Float32Array; /** タイムスタンプ(オプショナル) */ timestamps?: Float32Array; /** メタデータ */ frameCount: number; samplesPerFrame: number; framesPerSecond: number; /** 統計情報 */ maxAmplitude: number; averageAmplitude: number; } /** * 新しいPeaks解析結果(Float32Array対応) */ interface PeaksAnalysisResult extends BaseAnalysisResult { /** サンプル位置 */ positions: Float32Array; /** ピーク振幅 */ amplitudes: Float32Array; /** 時間(秒) */ times: Float32Array; /** 統計情報 */ maxAmplitude: number; averageAmplitude: number; count: number; } /** * 新しいRMS解析結果(統一されたインターフェース) */ interface RMSAnalysisResult extends BaseAnalysisResult { /** RMS値 */ value: number; /** デシベル値(オプショナル) */ valueDB?: number; /** 処理したチャンネル */ channel: number; } /** * ピーク検出のオプション */ interface PeaksOptions { /** 抽出するピークの数(デフォルト: 100) */ count?: number; /** ピーク検出の閾値(0-1、デフォルト: 0.1) */ threshold?: number; /** 解析するチャンネル(デフォルト: 0、-1で全チャンネルの平均) */ channel?: number; /** 最小ピーク間距離(サンプル数、デフォルト: サンプルレート/100) */ minDistance?: number; } /** * ピーク情報 */ interface Peak { /** ピークの位置(サンプル数) */ position: number; /** ピークの時間位置(秒) */ time: number; /** ピークの振幅(0-1) */ amplitude: number; } /** * ピーク検出結果 */ interface PeaksResult { /** 検出されたピーク */ peaks: Peak[]; /** 最大振幅 */ maxAmplitude: number; /** 平均振幅 */ averageAmplitude: number; } /** * ピーク検出を行う */ declare function getPeaks(audio: AudioData, options?: PeaksOptions): PeaksResult; /** * RMS(Root Mean Square)を計算 */ declare function getRMS(audio: AudioData, optionsOrChannel?: AmplitudeOptions | number): number; /** * ピーク振幅を計算 */ declare function getPeakAmplitude(audio: AudioData, options?: AmplitudeOptions): number; /** * ゼロクロッシング率を計算 */ declare function getZeroCrossing(audio: AudioData, channel?: number): number; /** * 波形データ取得のオプション */ interface WaveformOptions { /** 1秒あたりのサンプル数(解像度、デフォルト: 60) */ framesPerSecond?: number; /** 解析するチャンネル(デフォルト: 0、-1で全チャンネルの平均) */ channel?: number; /** 振幅の計算方法(デフォルト: 'rms') */ method?: 'rms' | 'peak' | 'average'; } /** * 波形データポイント */ interface WaveformPoint { /** 時間位置(秒) */ time: number; /** 振幅値(0-1) */ amplitude: number; } /** * 波形データ取得結果 */ interface WaveformResult { /** 波形データポイントの配列 */ waveform: WaveformPoint[]; /** 最大振幅 */ maxAmplitude: number; /** 平均振幅 */ averageAmplitude: number; /** フレーム数 */ frameCount: number; /** フレームあたりのサンプル数 */ samplesPerFrame: number; } /** * 時間軸に沿った波形データを取得 */ declare function getWaveform(audio: AudioData, options?: WaveformOptions): WaveformResult; /** * 新しいWaveform解析オプション(プログレス通知対応) */ interface WaveformAnalysisOptions extends ProgressOptions { /** 1秒あたりのサンプル数(解像度、デフォルト: 60) */ framesPerSecond?: number; /** 解析するチャンネル(デフォルト: 0、-1で全チャンネルの平均) */ channel?: number; /** 振幅の計算方法(デフォルト: 'rms') */ method?: 'rms' | 'peak' | 'average'; } /** * 新しいPeaks解析オプション(プログレス通知対応) */ interface PeaksAnalysisOptions extends ProgressOptions { /** 抽出するピークの数(デフォルト: 100) */ count?: number; /** ピーク検出の閾値(0-1、デフォルト: 0.1) */ threshold?: number; /** 解析するチャンネル(デフォルト: 0、-1で全チャンネルの平均) */ channel?: number; /** 最小ピーク間距離(サンプル数、デフォルト: サンプルレート/100) */ minDistance?: number; } /** * 新しいRMS解析オプション(プログレス通知対応) */ interface RMSAnalysisOptions extends ProgressOptions { channel?: number; asDB?: boolean; reference?: number; } /** * 新しいWaveform解析(Float32Array対応) */ declare function getWaveformAnalysis(audio: AudioData, options?: WaveformAnalysisOptions): WaveformAnalysisResult; /** * 新しいPeaks解析(Float32Array対応) */ declare function getPeaksAnalysis(audio: AudioData, options?: PeaksAnalysisOptions): PeaksAnalysisResult; /** * 新しいRMS解析(統一されたインターフェース) */ 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 };