OpenClawSkills
GitHub
Plataformas • 5 min de lectura

Activación por Voz

Modos de activación por voz y push-to-talk más detalles de enrutamiento en la app mac

Tutorial.step

Modos

- ''Modo palabra de activación'' (por defecto): reconocedor de voz siempre activo espera tokens de disparo (''swabbleTriggerWords''). Al coincidir inicia captura, muestra overlay con texto parcial, y auto-envía después del silencio.

- Push-to-talk (mantener Opción derecha): mantén tecla Opción derecha para capturar inmediatamente—sin disparo necesario. El overlay aparece mientras se mantiene; soltar finaliza y reenvía después de un breve delay para que puedas ajustar el texto.

Tutorial.step

Comportamiento en tiempo de ejecución (palabra de activación)

- El reconocedor de voz vive en ''VoiceWakeRuntime''.

- El disparo solo se activa cuando hay una pausa significativa entre la palabra de activación y la siguiente palabra (~0.55s de intervalo). El overlay/sonido puede iniciar en la pausa incluso antes de que comience el comando.

- Ventanas de silencio: 2.0s cuando hay flujo de voz, 5.0s si solo se escuchó el disparo.

- Parada forzada: 120s para prevenir sesiones descontroladas.

- Debounce entre sesiones: 350ms.

- El overlay se controla vía ''VoiceWakeOverlayController'' con colores committed/volatile.

- Después de enviar, el reconocedor se reinicia limpiamente para escuchar el próximo disparo.

Tutorial.step

Invariantes del ciclo de vida

- Si Voice Wake está habilitado y los permisos están concedidos, el reconocedor de palabra de activación debería estar escuchando (excepto durante una captura push-to-talk explícita).

- La visibilidad del overlay (incluyendo descarte manual vía botón X) nunca debe prevenir que el reconocedor se reanude.

Tutorial.step

Modo de fallo de overlay pegajoso (anterior)

Anteriormente, si el overlay se quedaba visible y lo cerrabas manualmente, Voice Wake podía parecer "muerto" porque el intento de reinicio del runtime podía ser bloqueado por la visibilidad del overlay y no se programaba ningún reinicio posterior.

Endurecimiento:

- El reinicio del runtime de wake ya no es bloqueado por la visibilidad del overlay.

- La finalización del descarte del overlay dispara un ''VoiceWakeRuntime.refresh(...)'' vía ''VoiceSessionCoordinator'', así que el descarte manual X siempre reanuda la escucha.

Tutorial.step

Especificidades de push-to-talk

- La detección de hotkey usa un monitor global ''.flagsChanged'' para ''Opción derecha'' (''keyCode 61'' + ''.option''). Solo observamos eventos (sin tragar).

- El pipeline de captura vive en ''VoicePushToTalk'': inicia Speech inmediatamente, transmite parciales al overlay, y llama ''VoiceWakeForwarder'' al soltar.

- Cuando push-to-talk inicia, pausamos el runtime de palabra de activación para evitar taps de audio en conflicto; se reinicia automáticamente después de soltar.

- Permisos: requiere Micrófono + Speech; ver eventos necesita aprobación de Accessibility/Input Monitoring.

- Teclados externos: algunos pueden no exponer Opción derecha como se espera—ofrece un atajo alternativo si los usuarios reportan fallos.

Tutorial.step

Configuraciones para el usuario

- Toggle Voice Wake: habilita el runtime de palabra de activación.

- Mantener Cmd+Fn para hablar: habilita monitor push-to-talk. Deshabilitado en macOS < 26.

- Selectores de idioma y micrófono, medidor de nivel en vivo, tabla de palabras de disparo, probador (solo local; no reenvía).

- El selector de micrófono preserva la última selección si un dispositivo se desconecta, muestra una pista de desconectado, y temporalmente retrocede al predeterminado del sistema hasta que regrese.

- ''Sonidos'': tonos al detectar disparo y al enviar; por defecto usa sonido de sistema macOS "Glass". Puedes elegir cualquier archivo cargable por ''NSSound'' (ej. MP3/WAV/AIFF) para cada evento o elegir ''Sin Sonido''.

Tutorial.step

Comportamiento de reenvío

- Cuando Voice Wake está habilitado, las transcripciones se reenvían al gateway/agente activo (el mismo modo local vs remoto usado por el resto de la app mac).

- Las respuestas se entregan al proveedor principal usado últimamente (WhatsApp/Telegram/Discord/WebChat). Si la entrega falla, el error se registra y la ejecución aún es visible vía logs de WebChat/sesión.

Tutorial.step

Payload de reenvío

- ''VoiceWakeForwarder.prefixedTranscript(_:)'' antepone la pista de máquina antes de enviar. Compartido entre rutas de palabra de activación y push-to-talk.

Tutorial.step

Verificación rápida

- Activa push-to-talk, mantén Cmd+Fn, habla, suelta: el overlay debería mostrar parciales y luego enviar.

- Mientras mantienes, las orejas de la barra de menú deberían mantenerse agrandadas (usa ''triggerVoiceEars(ttl:nil)''); caen después de soltar.