UNPKG

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
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