web-asr-core
Version:
WebASR Core - Browser-based speech processing with VAD, WakeWord and Whisper - Unified all-in-one version
126 lines • 4.77 kB
TypeScript
/**
* VAD(語音活動檢測)服務
*
* 提供無狀態的語音活動檢測服務,用於檢測音訊塊中的語音活動。
* 使用 Silero VAD v6 模型進行高精度語音檢測。
*
* @fileoverview VAD 語音活動檢測服務實現
* @author WebASRCore Team
*/
import type { InferenceSession } from 'onnxruntime-web';
import type { VadState, VadParams, VadResult } from '../types';
import { ConfigManager } from '../utils/config-manager';
/**
* VAD 事件發射器
*
* @description 用於發送 VAD 相關事件,外部可以監聽這些事件進行相應處理
* 事件類型:
* - 'speech-start': 語音開始 { timestamp: number }
* - 'speech-end': 語音結束 { timestamp: number }
* - 'processing-error': 處理錯誤 { error: Error, context: string }
*/
export declare const vadEvents: EventTarget;
/**
* 載入 VAD 模型會話
*
* @description 從指定 URL 載入 Silero VAD v6 模型並建立 ONNX Runtime 會話
* @param modelUrl - VAD 模型的 URL 路徑(可選,預設使用 ConfigManager 設定)
* @param sessionOptions - 可選的會話配置選項
* @param config - 可選的配置管理器實例
* @returns Promise<InferenceSession> - ONNX Runtime 推理會話
* @throws Error - 當模型載入失敗時拋出錯誤
*
* @example
* ```typescript
* // 使用預設配置
* const session = await loadVadSession();
*
* // 使用自訂路徑
* const session = await loadVadSession('./models/custom_vad.onnx');
*
* // 使用自訂配置管理器
* const config = new ConfigManager();
* config.vad.modelPath = './models/my_vad.onnx';
* const session = await loadVadSession(undefined, undefined, config);
* ```
*/
export declare function loadVadSession(modelUrl?: string, sessionOptions?: InferenceSession.SessionOptions, config?: ConfigManager): Promise<InferenceSession>;
/**
* 創建初始 VAD 狀態
*
* @description 建立 VAD 處理所需的初始狀態,包括 LSTM 狀態和上下文樣本
* @param config - 可選的配置管理器實例
* @returns VadState - 初始化的 VAD 狀態物件
*
* @example
* ```typescript
* // 使用預設配置
* const vadState = createVadState();
* console.log(vadState.isSpeechActive); // false
*
* // 使用自訂配置
* const config = new ConfigManager();
* config.vad.contextSize = 128;
* const vadState = createVadState(config);
* ```
*/
export declare function createVadState(config?: ConfigManager): VadState;
/**
* 透過 VAD 處理音訊塊
*
* @description 使用 Silero VAD v6 模型處理單個音訊塊,檢測語音活動
* @param session - VAD 模型的 ONNX Runtime 會話
* @param prevState - 前一個 VAD 狀態
* @param audio - 音訊塊(Float32Array)- 應為 16kHz 的樣本
* @param params - VAD 參數配置
* @param config - 可選的配置管理器實例
* @returns Promise<VadResult> - 檢測結果和更新後的狀態
* @throws Error - 當處理失敗時拋出錯誤
*
* @example
* ```typescript
* const result = await processVad(session, vadState, audioChunk, vadParams);
* console.log(`語音檢測: ${result.detected}, 分數: ${result.score}`);
* vadState = result.state; // 更新狀態
* ```
*/
export declare function processVad(session: InferenceSession, prevState: VadState, audio: Float32Array, params: VadParams, config?: ConfigManager): Promise<VadResult>;
/**
* 批次處理多個音訊塊的輔助函數
*
* @description 依序處理多個音訊塊,並維護狀態的連續性
* @param session - VAD 模型的 ONNX Runtime 會話
* @param chunks - 要處理的音訊塊陣列
* @param initialState - 初始 VAD 狀態
* @param params - VAD 參數配置
* @param config - 可選的配置管理器實例
* @returns Promise<VadResult[]> - 每個音訊塊對應的檢測結果陣列
*
* @example
* ```typescript
* const chunks = [chunk1, chunk2, chunk3];
* const results = await processVadChunks(session, chunks, vadState, vadParams);
* console.log(`處理了 ${results.length} 個音訊塊`);
* ```
*/
export declare function processVadChunks(session: InferenceSession, chunks: Float32Array[], initialState: VadState, params: VadParams, config?: ConfigManager): Promise<VadResult[]>;
/**
* 創建預設的 VAD 參數
*
* @description 從 ConfigManager 創建預設的 VAD 參數配置
* @param config - 可選的配置管理器實例
* @returns VadParams - VAD 參數配置
*
* @example
* ```typescript
* // 使用預設配置
* const params = createDefaultVadParams();
*
* // 使用自訂配置
* const config = new ConfigManager();
* config.vad.threshold = 0.6;
* const params = createDefaultVadParams(config);
* ```
*/
export declare function createDefaultVadParams(config?: ConfigManager): VadParams;
//# sourceMappingURL=vad.d.ts.map