Detectores de Audio
SecureVu proporciona un detector de audio integrado que se ejecuta en la CPU. En comparación con la detección de objetos en imágenes, la detección de audio es una operación relativamente ligera, por lo que la única opción es ejecutar la detección en una CPU.
Configuración
Los eventos de audio funcionan detectando un tipo de audio y creando un evento; el evento finalizará una vez que el tipo de audio no haya sido detectado durante el tiempo configurado. Los eventos de audio guardan una instantánea al inicio del evento, así como grabaciones durante todo el evento. Las grabaciones se conservan utilizando la retención de grabaciones configurada.
Habilitar eventos de audio
Los eventos de audio pueden habilitarse para todas las cámaras o solo para cámaras específicas.
audio: # <- enable audio events for all camera
enabled: True
cameras:
front_camera:
ffmpeg:
...
audio:
enabled: True # <- enable audio events for the front_camera
Si usas múltiples transmisiones, debes asignar el rol audio a la transmisión que se utilizará para la detección de audio; puede ser cualquier transmisión, pero debe incluir audio.
El proceso de FFmpeg para capturar audio será una conexión separada a la cámara, junto con los demás roles asignados a la cámara. Por este motivo, se recomienda usar la retransmisión de go2rtc para este propósito. Consulta la documentación de retransmisión para más información.
cameras:
front_camera:
ffmpeg:
inputs:
- path: rtsp://.../main_stream
roles:
- record
- path: rtsp://.../sub_stream # <- this stream must have audio enabled
roles:
- audio
- detect
Configurar el volumen mínimo
El detector de audio usa niveles de volumen de la misma manera que el movimiento en una imagen de cámara se usa para la detección de objetos. Esto significa que SecureVu no ejecutará la detección de audio a menos que el volumen de audio esté por encima del nivel configurado, con el fin de reducir el uso de recursos. Los niveles de audio pueden variar mucho entre modelos de cámara, por lo que es importante realizar pruebas para conocer los niveles de volumen. La vista de depuración en la interfaz de SecureVu tiene una pestaña de Audio para las cámaras que tienen asignado el rol audio, donde se muestra un gráfico y los niveles actuales. El parámetro min_volume debe establecerse en el nivel RMS mínimo necesario para ejecutar la detección de audio.
El volumen se considera movimiento para las grabaciones; esto significa que cuando record -> retain -> mode está configurado como motion, cada vez que el volumen de audio sea mayor que min_volume, ese segmento de grabación de esa cámara se conservará.
Configurar eventos de audio
El modelo de audio incluido tiene más de 500 tipos diferentes de audio que se pueden detectar, muchos de los cuales no son prácticos. Por defecto, bark, fire_alarm, scream, speech y yell están habilitados, pero pueden personalizarse.
audio:
enabled: True
listen:
- bark
- fire_alarm
- scream
- speech
- yell
Transcripción de audio
SecureVu admite transcripción de audio completamente local usando sherpa-onnx o los modelos Whisper de código abierto de OpenAI a través de faster-whisper. El objetivo de esta función es admitir la Búsqueda Semántica para eventos de audio de tipo speech. SecureVu no está pensado para actuar como un servicio de transcripción de voz continuo y totalmente automático; transcribir automáticamente todo el habla (o encolar muchos eventos de audio para transcripción) requiere recursos sustanciales de CPU (o GPU) y no es práctico en la mayoría de los sistemas. Por esta razón, las transcripciones de eventos se inician manualmente desde la interfaz o la API, en lugar de ejecutarse continuamente en segundo plano.
La precisión de la transcripción también depende en gran medida de la calidad del micrófono de tu cámara y de las condiciones de grabación. Muchas cámaras usan micrófonos económicos, y la distancia al hablante, la baja tasa de bits de audio o el ruido de fondo pueden reducir significativamente la calidad de la transcripción. Si necesitas mayor precisión, colas de larga duración más robustas o transcripción automática a gran escala, considera usar la API HTTP en combinación con una plataforma de automatización y un servicio de transcripción en la nube.
Configuración
Para habilitar la transcripción, actívala en tu configuración. Ten en cuenta que la detección de audio también debe estar habilitada como se describe anteriormente para poder usar las funciones de transcripción de audio.
audio_transcription:
enabled: True
device: ...
model_size: ...
Deshabilita la transcripción de audio para cámaras específicas a nivel de cámara:
cameras:
back_yard:
...
audio_transcription:
enabled: False
La detección de audio debe estar habilitada y configurada como se describe anteriormente para poder usar las funciones de transcripción de audio.
Los parámetros de configuración opcionales que se pueden establecer a nivel global incluyen:
enabled: Habilita o deshabilita la función de transcripción de audio.- Valor predeterminado:
False - Se recomienda configurar las funciones solo a nivel global y habilitarlas a nivel de cámara individual.
- Valor predeterminado:
device: Dispositivo que se usará para ejecutar los modelos de transcripción y traducción.- Valor predeterminado:
CPU - Puede ser
CPUoGPU. Los modelos desherpa-onnxson ligeros y se ejecutan solo en CPU. Los modelos dewhisperpueden ejecutarse en GPU, pero solo son compatibles con hardware CUDA.
- Valor predeterminado:
model_size: El tamaño del modelo utilizado para la transcripción en tiempo real.- Valor predeterminado:
small - Puede ser
smallolarge. La configuraciónsmallusa modelos desherpa-onnxque son rápidos, ligeros y siempre se ejecutan en CPU, pero no son tan precisos como el modelo dewhisper. - Esta opción de configuración aplica únicamente a la transcripción en tiempo real. Los eventos
speechgrabados siempre usarán un modelo dewhisperdiferente (y pueden acelerarse para hardware CUDA si está disponible condevice: GPU).
- Valor predeterminado:
language: Define el idioma usado porwhisperpara traducir eventos de audio de tipospeech(y audio en tiempo real solo si se usa el modelolarge).- Valor predeterminado:
en - Debes usar un código de idioma válido.
- Las transcripciones de eventos
speechse traducen. - El audio en tiempo real solo se traduce si usas el modelo
large. El modelosmalldesherpa-onnxsolo admite inglés.
- Valor predeterminado:
El único campo válido a nivel de cámara es enabled.
Transcripción en tiempo real
La vista en vivo de cámara individual en la interfaz de SecureVu admite transcripción en tiempo real de audio para transmisiones definidas con el rol audio. Usa el botón/interruptor Habilitar/Deshabilitar Transcripción de Audio en Vivo para activar o desactivar el procesamiento de transcripción. Cuando se detecta habla, la interfaz mostrará un cuadro negro sobre la parte superior de la transmisión de la cámara con texto. El tema MQTT securevu/<camera_name>/audio/transcription también se actualizará en tiempo real con el texto transcrito.
Los resultados pueden tener errores debido a varios factores, entre ellos:
- Micrófono de cámara de baja calidad
- Distancia de la fuente de audio al micrófono de la cámara
- Configuración de baja tasa de bits de audio en la cámara
- Ruido de fondo
- Uso del modelo
small: es rápido, pero no es preciso para audio de baja calidad
Para fuentes de sonido cercanas a la cámara con ruido de fondo mínimo, usa el modelo small.
Si tienes hardware CUDA, puedes experimentar con el modelo large de whisper en GPU. El rendimiento no es tan rápido como el modelo small de sherpa-onnx, pero la transcripción en tiempo real es mucho más precisa. Usar el modelo large con CPU probablemente sea demasiado lento para transcripción en tiempo real.
Transcripción y traducción de eventos de audio de tipo speech
Cualquier evento speech en Explorar puede transcribirse y/o traducirse mediante el botón Transcribir en el panel de Detalles del Objeto Rastreado.
Para usar la transcripción y traducción de eventos pasados, debes habilitar la detección de audio y definir speech como un tipo de audio a escuchar en tu configuración. Para que los eventos speech se traduzcan al idioma de tu elección, establece el parámetro de configuración language con el código de idioma correcto.
El texto transcrito/traducido aparecerá en el cuadro de descripción del panel de Detalles del Objeto Rastreado. Si la Búsqueda Semántica está habilitada, se generan incrustaciones para el texto de transcripción y son completamente buscables usando el tipo de búsqueda por descripción.
Solo se puede transcribir un evento speech a la vez. SecureVu no transcribe automáticamente los eventos speech ni implementa una cola para la inferencia de modelos de transcripción de larga duración.
Los eventos speech grabados siempre usarán un modelo de whisper, independientemente de la configuración de model_size. Sin una GPU Nvidia compatible, generar transcripciones para eventos speech más largos puede tomar bastante tiempo, así que ten paciencia.
Preguntas frecuentes
-
¿Por qué SecureVu no transcribe automáticamente todos los eventos
speech?SecureVu no implementa un mecanismo de cola para la transcripción de voz, y agregar uno no es trivial. Una cola adecuada necesitaría contrapresión, priorización, almacenamiento en memoria/disco, lógica de reintentos, recuperación ante fallos y salvaguardas para evitar un crecimiento ilimitado cuando los eventos superen la capacidad de procesamiento. Eso es una cantidad significativa de complejidad para una función que, en la mayoría de los entornos del mundo real, principalmente procesaría ruido de poco valor.
Dado que la transcripción es serializada (un evento a la vez) y los eventos de voz pueden generarse mucho más rápido de lo que se pueden procesar, un interruptor de transcripción automática crearía muy rápidamente un acumulado en constante crecimiento y degradaría la funcionalidad principal. Por la cantidad de ingeniería y riesgo involucrados, agrega muy poco valor práctico para la mayoría de las implementaciones, que a menudo están en hardware de bajo consumo, en el borde.
Si escuchas habla que es realmente importante y vale la pena guardar/indexar para el futuro, simplemente presiona el botón de transcribir en Explorar en ese evento
speechespecífico: eso mantiene las cosas explícitas, confiables y bajo tu control.Se están considerando otras opciones para futuras versiones de SecureVu que agreguen opciones de transcripción compatibles con contenedores Docker externos de
whisper. Un único servicio de transcripción podría entonces ser compartido por SecureVu y otras aplicaciones (por ejemplo, Home Assistant Voice), y ejecutarse en máquinas más potentes cuando estén disponibles. -
¿Por qué no guardan el texto de transcripción en tiempo real y lo usan para los eventos
speech?No hay garantía de que un evento
speechse cree a partir exactamente del audio que pasó por el modelo de transcripción. La transcripción en tiempo real y la creación de eventosspeechson procesos separados y asíncronos. Incluso cuando ambos están correctamente configurados, intentar alinear el inicio y el fin precisos de un evento de voz con el audio que el modelo estaba procesando en ese momento es poco confiable.Persistir automáticamente esos datos a menudo resultaría en transcripciones desalineadas, parciales o irrelevantes, mientras que aún incurriría en todos los costos de CPU, almacenamiento y privacidad de la transcripción. Por eso SecureVu trata la transcripción como una acción explícita iniciada por el usuario en lugar de un efecto secundario automático de cada evento
speech.