Cómo comenzar a aprender algoritmos de reconocimiento de voz

Un buen comienzo podría ser la página de Wikipedia de reconocimiento de voz para obtener algunos consejos útiles. También miraría la documentación de los marcos existentes (como HTK, Kaldi, …), solo para tener una idea de su arquitectura y componentes principales. El tamaño y la complejidad de esos proyectos existentes pueden darle una idea de cuánto tiempo le llevará hacer algo similar.

Supongo que si quieres hacer tu propio motor de reconocimiento desde cero, debes hacerlo de alguna manera diferente a los ya existentes. Dado que no sabe mucho (de lo contrario no necesitaría hacer esta pregunta), comenzaría jugando con lo que está disponible para tener una idea y luego decidir si realmente vale la pena rehacer el trabajo realizado en los últimos 30 más o menos años por miles de expertos, o contribuir a su trabajo en forma de soluciones y nuevos algoritmos para marcos de código abierto.

EDITAR:

Algunos antecedentes teóricos que son útiles cuando se aprende el reconocimiento de voz y el procesamiento del habla en general.

El discurso contiene mucha información que se puede extraer con diferentes niveles de dificultad. La forma más básica es la señal de audio que sale de la boca de un humano. No es más que vibraciones de aire expulsadas de los pulmones y formadas por la cuerda vocal. Cada hablante tiene una frecuencia de resonancia específica de la cuerda vocal (muy parecida a las huellas digitales) que el oyente detecta como tono y tono de la voz. Así es como distinguimos a las personas al escucharlas. Luego está, por supuesto, la información fonética: lo que dice el hablante. La información fonética puede extraerse para reescribirse como una secuencia de fonemas, que luego se unen en palabras y oraciones. Finalmente, podemos aplicar el procesamiento del lenguaje natural en esta transcripción para extraer el significado de lo que se dijo.

El habla es analógica, pero nuestras computadoras son digitales. Las señales de entrada también son digitales … muestreadas y cuantificadas, por lo que son discretas tanto en tiempo como en valor cuando comenzamos a procesarlas. Tanto el muestreo como la cuantificación introducen errores en el alias de la señal (del muestreo) y el ruido de cuantización, pero es más fácil trabajar con las señales digitales. Además, el habla cambia constantemente, hasta 50 veces por segundo, por lo que dividimos la señal de entrada en cuadros en los que el hablante presumiblemente dijo solo un fonema. Esto es complicado, porque no conocemos los límites entre fonemas de antemano. Lo que terminamos haciendo es tener marcos ligeramente superpuestos.

Entonces, ¿cómo llegamos a una transcripción utilizable de un archivo de audio que contiene voz? Nos gustaría tener un método robusto que funcione para todos los hablantes, al menos para aquellos que hablan un idioma específico. La entrada que tenemos contiene pulsos periódicos (desde la cuerda vocal), tiene un valor promedio distinto de cero (la señal tiene un componente de CC), puede ser de diferente volumen y longitud. Puede haber personas que digan un sonido ‘a’ durante 0.1 segundos o 1.2 segundos … tenemos que hacer coincidir ambos. El ruido de fondo también debe tenerse en cuenta.

Primero nos deshacemos de los componentes específicos del hablante. El valor de CC de la señal es fácil de eliminar, simplemente calcule el promedio y reste de cada muestra. Luego modelamos los órganos formadores de voz de los altavoces (cuerdas vocales, boca, …) usando un filtro lineal llamado LPC (Linear Predictive Coding). Este filtro se puede configurar automáticamente para ajustarse bastante bien a la entrada de voz, pero tiene muy pocos coeficientes para predecir los pulsos provenientes del tono (estas son frecuencias demasiado bajas). El error de predicción del filtro LPC contiene, por lo tanto, algo de ruido de baja energía y pulsos periódicos de alta energía. Para filtrar esos pulsos, utilizamos un filtro de predicción a largo plazo, que adivina la siguiente muestra de una muestra de k pasos en el pasado: probamos todas las k posibles hasta obtener la que tiene la tasa de error más baja.

Así que aquí tenemos un filtro LPC con sus coeficientes, tenemos el tono y algo de ruido después del filtrado. Los coeficientes de filtro LPC nos dicen más sobre el fonema: todos sostienen su boca de una manera específica cuando forman un sonido ‘a’. También a partir del tono medido, suponemos si el cuadro actual se expresó o no … así es como podemos distinguir, por ejemplo, ‘d’ de ‘t’ … ambos se forman de la misma manera, pero para uno el acorde vocal resuena, para el otro permanece cerrado Los coeficientes LPC y la información si la trama se expresó se ingresan en un reconocedor que decide a qué fonema corresponde la trama.

El reconocedor puede ser algún tipo de función de puntuación (distribución de probabilidad, red neuronal, lo que sea …), que generalmente se entrena utilizando el aprendizaje automático en grandes bases de datos de audio transcritas a mano, y asigna una probabilidad de ser un fonema dado a cada cuadro . Luego se elige el fonema con la mayor probabilidad.

A continuación, los fonemas se agrupan en palabras. Este paso es útil porque los fonemas individuales pueden depender del contexto y pueden sonar de manera diferente cuando se siguen otros fonemas diferentes, al final de una palabra, etc. Para reconocer palabras, se utilizan HMMs – Modelos ocultos de Markov. Los HMM utilizados para el reconocimiento de palabras son autómatas unidireccionales (máquinas de estado finito que no pueden volver a un estado visitado anteriormente) con transiciones probabilísticas. Cada estado del HMM tendrá un evaluador de la probabilidad de que el marco actual se ajuste al modelo de una palabra. Cada palabra en un diccionario recibe una puntuación de probabilidad del modelo HMM y la palabra más probable se emite en la transcripción.

No hace falta decir que cada parte de la tubería necesita capacitación … el fonema y los reconocedores de palabras solo una vez (pero lleva mucho tiempo y requiere muchos recursos), el filtro LPC y el filtro de predicción a largo plazo (para el tono) para cada cuadro o grupo de cuadros (estos dos son bastante simples).

Entonces, una lista de habilidades teóricas y prácticas para construir todo esto incluye procesamiento de señales, aprendizaje automático, teoría de autómatas, estadísticas y para hacer modelos de lenguaje útiles, también fonética, lingüística y otros campos relacionados.

Mire los videos de youtube en chief speechTifr obtendrá una idea básica y buena sobre el reconocimiento de voz. Nos referimos a lo mismo solamente.

[correo electrónico protegido]

mira esto:

oxford-cs-deepnlp-2017 / conferencias

hay videos y apuntes también

Lea este libro: Procesamiento de voz y audio por Shaila Apte. Paralelamente, aprenda todos los conceptos en procesamiento de señal digital. Código de práctica en Matlab.