Reconocimiento de voz - Decodificador (WFST, Lattice)

       Bajo la premisa de decodificar como una secuencia de observación acústica dada O=\izquierda \{ o_{1},o_{2},...,o_{T} \derecha \}, encontrar la secuencia de palabras más probable W=\izquierda \{ w_{1},w_{2},...,w_{N} \derecha \}, obtenida por bayesiano:

        W=argmax_{w}P\left ( W|O \right )=argmax_{w}P\left ( O|W \right )P\left ( W \right )

        El propósito de la decodificación es encontrar uno o más caminos óptimos desde el estado inicial hasta el estado final en el espacio de decodificación.

        El decodificador es una parte importante del sistema de reconocimiento de voz. Los principales métodos de decodificación son los siguientes:

        1) Decodificadores dinámicos: los decodificadores dinámicos utilizan la búsqueda primero en amplitud para generar simultáneamente múltiples hipótesis en la red de búsqueda original y confían en el algoritmo de poda para no hacer que la red sea demasiado grande.

        2) Transductores ponderados de estado finito (transductores ponderados de estado finito): los transductores ponderados de estado finito utilizan algoritmos de autómatas de estado finito para representar y optimizar estructuras de red a nivel de estado, y utilizan el algoritmo de ruta más corta para buscar estructuras gráficas.

        3) Búsqueda de pasos múltiples: Inicialmente, se utiliza un modelo de lenguaje binario intrapalabra. Se pueden generar varias hipótesis usando algunos modelos simples; las hipótesis se vuelven a calificar usando modelos entre palabras más precisos en la lista N-mejor o cuadrícula de palabras obtenida en el primer paso.

Decodificador dinámico original basado en Viterbi:

        El decodificador dinámico original basado en Viterbi utiliza la búsqueda primero en amplitud para generar simultáneamente múltiples hipótesis en la red de búsqueda original y se basa en el algoritmo de poda para no hacer que la red sea demasiado grande.

        La red de decodificación dinámica solo compila el diccionario en una red de estado, que constituye el espacio de búsqueda.

        Tomando un diccionario de cuatro palabras como ejemplo, el diccionario contiene las siguientes cuatro palabras:

        El espacio de búsqueda formado se puede dividir en: diccionario lineal, diccionario de árbol

1) diccionario lineal

        Primero, reemplace todas las palabras en el diccionario con la secuencia de estado de fonema correspondiente, y forme una red paralela en paralelo, y luego combine el modelo de lenguaje para determinar la conexión de bucle de red.El siguiente es un diagrama esquemático de la red de decodificación usando el 1 -modelo de lenguaje grama:

         El uso de modelos de lenguaje de 2 y 3 gramos puede eliminar algunas combinaciones raras, lo que ayuda al cálculo de poda del proceso de decodificación.Los diagramas esquemáticos de la red de decodificación son los siguientes:

         donde sp es el espacio entre palabras.

        Después de obtener la red paralela (bucle invertido) construida con diccionarios, la secuencia de estado se expande horizontalmente de acuerdo con la secuencia de observación (información de voz), el eje x es el tiempo y el eje y es el estado.

         En la figura, cada tres estados representan un fonema.

        De acuerdo con el algoritmo de Viterbi, con el paso del tiempo y el movimiento del marco, compare gradualmente la probabilidad acumulada de cada camino con el último estado de la última palabra y obtenga el camino óptimo, es decir, la oración de decodificación final, y termina la decodificación.

        ( Problema de decodificación de HMM (Viterbi, A*, búsqueda de haz)_blog de weixin_43284996-blog de CSDN )

        El proceso de decodificación se puede optimizar mediante la poda de algoritmos como el paso de tokens (Token Passing).

        Sin embargo, se puede ver que la red de decodificación mencionada anteriormente está formada por una conexión de red paralela de las secuencias de estados de fonemas de todas las palabras.Si el vocabulario es grande, la complejidad de almacenamiento y cálculo es muy alta.

2) Diccionario de árboles

        Para resolver el problema de los diccionarios lineales, se proponen los diccionarios de árboles.

        Construya un árbol de decisión para cada estado de cada fonema:

         La estructura de árbol es para obtener la palabra correspondiente de acuerdo con la ruta del fonema, mientras que el diccionario no lineal primero estima la palabra y luego ingresa la ruta del fonema correspondiente de la palabra. (Pero esto hace que el modelo de lenguaje se use siempre al final de la ruta del teléfono, ¿lo cual se puede lograr introduciendo el modelo de lenguaje antes?)

        Dado que se fusionan una gran cantidad de nodos del mismo estado, la escala del espacio de búsqueda se puede reducir significativamente y la carga computacional del proceso de decodificación se puede reducir.

