UNPKG

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