CMUSPHINX MODELO ESPAÑOL Transcripción incoherente -- ampo con wav campo con speech-to-text campo con cmusphinx campo con pocketsphinx camp Relacionados El problema

Cmusphinx Spanish model incoherent transcription


2
vote

problema

Español

He instalado Pocketsphinx en mi computadora portátil (Linux Mint 17) con el objetivo de transcribir un archivo de audio WAV para enviar un mensaje de texto. Los audios están en español, por lo que he descargado el modelo de español VOXForge 0.2 de su sitio web y que se adaptó a copiar el siguiente código:

  #include <pocketsphinx.h>  int main(int argc, char *argv[]) {    ps_decoder_t *ps;    cmd_ln_t *config;    FILE *fh;    char const *hyp, *uttid;    int16 buf[512];    int rv;    int32 score;     if( argc == 2 )     {       printf("Transcribiendo fichero: %s ", argv[1]);    }    else if( argc > 2 )     {       printf("Demasiados argumentos. ");    }    else     {       printf("Se esperaba un sólo argumento. ");    }    config = cmd_ln_init(NULL, ps_args(), TRUE,              "-hmm", "/home/<myuser>/software/voxforge-es/model_parameters/voxforge_es_sphinx.cd_ptm_3000",              "-lm", "/home/<myuser>/software/voxforge-es/etc/voxforge_es_sphinx.transcription.test.lm",              "-dict", "/home/<myuser>/software/voxforge-es/etc/voxforge_es_sphinx.dic",              NULL);    if (config == NULL)     {       fprintf(stderr, "Failed to create config object, see log for details ");     return -1;    }     ps = ps_init(config);    if (ps == NULL)     {       fprintf(stderr, "Failed to create recognizer, see log for details ");       return -1;    }     fh = fopen(argv[1], "rb");    if (fh == NULL)     {       fprintf(stderr, "Unable to open input file. ");       return -1;    }     rv = ps_start_utt(ps);     while (!feof(fh))     {       size_t nsamp;       nsamp = fread(buf, 2, 512, fh);       rv = ps_process_raw(ps, buf, nsamp, FALSE, FALSE);    }     rv = ps_end_utt(ps);    hyp = ps_get_hyp(ps, &score);    printf("Reconocido: %s ", hyp);     fclose(fh);    ps_free(ps);    cmd_ln_free_r(config);     return 0; }   

El problema es que un archivo mono de 16kHz WAV produce resultados extraños. Lo que quiero saber es si necesito reconstruir el modelo o ajustar un parámetro específico ...

Por ejemplo, considerando el siguiente texto:

"Hola Soy Ingeniero Informático"

Lo convirtí a un archivo de 16kHz / 16BITS / MONO WAV.

Ejecutar mi código, le da esta salida:

  > ./nlptest voice.wav "cola salir en y era de líneas"   

Como puede ver, es totalmente diferente del original. Solo las palabras "Hola" y "Cola" son similares en la pronunciación (pero un significado absolutamente diferente).

Incluso usando PocketsPhinx_Continuougo, los resultados son muy malos (solo se diferencia en una palabra):

  > pocketsphinx_continuous -hmm /home/<myuser>/software/voxforge-es/model_parameters/voxforge_es_sphinx.cd_ptm_3000 -lm /home/<myuser>/software/voxforge-es/etc/voxforge_es_sphinx.transcription.test.lm -dict /home/<myuser>/software/voxforge-es/etc/voxforge_es_sphinx.dic -infile voice.wav "cola seguir en y era de líneas"   

Gracias por su consejo.

Original en ingles

I have installed pocketsphinx in my laptop (Linux Mint 17) aiming to transcribe a WAV audio file to text. The audios are in Spanish, so I've downloaded the Voxforge 0.2 Spanish model from its website and copy-pasted-adapted the following code:

#include <pocketsphinx.h>  int main(int argc, char *argv[]) {    ps_decoder_t *ps;    cmd_ln_t *config;    FILE *fh;    char const *hyp, *uttid;    int16 buf[512];    int rv;    int32 score;     if( argc == 2 )     {       printf("Transcribiendo fichero: %s\n", argv[1]);    }    else if( argc > 2 )     {       printf("Demasiados argumentos.\n");    }    else     {       printf("Se esperaba un sxc3xb3lo argumento.\n");    }    config = cmd_ln_init(NULL, ps_args(), TRUE,              "-hmm", "/home/<myuser>/software/voxforge-es/model_parameters/voxforge_es_sphinx.cd_ptm_3000",              "-lm", "/home/<myuser>/software/voxforge-es/etc/voxforge_es_sphinx.transcription.test.lm",              "-dict", "/home/<myuser>/software/voxforge-es/etc/voxforge_es_sphinx.dic",              NULL);    if (config == NULL)     {       fprintf(stderr, "Failed to create config object, see log for details\n");     return -1;    }     ps = ps_init(config);    if (ps == NULL)     {       fprintf(stderr, "Failed to create recognizer, see log for details\n");       return -1;    }     fh = fopen(argv[1], "rb");    if (fh == NULL)     {       fprintf(stderr, "Unable to open input file.\n");       return -1;    }     rv = ps_start_utt(ps);     while (!feof(fh))     {       size_t nsamp;       nsamp = fread(buf, 2, 512, fh);       rv = ps_process_raw(ps, buf, nsamp, FALSE, FALSE);    }     rv = ps_end_utt(ps);    hyp = ps_get_hyp(ps, &score);    printf("Reconocido: %s\n", hyp);     fclose(fh);    ps_free(ps);    cmd_ln_free_r(config);     return 0; } 