Resumir:

        Para el proceso de decodificación de un diccionario grande, el decodificador dinámico original basado en Viterbi tiene una gran cantidad de cálculos y una velocidad de decodificación lenta.

        Para acelerar la decodificación:

        Por un lado, se puede realizar una poda, y en la decodificación se selecciona el camino óptimo, y los caminos que superan el umbral de poda se eliminan directamente sin operaciones posteriores.

        Por otro lado, la fuente de conocimiento puede precompilarse en una red estática (WFST) y usarse directamente en la decodificación.

Decodificador estático Viterbi basado en WFST:

        Para acelerar la decodificación, la fuente de conocimiento dinámico se puede compilar de antemano para formar una red estática, a la que se puede llamar directamente durante la decodificación.
Ingrese la secuencia de estado HMM y obtenga directamente la secuencia de palabras y su puntaje relacionado.

        Utilice H, C, L y G para representar las formas WFST del modelo HMM, el modelo trifónico, el diccionario y el modelo de lenguaje mencionados anteriormente, respectivamente.

(La introducción de WFST y el proceso de construcción de la red se pueden ver: Transductor de estado finito ponderado/blog de WFST_weixin_43284996-blog de CSDN )

        En este decodificador, la parte acústica (secuencia de observación a secuencia de estado HMM) aún debe calcularse por separado de acuerdo con las características de entrada, y otra información contenida en HCLG se ha contenido en toda la red estática, a través de la entrada, salida y peso del arco de transferencia en la red.

        Dado que la red estática ha ampliado completamente el espacio de búsqueda, solo necesita calcular la probabilidad acústica y la probabilidad acumulada de acuerdo con los pesos de transferencia entre nodos, por lo que la velocidad de decodificación es muy rápida.

        El proceso de decodificación utiliza el mecanismo de propagación de tokens Token Passing, que en realidad es una versión general de la decodificación Viterbi.

        Sin embargo, en el uso real, es difícil garantizar que la ruta óptima de decodificación de viterbi sea el resultado de salida más adecuado (por ejemplo: cambios de escena de idioma), por lo que la red se usa a menudo para guardar varios resultados de reconocimiento de candidatos para su procesamiento posterior.

