En el procesamiento de señales , la regresión lineal de máxima verosimilitud en el espacio de características ( fMLLR ) es una transformación de características globales que se aplica normalmente de forma adaptativa al hablante, donde fMLLR transforma las características acústicas en características adaptadas al hablante mediante una operación de multiplicación con una matriz de transformación. En alguna literatura, fMLLR también se conoce como regresión lineal de máxima verosimilitud restringida ( cMLLR ).
Descripción general
Las transformaciones fMLLR se entrenan en un sentido de máxima verosimilitud sobre datos de adaptación. Estas transformaciones se pueden estimar de muchas maneras, pero solo se considera la estimación de máxima verosimilitud (ML) en fMLLR. La transformación fMLLR se entrena sobre un conjunto particular de datos de adaptación, de modo que maximice la verosimilitud de esos datos de adaptación dado un conjunto de modelos actual.
Esta técnica es un enfoque ampliamente utilizado para la adaptación del hablante en el reconocimiento de voz basado en HMM . [1] [2] Investigaciones posteriores [3] también muestran que fMLLR es una característica acústica excelente para los modelos de reconocimiento de voz híbridos DNN/HMM [4] .
Las ventajas de fMLLR incluyen lo siguiente:
- El proceso de adaptación se puede realizar dentro de una fase de preprocesamiento y es independiente del proceso de entrenamiento y decodificación de ASR .
- Este tipo de característica adaptada se puede aplicar a redes neuronales profundas (DNN) para reemplazar el espectrograma mel utilizado tradicionalmente en modelos de reconocimiento de voz de extremo a extremo.
- El proceso de adaptación de altavoces de fMLLR genera un aumento significativo del rendimiento de los modelos ASR , superando así otras transformaciones o características como los coeficientes MFCC (coeficientes cepstrales de frecuencia Mel) y FBANK (banco de filtros).
- Las funciones de fMLLR se pueden implementar de manera eficiente con kits de herramientas de voz como Kaldi .
Principales problemas y desventajas de fMLLR:
- Cuando la cantidad de datos de adaptación es limitada, las matrices de transformación tienden a sobreajustarse fácilmente a los datos dados.
Cálculo de la transformada fMLLR
La transformación de características de fMLLR se puede calcular fácilmente con la herramienta de voz de código abierto Kaldi ; el script Kaldi utiliza el esquema de estimación estándar descrito en el Apéndice B del artículo original, [1] en particular la sección Apéndice B.1 "Método directo sobre filas".
En la formulación de Kaldi, fMLLR es una transformación de característica afín de la forma → , que se puede escribir en la forma →W , donde = es la característica acústica con un 1 añadido. Tenga en cuenta que esto difiere de parte de la literatura donde el 1 viene primero como = .
Las estadísticas suficientes almacenadas son:
donde es la matriz de covarianza inversa.
Y para donde esta la dimensión característica:
Para una revisión exhaustiva que explica fMLLR y las técnicas de estimación comúnmente utilizadas, consulte el artículo original "Transformaciones lineales de máxima verosimilitud para el reconocimiento de voz basado en HMM [1] ".
Tenga en cuenta que el script Kaldi que realiza las transformaciones de características de fMLLR difiere de [1] al utilizar una columna de la inversa en lugar de la fila del cofactor. En otras palabras, se ignora el factor del determinante, ya que no afecta el resultado de la transformación y puede causar un peligro potencial de desbordamiento o subdesbordamiento numérico.
Comparando con otras características o transformaciones
El resultado del experimento muestra que al utilizar la función fMLLR en el reconocimiento de voz, se obtiene una mejora constante con respecto a otras funciones acústicas en varios conjuntos de datos de referencia comúnmente utilizados ( TIMIT , LibriSpeech, etc.).
En particular, las características de fMLLR superan los coeficientes MFCC y FBANK , lo que se debe principalmente al proceso de adaptación del hablante que realiza fMLLR. [3]
En [3] se informa la tasa de error de fonemas (PER, %) para el conjunto de pruebas de TIMIT con varias arquitecturas neuronales:
Como se esperaba, las características fMLLR superan los coeficientes MFCC y FBANK a pesar del uso de una arquitectura de modelo diferente.
Mientras que MLP (perceptrón multicapa) sirve como una línea de base simple, por otro lado, RNN , LSTM y GRU son modelos recurrentes bien conocidos.
La arquitectura Li-GRU [5] se basa en una sola puerta y, por lo tanto, ahorra un 33 % de los cálculos en comparación con un modelo GRU estándar; por lo tanto, Li-GRU aborda de manera efectiva el problema de desaparición del gradiente de los modelos recurrentes.
Como resultado, el mejor rendimiento se obtiene con el modelo Li-GRU en las características fMLLR.
Extraer características fMLLR con Kaldi
fMLLR se puede extraer como se informa en la receta s5 de Kaldi.
Los scripts Kaldi ciertamente pueden extraer características fMLLR en diferentes conjuntos de datos; a continuación se presentan los pasos de ejemplo básicos para extraer características fMLLR del corpus de voz de código abierto Librispeech.
Tenga en cuenta que las instrucciones a continuación son para los subconjuntos train-clean-100, train-clean-360, dev-clean, y test-clean,
pero se pueden ampliar fácilmente para admitir los otros conjuntos dev-other, test-otherytrain-other-500.
- Estas instrucciones se basan en los códigos proporcionados en este repositorio de GitHub, que contiene recetas de Kaldi en los corpus de LibriSpeech para ejecutar el proceso de extracción de características fMLLR, reemplace los archivos debajo
$KALDI_ROOT/egs/librispeech/s5/con los archivos en el repositorio. - Instalar Kaldi .
- Instalar Kaldiio.
- Si se ejecuta en una sola máquina, cambie las siguientes líneas
$KALDI_ROOT/egs/librispeech/s5/cmd.shpara reemplazarlasqueue.plporrun.pl:exportar train_cmd = "run.pl --mem 2G" exportar decode_cmd = "run.pl --mem 4G" exportar mkgraph_cmd = "run.pl --mem 8G"
- Cambie la
dataruta arun.shla ruta de datos de LibriSpeech; el directorioLibriSpeech/debería estar en esa ruta. Por ejemplo:data = /media/user/SSD # ruta de ejemplo
- Instalar
flaccon:sudo apt-get install flac - Ejecute la receta Kaldi
run.shpara LibriSpeech al menos hasta la Etapa 13 (incluida), para simplificar puede usar el run.sh modificado. - Copie
exp/tri4b/trans.*los archivosexp/tri4b/decode_tgsmall_train_clean_*/con el siguiente comando:mkdir exp/tri4b/decodificar_tgsmall_train_clean_100 && cp exp/tri4b/trans.* exp/tri4b/decodificar_tgsmall_train_clean_100/
- Calcule las características fMLLR ejecutando el siguiente script, que también se puede descargar aquí:
#!/bin/bash . ./cmd.sh ## Querrá cambiar cmd.sh a algo que funcione en su sistema. . ./path.sh ## Fuente de las herramientas/utilidades (importa el queue.pl) gmmdir = exp/tri4b para el fragmento en dev_clean test_clean train_clean_100 train_clean_360 ; hacer dir = fmllr/ $fragmento pasos/nnet/make_fmllr_feats.sh --nj 10 --cmd " $train_cmd " \ --transform-dir $gmmdir /decode_tgsmall_ $chunk \ $dir datos/ $fragmento $gmmdir $dir /log $dir /datos || salida 1 computar-cmvn-stats --spk2utt = ark:data/ $fragmento /spk2utt scp:fmllr/ $fragmento /feats.scp ark: $dir /data/cmvn_speaker.ark hecho
- Calcular alineaciones utilizando:
# alineaciones en dev_clean y test_clean pasos/align_fmllr.sh --nj 10 datos/dev_clean datos/lang exp/tri4b exp/tri4b_ali_dev_clean pasos/align_fmllr.sh --nj 10 datos/prueba_limpia datos/lang exp/tri4b exp/tri4b_ali_prueba_limpia pasos/align_fmllr.sh --nj 30 datos/train_clean_100 datos/lang exp/tri4b exp/tri4b_ali_clean_100 pasos/align_fmllr.sh --nj 30 datos/train_clean_360 datos/lang exp/tri4b exp/tri4b_ali_clean_360
- Aplique CMVN y vuele las características fMLLR a los nuevos archivos .ark, el script también se puede descargar aquí:
#!/bin/bash data = /user/kaldi/egs/librispeech/s5 ## Querrá cambiar esta ruta a algo que funcione en su sistema. rm -rf $datos /fmllr_cmvn/ mkdir $datos /fmllr_cmvn/ para la parte de dev_clean test_clean train_clean_100 train_clean_360 ; hacer mkdir $datos /fmllr_cmvn/ $parte / aplicar-cmvn --utt2spk = ark: $datos /fmllr/ $parte /utt2spk ark: $datos /fmllr/ $parte /datos/cmvn_speaker.ark scp: $datos /fmllr/ $parte /feats.scp ark:- | agregar-deltas --delta-order = 0 ark:- ark: $datos /fmllr_cmvn/ $parte /fmllr_cmvn.ark hecho du -sh $datos /fmllr_cmvn/* eco "¡Hecho!"
- Utilice el script de Python para convertir las características .ark generadas por Kaldi a .npy para su propio cargador de datos. Se proporciona un script de Python de ejemplo:
Python ark2libri.py
Véase también
Referencias
- ^ abcd MJF Gales (1998). "Transformaciones lineales de máxima verosimilitud para el reconocimiento de voz basado en HMM". Computer Speech & Language . 12 (2): 75–98. CiteSeerX 10.1.1.37.8252 . doi :10.1006/csla.1998.0043.
- ^ Jing Huang; E Marcheret; K Visweswariah (2005). Adaptación rápida de altavoces del espacio de características para el reconocimiento de voz audiovisual basado en HMM de múltiples transmisiones . IEEE International Conference on Multimedia and Expo (ICME). IEEE. págs. 338–341. doi :10.1109/ICME.2005.1521429.
- ^ abcd Ravanelli, Mirco; Parcollet, Titouan; Bengio, Yoshua (18 de noviembre de 2018). "El kit de herramientas de reconocimiento de voz PyTorch-Kaldi". arXiv : 1811.07453 [eess.AS].
- ^ Li, Longfei; Zhao, Yong; Jiang, Dongmei; Zhang, Yanning; Wang, Fengna; Gonzalez, Isabel; Valentin, Enescu; Sahli, Hichem (septiembre de 2013). "Reconocimiento de emociones del habla basado en red neuronal profunda híbrida-modelo oculto de Markov (DNN-HMM)". Conferencia de la Asociación Humana de 2013 sobre computación afectiva e interacción inteligente . IEEE. págs. 312–317. doi :10.1109/acii.2013.58. ISBN . 978-0-7695-5048-0.S2CID 9665019 .
- ^ Ravanelli, Mirco; Brakel, Philemon; Omologo, Maurizio; Bengio, Yoshua (20 de agosto de 2017). "Mejora del reconocimiento de voz mediante la revisión de unidades recurrentes bloqueadas". Interspeech 2017. ISCA: ISCA: 1308–1312. arXiv : 1710.00641 . Código Bibliográfico : 2017arXiv171000641R. doi : 10.21437/interspeech.2017-775. S2CID : 1696099.