UNPKG

audio-inspect

Version:

Lightweight yet powerful audio analysis library

286 lines (282 loc) 9.27 kB
/** * audio-inspect ライブラリの型定義 */ /** * 音声データの構造 */ interface AudioData { /** サンプルレート(Hz) */ sampleRate: number; /** チャンネルごとのオーディオデータ */ channelData: Float32Array[]; /** 音声の長さ(秒) */ duration: number; /** チャンネル数 */ numberOfChannels: number; /** サンプル数 */ length: number; } /** * 窓関数の種類(拡張版) */ type WindowFunction = 'hann' | 'hamming' | 'blackman' | 'rectangular' | 'none'; /** * スペクトル特徴量のオプション */ interface SpectralFeaturesOptions { /** FFTサイズ */ fftSize?: number; /** 窓関数 */ windowFunction?: 'hann' | 'hamming' | 'blackman' | 'none'; /** 解析するチャンネル */ channel?: number; /** 最小周波数 */ minFrequency?: number; /** 最大周波数 */ maxFrequency?: number; /** スペクトルロールオフの閾値(0-1) */ rolloffThreshold?: number; } /** * スペクトル特徴量の結果 */ interface SpectralFeaturesResult { /** スペクトル重心(Hz) */ spectralCentroid: number; /** スペクトル帯域幅(Hz) */ spectralBandwidth: number; /** スペクトルロールオフ(Hz) */ spectralRolloff: number; /** スペクトルフラットネス(0-1) */ spectralFlatness: number; /** スペクトルフラックス */ spectralFlux?: number; /** ゼロ交差率 */ zeroCrossingRate: number; /** 使用された周波数範囲 */ frequencyRange: { min: number; max: number; }; } /** * 時系列スペクトル特徴量のオプション */ interface TimeVaryingSpectralOptions extends SpectralFeaturesOptions { /** フレームサイズ */ frameSize?: number; /** ホップサイズ */ hopSize?: number; /** フレーム数(指定しない場合は全体を解析) */ numFrames?: number; } /** * 時系列スペクトル特徴量の結果 */ interface TimeVaryingSpectralResult { /** 時間軸(秒) */ times: Float32Array; /** スペクトル重心の時系列 */ spectralCentroid: Float32Array; /** スペクトル帯域幅の時系列 */ spectralBandwidth: Float32Array; /** スペクトルロールオフの時系列 */ spectralRolloff: Float32Array; /** スペクトルフラットネスの時系列 */ spectralFlatness: Float32Array; /** スペクトルフラックスの時系列 */ spectralFlux: Float32Array; /** ゼロ交差率の時系列 */ zeroCrossingRate: Float32Array; /** フレーム情報 */ frameInfo: { frameSize: number; hopSize: number; numFrames: number; }; } /** * スペクトルエントロピーのオプション */ interface SpectralEntropyOptions { /** FFTサイズ */ fftSize?: number; /** 窓関数 */ windowFunction?: 'hann' | 'hamming' | 'blackman' | 'none'; /** 解析するチャンネル */ channel?: number; /** 最小周波数 */ minFrequency?: number; /** 最大周波数 */ maxFrequency?: number; } /** * スペクトルエントロピーの結果 */ interface SpectralEntropyResult { /** スペクトルエントロピー(ビット) */ entropy: number; /** 正規化されたスペクトルエントロピー(0-1) */ entropyNorm: number; /** 使用された周波数範囲 */ frequencyRange: { min: number; max: number; }; } /** * スペクトルクレストファクターのオプション */ interface SpectralCrestOptions { /** FFTサイズ */ fftSize?: number; /** 窓関数 */ windowFunction?: 'hann' | 'hamming' | 'blackman' | 'none'; /** 解析するチャンネル */ channel?: number; /** 最小周波数 */ minFrequency?: number; /** 最大周波数 */ maxFrequency?: number; /** dB値で返すかどうか */ asDB?: boolean; } /** * スペクトルクレストファクターの結果 */ interface SpectralCrestResult { /** スペクトルクレストファクター(線形) */ crest: number; /** スペクトルクレストファクター(dB) */ crestDB?: number; /** ピーク値 */ peak: number; /** 平均値 */ average: number; /** 使用された周波数範囲 */ frequencyRange: { min: number; max: number; }; } /** * 単一フレームのスペクトル特徴量を計算 * @param audio 音声データ * @param options オプション * @returns スペクトル特徴量 */ declare function getSpectralFeatures(audio: AudioData, options?: SpectralFeaturesOptions): Promise<SpectralFeaturesResult>; /** * 時系列スペクトル特徴量を計算 * @param audio 音声データ * @param options オプション * @returns 時系列スペクトル特徴量 */ declare function getTimeVaryingSpectralFeatures(audio: AudioData, options?: TimeVaryingSpectralOptions): Promise<TimeVaryingSpectralResult>; /** * スペクトルエントロピーを計算 * @param audio 音声データ * @param options オプション * @returns スペクトルエントロピー */ declare function getSpectralEntropy(audio: AudioData, options?: SpectralEntropyOptions): Promise<SpectralEntropyResult>; /** * スペクトルクレストファクターを計算 * @param audio 音声データ * @param options オプション * @returns スペクトルクレストファクター */ declare function getSpectralCrest(audio: AudioData, options?: SpectralCrestOptions): Promise<SpectralCrestResult>; /** * MFCCのオプション(拡張版) */ interface MFCCOptions { /** フレームサイズ(ミリ秒、デフォルト: 25) */ frameSizeMs?: number; /** ホップサイズ(ミリ秒、デフォルト: 10) */ hopSizeMs?: number; /** FFTサイズ(未指定時は自動計算) */ fftSize?: number; /** 窓関数('hann', 'hamming', 'blackman', 'rectangular') */ windowFunction?: WindowFunction; /** 解析するチャンネル */ channel?: number; /** Melフィルタバンクの数(デフォルト: 40) */ numMelFilters?: number; /** MFCC係数の数(デフォルト: 13) */ numMfccCoeffs?: number; /** 最小周波数(Hz、デフォルト: 0) */ minFrequency?: number; /** 最大周波数(Hz、デフォルト: サンプルレート/2) */ maxFrequency?: number; /** プリエンファシス係数(デフォルト: 0.97) */ preEmphasis?: number; /** ログのリフタリング係数(デフォルト: 22) */ lifterCoeff?: number; } /** * MFCCの結果 */ interface MFCCResult { /** MFCC係数(各行が時刻、各列が係数) */ mfcc: number[][]; /** 時間軸(秒) */ times: Float32Array; /** フレーム情報 */ frameInfo: { frameSizeMs: number; hopSizeMs: number; numFrames: number; numCoeffs: number; }; /** 使用された周波数範囲 */ frequencyRange: { min: number; max: number; }; } /** * MFCC(Mel-Frequency Cepstral Coefficients)を計算 * @param audio 音声データ * @param options オプション * @returns MFCC */ declare function getMFCC(audio: AudioData, options?: MFCCOptions): Promise<MFCCResult>; /** * デルタ係数とデルタデルタ係数の計算 * @param coefficients MFCC係数の配列 * @param windowSize 計算に使用する窓サイズ(デフォルト: 2) * @returns デルタ係数とデルタデルタ係数 */ declare function computeDeltaCoefficients(coefficients: number[][], windowSize?: number): { delta: number[][]; deltaDelta: number[][]; }; /** * MFCCデルタ係数の拡張オプション */ interface MFCCDeltaOptions extends MFCCOptions { /** デルタ係数計算の窓サイズ(デフォルト: 2) */ deltaWindowSize?: number; /** デルタ係数を計算するかどうか */ computeDelta?: boolean; /** デルタデルタ係数を計算するかどうか */ computeDeltaDelta?: boolean; } /** * MFCCデルタ係数の拡張結果 */ interface MFCCDeltaResult extends MFCCResult { /** デルタ係数(計算された場合) */ delta?: number[][]; /** デルタデルタ係数(計算された場合) */ deltaDelta?: number[][]; } /** * AudioDataからMFCCとデルタ係数を統合計算 * @param audio 音声データ * @param options オプション * @returns MFCC、デルタ係数、デルタデルタ係数 */ declare function getMFCCWithDelta(audio: AudioData, options?: MFCCDeltaOptions): Promise<MFCCDeltaResult>; export { type MFCCDeltaOptions, type MFCCDeltaResult, type MFCCOptions, type MFCCResult, type SpectralCrestOptions, type SpectralCrestResult, type SpectralEntropyOptions, type SpectralEntropyResult, type SpectralFeaturesOptions, type SpectralFeaturesResult, type TimeVaryingSpectralOptions, type TimeVaryingSpectralResult, computeDeltaCoefficients, getMFCC, getMFCCWithDelta, getSpectralCrest, getSpectralEntropy, getSpectralFeatures, getTimeVaryingSpectralFeatures };