The problem is that a WAV mono 16Khz file yields weird results. What I want to know is if I need to rebuild the model or to tune a specific parameter...

For example, considering the following text:

"Hola soy ingeniero informxc3xa1tico"

I converted it to a 16KHz/16bits/mono WAV file.

Running my code, it gives this output:

> ./nlptest voice.wav "cola salir en y era de lxc3xadneas" 

As you can see it is totally different from the original. Only the words "hola" and "cola" are similar in pronunciation (but absolutely different meaning).

Even using pocketsphinx_continuous, the results are very bad (it only differs in one word):

> pocketsphinx_continuous -hmm /home/<myuser>/software/voxforge-es/model_parameters/voxforge_es_sphinx.cd_ptm_3000 -lm /home/<myuser>/software/voxforge-es/etc/voxforge_es_sphinx.transcription.test.lm -dict /home/<myuser>/software/voxforge-es/etc/voxforge_es_sphinx.dic -infile voice.wav "cola seguir en y era de lxc3xadneas" 

Thanks for your advice.

              
     
     

Lista de respuestas

3
 
vote

El modelo Fri Jan 01 00:00:00 WST 2010 Mon Feb 01 00:00:00 WST 2010 Mon Mar 01 00:00:00 WST 2010 Thu Apr 01 00:00:00 WST 2010 7 que está utilizando tiene "prueba" en el nombre, es solo para fines de prueba. Puede descargar más modelo avanzado Fri Jan 01 00:00:00 WST 2010 Mon Feb 01 00:00:00 WST 2010 Mon Mar 01 00:00:00 WST 2010 Thu Apr 01 00:00:00 WST 2010 8 en nuestro sitio web aquí .

En general, nuestro modelo español es bastante básico y no es muy preciso, si necesita una transcripción seria, debe hacer un gran esfuerzo para extenderlo.

 

The language voxforge_es_sphinx.transcription.test.lm model you are using has "test" in the name, it is for testing purposes only. You can download more advanced model es-20k.lm.gz on our website here.

Overall our Spanish model is quite basic and not very accurate, if you need a serious transcription you need to put a lot of effort to extend it.

 
 
         
         

Relacionados problema

1  Instalación de PocketsPhinx / SphinxBase en OSX para su uso en Xcode 6  ( Installing pocketsphinx sphinxbase in osx for use in xcode 6 ) 
Estoy tratando de usar PocketsPhinx / SphinxBase en una aplicación OSX OpenFrameWorks. He clonado a ambos https://github.com/cmusphinx/pocketsphinx y htt...

2  Configuración de la biblioteca de PocketsPhinx en mi propia aplicación de Android  ( Setting up pocketsphinx library in my own android app ) 
Estoy tratando de implementar reconocimiento de voz con la ayuda de Pocket Sphinx Library . Cuál fue mi enfoque, Acabo de descargar su proyecto de demo...

4  ¿Cómo podemos convertir el archivo .wav al texto usando PocketsPhinx?  ( How can we convert wav file to text by using pocketsphinx ) 
Instalé correctamente Pocketsphinx en My Linux Machine, y ahora quiero convertir un archivo de audio (.wave) al texto usando PocketsPhinx, ¿cómo puedo hacer e...

2  CMU Sphinx: ¿Cómo agregar palabras clave además del vocabulario existente?  ( Cmu sphinx how to add keywords in addition to existing vocabulary ) 
cmu sphinx viene con un gran vocabulario de palabras en inglés. Eso está bien, sin embargo, quiero enfatizar ciertas palabras que usaré como comandos. Algunas...

1  Docker: instalar paquetes en distro alpino que no están disponibles en el repositorio alpino  ( Docker installing packages on alpine distro that arent available in the alpin ) 
Tengo una imagen de Docker que se ejecuta en la distra alpina y para obtener uno de mis requisitos para trabajar - pocketsphinx==0.1.15 , tengo que instalar ...

0  Error rechazado de conexión en Pyaudio y PocketsPhinx  ( Connection refused error in pyaudio and pocketsphinx ) 
Oye, he instalado Pocketsphinx usando PIP y también pyaudio, pero recibo un error al ejecutar el script: ALSA lib pcm_dsnoop.c:618:(snd_pcm_dsnoop_open) un...

1  PocketsPhinx Simple Reconocimiento en Python o Bash  ( Pocketsphinx simple recognition in python or bash ) 
tan lejos como mi reconocimiento trabajando con el comando: pocketsphinx_continuous -hmm /usr/local/share/pocketsphinx/model/en-us/en-us -lm 3199.lm -dict...

0  PocketsPhinx en Python devuelve palabras aleatorias en la búsqueda de palabras clave  ( Pocketsphinx in python returns random words in keyword search ) 
Copié un código de un sitio web para escuchar palabras específicas en Python usando Pocketsphinx.it, aunque se ejecuta, pero nunca emite la palabra clave como...

0  Convertir desde Sendump a MIXT_PEASTS en Pocketsphinx  ( Convert from sendump to mixture weights in pocketsphinx ) 
Estoy haciendo la adaptación de mi modelo acústico personalizado. Refirmé este enlace , pero necesito mixture_weights Archivo para la adaptación, cuando...

0  ¿Hay alguna manera de mejorar la precisión de Pocketsphinx en el reconocimiento del habla?  ( Is there any way to improve accuracy of pocketsphinx on speech recognition ) 
Tengo un script que simplemente convierte el formato de video al WAV con parámetros específicos y luego transcrita su audio. def video_to_wav(self): mp...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos