web-asr-core
Version:
WebASR Core - Browser-based speech processing with VAD, WakeWord and Whisper - Unified all-in-one version
142 lines • 4.43 kB
TypeScript
import { ConfigManager } from '../utils/config-manager';
/**
* 重採樣演算法類型
*/
export declare enum ResamplingAlgorithm {
/** 線性插值 - 快速但品質一般 */
LINEAR = "linear",
/** 立方插值 - 品質較好,速度適中 */
CUBIC = "cubic",
/** Sinc 插值 - 最高品質但較慢 */
SINC = "sinc",
/** Web Audio API - 使用瀏覽器原生 API */
WEB_AUDIO = "web-audio",
/** 最近鄰 - 最快但品質最差 */
NEAREST = "nearest"
}
/**
* 重採樣選項
*/
export interface ResamplingOptions {
/** 源採樣率 */
fromSampleRate: number;
/** 目標採樣率 */
toSampleRate: number;
/** 重採樣演算法 */
algorithm?: ResamplingAlgorithm;
/** 是否使用抗鋸齒濾波器 */
antiAlias?: boolean;
/** 低通濾波器的截止頻率(Nyquist頻率的比例,0-1) */
cutoffFrequency?: number;
}
/**
* AudioResampler - 音訊重採樣服務
*
* 提供多種重採樣演算法,將音訊從一個採樣率轉換到另一個採樣率
* 主要用於將麥克風的 48kHz 音訊轉換為模型所需的 16kHz
*/
export declare class AudioResampler {
private config;
private audioContext?;
constructor(config?: ConfigManager);
/**
* 重採樣音訊資料
* @param audioData 輸入音訊資料
* @param options 重採樣選項
* @returns 重採樣後的音訊資料
*/
resample(audioData: Float32Array, options: ResamplingOptions): Promise<Float32Array>;
/**
* 快速重採樣到 16kHz(專為 VAD/Whisper 優化)
* @param audioData 輸入音訊資料
* @param fromSampleRate 源採樣率
* @returns 16kHz 音訊資料
*/
resampleTo16kHz(audioData: Float32Array, fromSampleRate: number): Float32Array;
/**
* 線性插值重採樣
* 快速且品質適中,適合即時處理
*/
private resampleLinear;
/**
* 立方插值重採樣
* 品質比線性插值好,計算量適中
*/
private resampleCubic;
/**
* Sinc 插值重採樣
* 最高品質但計算量大,適合離線處理
*/
private resampleSinc;
/**
* 最近鄰重採樣
* 最快但品質最差,只適合非關鍵應用
*/
private resampleNearest;
/**
* 使用 Web Audio API 進行重採樣
* 利用瀏覽器原生 API,品質好且有硬體加速
*/
private resampleWebAudio;
/**
* 應用低通濾波器(用於抗鋸齒)
* 使用簡單的 Butterworth 濾波器
*/
private applyLowPassFilter;
/**
* 批次重採樣
* 處理多個音訊片段,保持連續性
*/
resampleBatch(audioChunks: Float32Array[], options: ResamplingOptions): Promise<Float32Array[]>;
/**
* 計算重採樣後的長度
*/
calculateOutputLength(inputLength: number, fromSampleRate: number, toSampleRate: number): number;
/**
* 獲取推薦的演算法
* 根據使用場景自動選擇最佳演算法
*/
static getRecommendedAlgorithm(realtime: boolean, qualityPriority?: boolean): ResamplingAlgorithm;
}
/**
* 創建預配置的重採樣器實例
*/
export declare class ResamplerPresets {
/**
* 創建用於即時麥克風輸入的重採樣器
* 48kHz → 16kHz,使用線性插值
*/
static forMicrophone(): AudioResampler;
/**
* 創建用於高品質離線處理的重採樣器
*/
static forOfflineProcessing(): AudioResampler;
/**
* 創建用於 VAD 的重採樣器
* 優化為低延遲
*/
static forVAD(): AudioResampler;
/**
* 創建用於 Whisper 的重採樣器
* 平衡品質和速度
*/
static forWhisper(): AudioResampler;
}
/**
* 獲取全域重採樣器實例
*/
export declare function getResampler(): AudioResampler;
/**
* 快速重採樣函數(便利函數)
* @param audioData 輸入音訊
* @param fromRate 源採樣率
* @param toRate 目標採樣率
* @returns 重採樣後的音訊
*/
export declare function resampleAudio(audioData: Float32Array, fromRate: number, toRate: number, algorithm?: ResamplingAlgorithm): Promise<Float32Array>;
/**
* 快速重採樣到 16kHz(便利函數)
*/
export declare function resampleTo16kHz(audioData: Float32Array, fromSampleRate: number): Float32Array;
export default AudioResampler;
//# sourceMappingURL=audio-resampler.d.ts.map