UNPKG

web-asr-core

Version:

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

163 lines 4.83 kB
/** * 系統診斷工具 * * 提供瀏覽器能力檢測、效能評估和最佳配置建議 * * @fileoverview 系統診斷工具實現 * @author WebASRCore Team */ /** * 系統診斷結果介面 */ export interface SystemDiagnosis { /** 瀏覽器支援的功能 */ supported: { /** 是否為安全上下文 (HTTPS/localhost) */ secureContext: boolean; /** 是否支援 getUserMedia API */ getUserMedia: boolean; /** 是否支援 AudioWorklet API */ audioWorklet: boolean; /** 是否支援 SharedArrayBuffer */ sharedArrayBuffer: boolean; /** 是否為跨源隔離環境 */ crossOriginIsolated: boolean; /** 是否支援 WebGPU */ webgpu: boolean; /** 是否支援 WebGL 2.0 */ webgl: boolean; /** 是否支援 WebNN (Web Neural Network API) */ webnn: boolean; /** Worker 中是否支援 WebGPU */ webgpuInWorker: boolean; /** 是否支援 WASM 多執行緒 */ wasmThreads: boolean; /** 是否支援 WASM SIMD */ wasmSIMD: boolean; /** 是否支援 MediaRecorder API */ mediaRecorder: boolean; /** 支援的 MediaRecorder MIME 類型 */ mediaRecorderMimes: string[]; /** 是否支援 Web Speech Recognition API */ webSpeechRecognition: boolean; /** Web Speech API 是否支援離線模式 */ webSpeechOffline: boolean; /** 是否支援 Cache API */ cacheAPI: boolean; /** 是否支援 IndexedDB */ indexedDB: boolean; }; /** 系統效能指標 */ performance: { /** GPU 效能等級 */ gpuTier: 'high' | 'medium' | 'low' | 'unknown'; /** 記憶體大小 (GB) */ memoryGB: number; /** CPU 核心數 */ cpuCores: number; /** 瀏覽器資訊 */ browser: { name: string; version: string; engine: string; }; }; /** 最佳配置建議 */ recommendation: { /** 建議的執行提供者優先順序 */ executionProvider: ('webgpu' | 'webnn' | 'webgl' | 'wasm')[]; /** 建議的 Whisper 後端 */ whisperBackend: 'webgpu' | 'wasm'; /** 建議的資料傳輸方式 */ transport: 'sab' | 'messageport'; /** 建議的音訊配置 */ audioConfig: { /** 音訊塊大小 (毫秒) */ chunkMs: number; /** 緩衝區大小 (幀數) */ bufferSizeFrames: number; }; /** 建議的模型大小 */ modelSize: 'tiny' | 'base' | 'small'; /** 建議的 MediaRecorder MIME 類型 */ mediaRecorderMime: string; /** 需要的 HTTP 標頭(如果缺少功能) */ headersNeeded?: { COOP?: string; COEP?: string; }; /** 建議和提示 */ notes: string[]; /** 警告訊息 */ warnings: string[]; }; } /** * 系統診斷工具類 */ export declare class SystemDiagnostics { private static instance; private cachedDiagnosis; private constructor(); /** * 取得系統診斷工具單例 */ static getInstance(): SystemDiagnostics; /** * 執行完整的系統診斷 * @param force 是否強制重新診斷(忽略快取) * @returns 系統診斷結果 */ diagnose(force?: boolean): Promise<SystemDiagnosis>; /** * 檢測瀏覽器功能支援 */ private checkFeatureSupport; /** * 檢測系統效能 */ private checkPerformance; /** * 生成配置建議 */ private generateRecommendations; private isSecureContext; private hasGetUserMedia; private hasAudioWorklet; private hasSharedArrayBuffer; private isCrossOriginIsolated; private hasWebGPU; /** * 輸出 WebGPU 設定指南到 console */ private logWebGPUSetupGuide; private hasWebGL; private hasWebNN; private hasWebGPUInWorker; private hasWasmThreads; private hasWasmSIMD; private hasMediaRecorder; private getSupportedMediaRecorderMimes; private hasWebSpeechRecognition; private hasWebSpeechOffline; private hasCacheAPI; private hasIndexedDB; private detectGPUTier; private getMemorySize; private getBrowserInfo; private recommendMediaRecorderMime; /** * 執行 WebGPU 診斷並輸出指南 */ diagnoseWebGPU(): Promise<{ mainThread: boolean; worker: boolean; adapterName?: string; }>; /** * 生成診斷報告字串 */ generateReport(): Promise<string>; } export declare const systemDiagnostics: SystemDiagnostics; //# sourceMappingURL=system-diagnostics.d.ts.map