Bibliotecas para la detección de actividad de voz (no reconocimiento de voz)

18

Como seguimiento a mi pregunta anterior, me preguntaba si existen bibliotecas de detección de voz. Por detección de voz me refiero a pasar un búfer de audio y obtener un índice de dónde comienza y se detiene el habla. Entonces, si tengo 10 segundos de muestreo de audio a 44kHz, esperaría una serie de números como:

44000
88000
123000
190334
...

Esto indicaría, por ejemplo, que el discurso comienza un segundo y luego termina en el punto de dos segundos, etc.

Lo que no estoy buscando es el reconocimiento de voz que escribe el texto de la palabra hablada. Desafortunadamente, esto es lo que veo mucho cuando busco en Google 'detección de voz'.

Sería genial si la biblioteca estuviera en C, C ++ o incluso Objective-C, ya que estoy escribiendo una aplicación para iPhone.

¡Gracias!

Eric Brotto
fuente
1
Puede encontrar su respuesta en una de estas respuestas: dsp.stackexchange.com/questions/912/…
Geerten
1
Esto es muy similar, excepto cantar en lugar de hablar: dsp.stackexchange.com/q/2367/29
endolito
1
También relevante: dsp.stackexchange.com/a/1543/29 "detección de actividad de voz"
endolito
1
Debe buscar la detección de inicio / desplazamiento. Es un campo activo con muchas aplicaciones en música, habla y procesamiento de señales de radar.
CyberMen

Respuestas:

13

En mi respuesta a su pregunta, mencioné que la detección de actividad de voz es una característica estándar para códecs como G.729 y otros.

Debe buscar codificadores y decodificadores de referencia para algoritmos que apliquen esto.

Un ejemplo de esto es: http://www.voiceage.com/openinit_g729.php

Otra posible fuente es el códec Speex. Que implementa VAD

Por cierto: debería buscar en Google "Detección de actividad de voz" o "Talk Spurt" en lugar de "Detección de voz".

Dipan Mehta
fuente
6

Hay implementaciones de código abierto en los proyectos Sphinx y Freeswitch. Creo que todos los detectores basados ​​en energía no necesitarán ningún tipo de modelo.

Sphinx 4 (Java, pero debería ser fácil de portar a C / C ++)

PocketSphinx

Freeswitch

Respuesta tomada de la pregunta de Stackoverflow .

Geerten
fuente
4

La detección de actividad de voz usando el umbral adaptativo es muy fácil y práctica de implementar en cualquier plataforma

Aquí puede tener un algoritmo basado en energía adaptativa

Pequeña adición al algoritmo anterior cuando está calculando por primera vez, vaya a tomar Mean of Energy y marque como Emin

en esto, el marco que pasa se divide en subtramas y además puede examinar cada subtrama por su actividad

Puede superar otros problemas con marcos superpuestos

kakeh
fuente
Estoy tratando de implementar el método en el documento, pero me pierdo cuando el Min_E es cero debido a la supresión de ruido. En ese caso, Thresh_E sería -INF de la ecuación. Incluso tomando log1p (Min_E), Thresh_E sería cero, de modo que es muy fácil clasificar erróneamente las tramas sonoras debido a una energía distinta de cero. ¿Alguna buena sugerencia o no la entiendo? Ecuaciones: Thresh _ E Energy _ Pr imThresh * log (Min _ E)
Farley
3

¿Qué hay de LibVAD?

Parece que eso hace exactamente lo que estás describiendo.

Divulgación: soy el desarrollador detrás de LibVAD

Charles
fuente
¿Cómo se consigue libVAD?
todd
Al comprarlo. Sin embargo, el sitio web no revela un precio hasta después de completar un formulario.
Camille Goudeseune
2
Link ahora va a un sitio de malware que quiere que los visitantes actualicen flash.
Steve Severance