your tests test speechace speak pronunciation online learn for english elsa course american accent ios real-time detection speech-recognition phoneme

ios - tests - speechace trial course



iOS/C: algoritmo para detectar fonemas (4)

Estoy buscando un algoritmo para determinar si la entrada de audio en tiempo real coincide con uno de los 144 pares de fonemas dados (y cómodamente distintos).

Preferiblemente el nivel más bajo que hace el trabajo.

Estoy desarrollando software de entrenamiento musical radical / experimental para iPhone / iPad.

Mi sistema musical consta de 12 fonemas consonánticos y 12 fonemas vocálicos, que se muestran aquí . Eso hace 144 posibles pares de fonemas. El estudiante tiene que cantar el par de fonemas correcto ''laa duu bee'', etc. en respuesta al estímulo visual.

He investigado mucho al respecto; parece que mi mejor opción es utilizar uno de los envoltorios Sphinx de iOS (la aplicación para iPhone ›¿Agregar reconocimiento de voz? Es la mejor fuente de información que he encontrado). Sin embargo, no puedo ver cómo adaptaría ese paquete, ¿alguien con experiencia en el uso de una de estas tecnologías puede dar un resumen básico de los pasos que se requerirían?

¿Sería necesaria la formación por parte del usuario? Habría pensado que no, ya que es una tarea tan elemental, en comparación con los modelos de lenguaje completo de miles de palabras y una base de fonemas mucho mayor y más sutil. Sin embargo, sería aceptable (no ideal) que el usuario entrene 12 pares de fonemas: {consonante1 + vocal1, consonante2 + vocal2, ..., consonante12 + vocal12}. El total de 144 sería demasiado gravoso.

¿Hay un enfoque más simple? Siento que usar un reconocedor de voz continuo con todas las funciones es usar un martillo para romper una tuerca. Sería mucho más elegante utilizar la tecnología mínima que solucionaría el problema.

Así que realmente estoy buscando cualquier software de código abierto que reconozca fonemas.

PD: Necesito una solución que funcione en tiempo real. así que incluso cuando están cantando la nota, primero parpadea para ilustrar que recogió el par de fonemas que se cantó, y luego se ilumina para ilustrar si están cantando el tono de nota correcto


Si está buscando un reconocedor de código abierto a nivel de teléfono, le recomendaría HTK . Muy buena documentación está disponible con esta herramienta en la forma del Libro HTK. También contiene un capítulo completo dedicado a crear un reconocedor de voz en tiempo real a nivel de teléfono. A partir de la declaración de su problema anterior, me parece que puede volver a trabajar ese ejemplo en su propia solución. Posibles trampas:

  1. Dado que desea hacer un reconocimiento de nivel de teléfono, los datos necesarios para entrenar los modelos de teléfono serían muy altos. Además, su base de datos de capacitación debe ser equilibrada en términos de distribución de los teléfonos.

  2. La construcción de un sistema independiente de altavoces requeriría datos de más de un altavoz. Y mucho de eso también.

  3. Dado que se trata de código abierto, también debe consultar la información de la licencia para obtener detalles adicionales sobre el envío del código. Una buena alternativa sería usar la grabadora en el teléfono y luego hacer que la forma de onda grabada se envíe a través de un canal de datos a un servidor para el reconocimiento, más o menos como lo hace Google.


Tengo un poco de experiencia con este tipo de procesamiento de señales, y diría que probablemente este no sea el tipo de pregunta finita a la que se puede responder de manera definitiva.

Una cosa que vale la pena mencionar es que aunque puede restringir los fonemas que le interesan, el espacio de posibilidad sigue siendo el mismo (es decir, infinito-ish). La capacitación del usuario puede ayudar a los algoritmos a lo largo de un poco, pero la capacitación útil toma un poco de tiempo y parece que eres reacio a eso.

Usar Sphinx es probablemente un gran comienzo en este problema. No he llegado muy lejos en la biblioteca, pero supongo que usted estará trabajando con su código fuente para obtener exactamente lo que desea. (¡Hurra por el código abierto!)

... usando un martillo para romper una tuerca.

No etiquetaría tu problema como un chiflado, diría que es más como una bestia. Puede ser una bestia diferente al reconocimiento de voz en lenguaje natural, pero sigue siendo una bestia.

Todo lo mejor con tu resolución de problemas.


http://www.hfink.eu/matchbox

Esta página enlaza con la demostración de video de YouTube y la fuente de github.

Supongo que aún sería mucho trabajo moldearlo en la forma que busco, pero definitivamente también hace mucho trabajo.


No estoy seguro de si esto ayudaría: echa un vistazo a LanguageModelGenerator OpenEars . OpenEars utiliza Sphinx y otras bibliotecas.