UNPKG

web-asr-core

Version:

WebASR Core - Browser-based speech processing with VAD, WakeWord and Whisper - Unified all-in-one version

146 lines 3.58 kB
/** * VadService - VAD 服務類別(Event Architecture v2) * * 提供事件驅動的語音活動檢測服務 * 包裝無狀態的 VAD 處理函數並提供事件發射功能 */ import { EventEmitter } from '../core/EventEmitter'; import { AudioRingBuffer } from '../utils/AudioRingBuffer'; import type { VadState, VadParams, VadResult } from '../types'; /** * VAD 服務事件定義 */ export interface VadEvents { ready: { config: { sampleRate: number; windowSize: number; threshold: number; }; timestamp: number; }; speechStart: { timestamp: number; score: number; }; speechEnd: { timestamp: number; duration: number; }; process: { result: { detected: boolean; score: number; }; timestamp: number; }; statistics: { chunksProcessed: number; averageProcessingTime: number; speechDuration: number; silenceDuration: number; }; error: { error: Error; context: string; timestamp: number; }; } /** * VAD 服務特定選項 */ export interface VadServiceOptions { threshold?: number; windowSize?: number; minSpeechFrames?: number; speechEndFrames?: number; } /** * VadService - 事件驅動的 VAD 服務 * * @example * ```typescript * const vad = new VadService(); * // 或使用自訂選項 * const vad = new VadService({ threshold: 0.6 }); * * // 訂閱事件 * vad.on('speechStart', ({ timestamp, score }) => { * console.log('Speech started:', timestamp, score); * }); * * vad.on('speechEnd', ({ duration }) => { * console.log('Speech duration:', duration); * }); * * // 初始化 * await vad.initialize(); * * // 處理音訊 * let state = vad.createState(); * const params = vad.createParams(); * * const result = await vad.process(state, audioChunk, params); * state = result.state; * ``` */ export declare class VadService extends EventEmitter<VadEvents> { private session; private chunker; private lastSpeechStart; private config; private options; private stats; constructor(options?: VadServiceOptions); /** * 初始化 VAD 服務 * @param modelUrl VAD 模型 URL(可選) * @returns Promise<void> */ initialize(modelUrl?: string): Promise<void>; /** * 處理單個音訊塊 * @param state VAD 狀態 * @param audio 音訊資料(512 樣本 @ 16kHz) * @param params VAD 參數 * @returns VAD 結果 */ process(state: VadState, audio: Float32Array, params: VadParams): Promise<VadResult>; /** * 處理連續音訊流 * @param ringBuffer 環形緩衝區 * @param state VAD 狀態 * @param params VAD 參數 * @returns 更新後的狀態 */ processStream(ringBuffer: AudioRingBuffer, state: VadState, params: VadParams): Promise<VadState>; /** * 創建 VAD 狀態 * @returns 新的 VAD 狀態 */ createState(): VadState; /** * 創建 VAD 參數 * @param overrides 參數覆蓋 * @returns VAD 參數 */ createParams(overrides?: Partial<VadParams>): VadParams; /** * 重置服務狀態 */ reset(): void; /** * 更新統計資料 */ private updateStatistics; /** * 重置統計資料 */ private resetStatistics; /** * 清理資源 */ dispose(): void; } export default VadService; //# sourceMappingURL=VadService.d.ts.map