Decodificación estática de Lattice basada en WFST:

        En el proceso de reconocimiento de voz tradicional, el entrenamiento del modelo acústico suele consumir muchos recursos, por lo que el modelo acústico no se actualiza con frecuencia, lo que dificulta que el sistema de reconocimiento de voz se optimice rápidamente para escenarios específicos. Por otro lado, para asegurar la eficiencia de la decodificación, la poda del gráfico de decodificación es un paso necesario, y es común usar la búsqueda de haces directamente. Teniendo en cuenta estas dos cuestiones, existe Lattice.

        Al decodificar, se utilizan algunos métodos de poda para obtener finalmente la N-mejor ruta, y la WFST obtenida después de volver a determinar la N-mejor ruta es Lattice.

        Al igual que HCLG, la entrada de Lattice es un estado HMM y su salida es una secuencia de palabras. Sin embargo, en kaldi, la generación y el almacenamiento de Lattice se optimizan para que su entrada y salida sean secuencias de palabras, y la información, como el estado de HMM, se almacene en transición. Por lo tanto, Lattice generalmente se denomina mapa de palabras o celosía de palabras.

         De esta forma, el proceso de decodificación del reconocimiento de voz se divide en dos pasos (dos pasos): el primer paso decodifica para obtener Lattice y el segundo paso realiza la búsqueda de la ruta más corta en Lattice para obtener el mejor resultado de decodificación.

        Los pasos específicos son:

        1) Poda N-mejor: cuando el algoritmo de paso de token original crea un nuevo registro de enlace de palabra (registro de enlace de palabra, WLR), solo se guardará el token con la puntuación más alta y la probabilidad de probabilidad más alta, y el algoritmo mejorado guardará el ficha con la puntuación más alta N fichas. La red se genera a través del exclusivo mecanismo ForwardLink.

        Una ForwardList por cuadro, que se puede asociar con el índice del cuadro, registra la transferencia de tokens entre arcos de emisión y también utiliza una lista enlazada para conectar todos los tokens en todos los estados del cuadro actual.

        2) Construcción de Lattice: al final de la oración, toda la información histórica se retrotraerá a una cuadrícula de palabras. Esta cuadrícula de palabras contiene las puntuaciones del modelo acústico y del modelo de lenguaje, así como las palabras reconocidas y sus correspondientes pasos de tiempo. De esta manera, las N mejores rutas o hipótesis se pueden encontrar en la cuadrícula de palabras de .

       3) 1-mejor reevaluación: Vuelva a calificar la ruta original en Lattice y seleccione la ruta óptima. Al volver a puntuar, se puede usar un modelo de lenguaje más grande o un modelo con mayor relevancia comercial, lo que garantiza que el efecto de decodificación se optimice mientras el modelo acústico permanece sin cambios.

        Sobre la base de los decodificadores anteriores, a veces se utilizan decodificadores híbridos estáticos/dinámicos para la optimización:

       1) Poda de celosía (recorte de celosía) . La cuadrícula de palabras puede ser muy grande cuando se genera, y cada estado guarda múltiples tokens, pero una gran parte tiene poco efecto en la ruta óptima, por lo que la red se puede podar sin reducir la precisión. El método específico es encontrar primero el ruta óptima y su probabilidad de verosimilitud, y luego para cualquier nodo o arco, calcule la probabilidad de máxima verosimilitud de sus direcciones hacia adelante y hacia atrás, es decir, puntúe las direcciones hacia adelante y hacia atrás, y luego súmelas para obtener la probabilidad de pasar por el arco La probabilidad se usa como la probabilidad posterior de este borde, y luego se elimina el borde con una probabilidad posterior muy baja para lograr el propósito de la poda.

        2) Repuntuación del modelo acústico (modificación del modelo acústico): una cuadrícula de palabras se puede utilizar como una gramática restringida de estado finito para la repuntuación de modelos acústicos más complejos. Por lo tanto, al usar el modelo acústico para volver a puntuar, los arcos de conexión originales copiados debido a diferentes contextos de tiempo y fonemas se integrarán, utilizando una cuadrícula de palabras más pequeña. La siguiente figura muestra los arcos de antes y después de la palabra "TO" después siendo integrado Comparado.

        3) Reevaluación del modelo lingüístico (modificación del modelo lingüístico): la cuadrícula de palabras original también se puede volver a clasificar con un nuevo modelo lingüístico, que no necesita considerar la influencia del modelo acústico. -puntuado, que introducirá algunos caminos más. El diagrama de comparación antes y después es el siguiente:

                 4) Red de confusión: el método para generar una red de confusión es encontrar primero la ruta óptima y luego agregar gradualmente otras alineaciones de borde a la red de confusión. Si agregar un cierto borde excede la longitud de la red original, seguirá siendo El edge se une a la red de confusión y agrega un borde !NULL a la ruta óptima anterior.

Resumir:

         El propósito de la decodificación es encontrar uno o más caminos óptimos desde el estado inicial hasta el estado final en el espacio de decodificación. 

        El decodificador dinámico original basado en Viterbi utiliza la búsqueda primero en amplitud para generar simultáneamente múltiples hipótesis en la red de búsqueda original y se basa en el algoritmo de poda para no hacer que la red sea demasiado grande. Se pueden usar diccionarios de árbol en lugar de diccionarios lineales para reducir la complejidad del espacio.

        Para mejorar aún más la velocidad de decodificación, la fuente de conocimiento puede compilarse previamente en una red estática y usarse directamente en la decodificación. Es decir, se genera una WFST.

        En WFST, el algoritmo de paso de Token del algoritmo de Viterbi se puede utilizar para encontrar la mejor ruta.

        Debido a diferentes escenarios, la ruta óptima calculada por Viterbi no es necesariamente la ruta más razonable, por lo que se introduce Lattice. Después de seleccionar la N-mejor ruta óptima, seleccione la ruta más razonable después de volver a puntuar.

        Para el entramado construido, también se pueden utilizar decodificadores híbridos estáticos/dinámicos para la optimización .

Supongo que te gusta

Origin blog.csdn.net/weixin_43284996/article/details/127465939
Recomendado
Clasificación