Ir al contenido principal

Marcelino - Paso 6 - Crear monofonos planos de inicio

Paso 6 - Crear monofonos planos de inicio

  Definir modelo de prototipo

    El primer paso en el entrenamiento de  Modelos Ocultos de Markov (Hidden Markov Model "HMM") es la definición de un modelo prototipo llamado "proto". El enfoque aquí es crear una estructura de modelo, los parámetros no son importantes. Cree un archivo llamado proto en su directorio 'voxforge/tutorial' conteniendo lo siguiente:

      ~o <VecSize> 25 <MFCC_0_D_N_Z>
      ~h "proto"
      <BeginHMM>
        <NumStates> 5
        <State> 2
          <Mean> 25
            0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
          <Variance> 25
            1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
        <State> 3
          <Mean> 25
            0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
          <Variance> 25
            1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
        <State> 4
          <Mean> 25
            0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
          <Variance> 25
            1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
      <TransP> 5
       0.0 1.0 0.0 0.0 0.0
       0.0 0.6 0.4 0.0 0.0
       0.0 0.0 0.6 0.4 0.0
       0.0 0.0 0.0 0.7 0.3
       0.0 0.0 0.0 0.0 0.0
      <EndHMM>

    Para más detalles sobre todo esto, consulte el libro de HTK.

    También necesita un archivo de configuración. Cree un archivo llamado config en su directorio 'voxforge/tutorial' con contenga los siguientes datos:

      TARGETKIND = MFCC_0_D_N_Z
      TARGETRATE = 100000.0
      SAVECOMPRESSED = T
      SAVEWITHCRC = T
      WINDOWSIZE = 250000.0
      USEHAMMING = T
      PREEMCOEF = 0.97
      NUMCHANS = 26
      CEPLIFTER = 22
      NUMCEPS = 12

    Nota: el tipo de destino en su archivo proto (el "MFCC_0_D_N_Z" en la primera línea), debe coincidir con TARGETKIND en su archivo de configuración.

    También debe indicar a HTK dónde están ubicados todos sus archivos vectoriales de características (estos son los archivos mfcc que creó en el último paso). Esto se hace con un archivo de script HTK. Por lo tanto, cree un archivo llamado train.scp con los siguientes datos:

      ../train/mfcc/muestra1.mfc
      ../train/mfcc/muestra2.mfc
      ../train/mfcc/muestra3.mfc
      ../train/mfcc/muestra4.mfc
      ../train/mfcc/muestra5.mfc
      ../train/mfcc/muestra6.mfc
      ../train/mfcc/muestra7.mfc
      ../train/mfcc/muestra8.mfc
      ../train/mfcc/muestra9.mfc
      ../train/mfcc/muestra10.mfc
      ../train/mfcc/muestra11.mfc
      ../train/mfcc/muestra12.mfc
      ../train/mfcc/muestra13.mfc
      ../train/mfcc/muestra14.mfc
      ../train/mfcc/muestra15.mfc
      ../train/mfcc/muestra16.mfc
      ../train/mfcc/muestra17.mfc
      ../train/mfcc/muestra18.mfc
      ../train/mfcc/muestra19.mfc
      ../train/mfcc/muestra20.mfc
      ../train/mfcc/muestra21.mfc
      ../train/mfcc/muestra22.mfc
      ../train/mfcc/muestra23.mfc
      ../train/mfcc/muestra24.mfc
      ../train/mfcc/muestra25.mfc
      ../train/mfcc/muestra26.mfc
      ../train/mfcc/muestra27.mfc
      ../train/mfcc/muestra28.mfc
      ../train/mfcc/muestra29.mfc
      ../train/mfcc/muestra30.mfc
      ../train/mfcc/muestra31.mfc
      ../train/mfcc/muestra32.mfc
      ../train/mfcc/muestra33.mfc
      ../train/mfcc/muestra34.mfc
      ../train/mfcc/muestra35.mfc
      ../train/mfcc/muestra36.mfc
      ../train/mfcc/muestra37.mfc
      ../train/mfcc/muestra38.mfc
      ../train/mfcc/muestra39.mfc
      ../train/mfcc/muestra40.mfc

    El siguiente paso es crear una nueva carpeta llamada hmm0.

      mkdir hmm0

    A continuación, cree una nueva versión de proto en la carpeta hmm0 - utilizando la herramienta HTK HCompV de la siguiente manera:

      ../soft/htk/HTKTools/HCompV -A -D -T 1 -C config -f 0.01 -m -S train.scp -M hmm0 proto

    Esto crea dos archivos en la carpeta hmm0:

      - proto
      - vFloors

  Inicio Monofonos

    Crear hmmdefs

        Cree un nuevo archivo llamado hmmdefs en su carpeta 'voxforge/tutorial/hmm0':

            Copie el archivo monophones0 a su carpeta hmm0;
            Cambie el nombre del archivo monophones0 a ​​hmmdefs;

        Para cada fonema en hmmdefs:

            Poner el fonema entre comillas dobles;
            Agregue '~h' antes del fonema (note el espacio después del '~h');
            Copie desde la línea 5 en adelante (es decir, comenzando de "<BEGINHMM>" a "<ENDHMM>") del archivo hmm0/proto y péguelo después de cada fonema.

        Deje una línea en blanco al final de su archivo.

    Esto crea el archivo hmmdefs, que contiene monofonos "planos de inicio".

  Crear archivo de macros

    El paso final de esta sección es crear el archivo de macros.

    Un nuevo archivo llamado macros debe ser creado y almacenado en su carpeta 'voxforge/tutorial/hmm0':

      Crear un nuevo archivo llamado macros en hmm0;
      Copia vFloors a macros
      Copiar las 3 primeras líneas de proto (de ~o a <DIAGC>) y agregarlas a la parte superior del archivo de macros

    Debe ser algo como esto cuando haya terminado:

      ~o
      <STREAMINFO> 1 25
      <VECSIZE> 25<NULLD><MFCC_D_N_Z_0><DIAGC>
      ~v varFloor1
      <Variance> 25
        6.580434e-01 3.732679e-01 3.525515e-01 4.770429e-01 4.332327e-01 4.544640e-01 5.620689e-01 2.553866e-01 4.001572e-01 3.416671e-01 2.128212e-01 2.660224e-01 1.668585e-02 1.700366e-02 1.616409e-02 1.768895e-02 1.718035e-02 2.098122e-02 2.326025e-02 1.677738e-02 2.010739e-02 1.595870e-02 1.417548e-02 1.510511e-02 1.447709e-02

  Reestimar Monófonos

    A continuación, cree 9 nuevas carpetas con el nombre consecutivo en su carpeta 'voxforge/tutorial': hmm1 a hmm9.

      mkdir hmm1 hmm2 hmm3 hmm4 hmm5 hmm6 hmm7 hmm8 hmm9

    Los monofonos planos de inicio se vuelven a calcular utilizando la herramienta HERest. El propósito de esto es cargar todos los modelos en la carpeta hmm0 (estos se encuentran en el archivo hmmdefs) y volver a estimarlos utilizando los archivos MFCC listados en el script train.scp y crear un nuevo modelo en hmm1. Ejecute el comando HERest desde el directorio 'voxforge/tutorial':

      ../soft/htk/HTKTools/HERest -A -D -T 1 -C config -I fonemas0.mlf -t 250.0 150.0 1000.0 -S train.scp -H hmm0/macros -H hmm0/hmmdefs -M hmm1 monophones0

    Los archivos creados por este comando son:

      - hmmdefs
      - macros

    Este proceso se repite 2 veces más, creando nuevos conjuntos de modelos en hmm2 y hmm3, respectivamente:

      ../soft/htk/HTKTools/HERest -A -D -T 1 -C config -I fonemas0.mlf -t 250.0 150.0 1000.0 -S train.scp -H hmm1/macros -H hmm1/hmmdefs -M hmm2 monophones0

    Los archivos creados por este comando son:

      - hmmdefs
      - macros

      ../soft/htk/HTKTools/HERest -A -D -T 1 -C config -I fonemas0.mlf -t 250.0 150.0 1000.0 -S train.scp -H hmm2/macros -H hmm2/hmmdefs -M hmm3 monophones0

    Los archivos creados por este comando son:

      - hmmdefs
      - macros