stringtranslate.com

FMLLR

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:

Principales problemas y desventajas de fMLLR:

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.

  1. 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.
  2. Instalar Kaldi .
  3. Instalar Kaldiio.
  4. Si se ejecuta en una sola máquina, cambie las siguientes líneas $KALDI_ROOT/egs/librispeech/s5/cmd.shpara reemplazarlas queue.plpor run.pl:
    exportar train_cmd = "run.pl --mem 2G" exportar decode_cmd = "run.pl --mem 4G" exportar mkgraph_cmd = "run.pl --mem 8G" 
  5. Cambie la dataruta a run.shla ruta de datos de LibriSpeech; el directorio LibriSpeech/debería estar en esa ruta. Por ejemplo:
    data = /media/user/SSD # ruta de ejemplo 
  6. Instalar flaccon:sudo apt-get install flac
  7. Ejecute la receta Kaldi run.shpara LibriSpeech al menos hasta la Etapa 13 (incluida), para simplificar puede usar el run.sh modificado.
  8. Copie exp/tri4b/trans.*los archivos exp/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/    
  9. 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/tri4bpara  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.arkhecho
  10. Calcular alineaciones utilizando:
    # alineaciones en dev_clean y test_cleanpasos/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     
  11. Aplique CMVN y vuele las características fMLLR a los nuevos archivos .ark, el script también se puede descargar aquí:
    #!/bin/bashdata = /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     hechodu  -sh $datos /fmllr_cmvn/* eco "¡Hecho!" 
  12. 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

  1. ^ 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.
  2. ^ 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.
  3. ^ 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].
  4. ^ 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  .
  5. ^ 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.