Ir al contenido

API: ai/nlu-voice-wasm

@mosaicoo/svg-engine/ai/nlu-voice-wasm ofrece speech-to-text 100% local y offline vía Whisper (transformers.js + onnxruntime-web WASM). Es un entry point pesado y opcional — las dependencias de ML se cargan de forma diferida, solo cuando la voz se usa realmente. Sin dependencia de Angular Material/CDK.

import { provideWhisperVoiceEngine } from '@mosaicoo/svg-engine/ai/nlu-voice-wasm';

Registra el engine en los providers de tu app; el VoiceEngineService (de ai/nlu-ui) lo descubre entonces como el engine whisper.

APIDescripción
provideWhisperVoiceEngine(config?)El bootstrap completo: registra la config y el WhisperVoiceService como VOICE_WHISPER_PROVIDER. Ponlo en el providers[] raíz.
provideWhisperVoice(config?)Registra solo la config (fusionada con los defaults).
WhisperVoiceServiceEl provider en sí — mismo contrato VoiceProvider que el de Web Speech, pero transcribiendo en el dispositivo: listen(lang?, options?) graba (con detección de actividad de voz) y transcribe localmente; signals isSupported/listening/modelLoading/lastError. Multilingüe (PT-BR / ES / EN).
WHISPER_VOICE_CONFIG / DEFAULT_WHISPER_VOICE_CONFIGEl token de inyección de la config y sus defaults.

WhisperVoiceConfig controla el modelo, el runtime WASM y el comportamiento de detección de actividad de voz:

CampoDefaultSignificado
modelBasePath/assets/ml/whisperDe dónde transformers.js carga el modelo.
modelIdwhisper-smallCarpeta del modelo (p. ej. whisper-base, whisper-small).
wasmBasePath/assets/ml/ort/De dónde se sirven los binarios .wasm de onnxruntime.
dtypeq8Cuantización del modelo (q8/fp32/fp16/…).
numThreads1Threads WASM (1 evita el requisito de COOP/COEP).
defaultLanguageptIdioma BCP-47 usado cuando el llamador lo omite.
maxRecordMs15000Duración máxima de captura antes del auto-stop.
silenceMs / silenceThreshold1000 / 0.015Detección de actividad de voz: duración del silencio y umbral de energía RMS para auto-parar tras el habla.
noSpeechTimeoutMs6000Se rinde si no se detecta habla.