2011-09-30 20 views
18

¿Alguien puede recomendar un software confiable de código abierto para transcribir el habla inglesa en archivos wav? Los dos programas principales que he investigado son Sphinx y Julius, pero nunca he podido trabajar, y la documentación con cada uno sobre la transcripción de archivos es incompleta en el mejor de los casos.Software de código abierto para transcribir voz en archivos de audio

Estoy desarrollando en Ubuntu 10.04 de 64 bits, cuyas reposiciones incluyen sphinx2 y julius, así como también el modo acústico julius de voxforge para inglés. Me estoy centrando en la transcripción de archivos, en lugar de procesar directamente el sonido de un micrófono, porque he dejado de esperar que proyectos como estos funcionen con el sistema de sonido de Ubuntu. Esto no es un golpe en contra de Ubuntu, ya que puedo grabar sonido con mi micrófono perfectamente utilizando Audacity, pero ninguno de los sistemas parece tener acceso a mi micrófono, así que espero que pueda simplemente su configuración simplemente leyendo desde un archivo.

Primero probé Sphinx2, del paquete Ubuntu sphinx2-bin. Aunque la muestra sphinx2-demo parecía funcionar en la transcripción de un archivo, prácticamente no hay documentación sobre la configuración, por lo que no estoy seguro de cómo personalizaría esto para leer desde un archivo arbitrario. El archivo de audio utilizado en la demostración está en algún formato "16k" no documentado, al que se hace referencia indirectamente a través de 2 archivos de configuración. Hay una breve reseña que describe a sphinx2-demo como ejecutar sphinx2-batch, pero al inspeccionar el script se muestra que realmente está llamando a sphinx2-continuous. Peor aún, los --help docs para cada script listan alrededor de 6 docenas de opciones, y no menciona cuáles son requeridas u opcionales. En general, la falta de documentación sobre la esfinge y la mala calidad de la documentación existente me están volviendo loco.

Probé Julius, nuevamente desde el paquete Ubuntu, que fue sorprendentemente reciente (4.1), considerando que la versión utilizada en el inicio rápido de Voxforge es 3.5. El paquete parece incluir documentación un poco mejor, e incluso un ejemplo escrito en Python (/ usr/share/doc/julius-voxforge/examples/controlapp). Después de leer los documentos del ejemplo, intenté adaptarlo para leer desde un archivo creando un archivo filelist.txt que contenía el texto "hello.wav", que hace referencia a un archivo del mismo nombre, que contiene una grabación de alguien que dice "hola". La colocación de estos en el mismo directorio, me encontré:

julius -input file -filelist filelist.txt -C julian.jconf 

obtener la respuesta:

### read waveform input 
Error: adin_file: sampling rate != 16000 (8000) 
Error: adin_file: error in parsing wav header at hello.wav 
Error: adin_file: failed to read speech data: "hello.wav" 
0 files processed 

Reintentando especificando los nombres de archivo absolutos para filelist.txt y hola.wav producir el mismo error.

También probé la llamada Julius utilizado en el ejemplo, para grabar directamente desde un micrófono:

julius -input mic -C julian.jconf 

me llamaron esto varias veces, y la respuesta varió entre el error:

Cannot read /dev/dsp 

y:

STAT: AD-in thread created 
<<< please speak >>> 

En el último caso, no importa lo que diga en el micrófono, no pasa nada. No puedo decir si aún no puedo leer el micrófono, o si está leyendo algo, pero simplemente no puedo transcribir el audio.

No estoy seguro de qué hacer con esto. Los errores que estoy recibiendo no me dejan con mucho para seguir. ¿Por qué no puede leer un wav? ¿Por qué no puede leer/dev/dsp? ¿Por qué parece que es capaz de leer/dev/dsp, pero no reacciona de ninguna manera?

¿Alguien más ha tenido éxito con reconocedores de voz de fuente abierta, especialmente en Linux?

Respuesta

14

Why can't it read a wav?

Le dice que el archivo tiene una frecuencia de muestreo incorrecta (8000) en lugar de solicitada (16000). La tasa de muestreo es muy importante para el software de reconocimiento de voz.

Why can't it read /dev/dsp?

En versiones recientes de Ubuntu se utiliza el framework pulseaudio en lugar de OSS. La versión que está intentando usar es OSS, por lo que debe instalar el paquete de compatibilidad de oss de su distribución para recuperar el soporte de OSS.

Puede probar nuevos Julius, que cuenta con el apoyo pulseaudio

Why does it then appear to be able to read /dev/dsp, but not react in any way?

entrada de audio no funciona correctamente.

Has anyone else had any success with open source speech recognizers, especially on Linux?

seguro, consulte este vídeo como un ejemplo de lo que la gente hace con CMU Sphinx:

http://www.youtube.com/watch?v=vfaNLIowSyk

le sugiero que vuelva a visitar el paquete CMU Sphinx que es un motor de reconocimiento de voz líder de código abierto. Hay muchos documentos en el sitio web, solo necesita leerlos. Recuerde que el reconocimiento de voz es un área compleja donde puede obtener excelentes resultados, pero también necesita invertir su tiempo en comprender la tecnología. Al igual que con cualquier otro dominio.

En resumen, para transcribir un archivo con CMU Sphinx que hay que hacer las siguientes 3 pasos simples: archivo wav

  1. tomar y volver a muestrear a 8 kHz 16 archivo mono poco de SOX:
 sox input.wav -r 8000 -c 1 resampled.wav
  1. Instalar pocketsphinx 0,7
 apt-get install pocketsphinx
  1. descodificar el archivo
 pocketsphinx_continuous -samprate 8000 -infile resampled.wav

El resultado se imprimirá en la salida estándar. Para suprimir el registrador, agregue la redirección de stderr a/dev/null

 pocketsphinx_continuous -infile resampled.wav 2> /dev/null
+0

¿Dónde encontró un paquete de Ubuntu para pocketsphinx 0.7? El repo de 10.04 solo tiene 0.5, que es muy defectuoso y no tiene un parámetro de infile. Solo pude encontrar versiones tan altas como 0.6 a través de Google. – Cerin

+0

Nota, incluso cuando se remuestrea a la velocidad correcta, Julius se queja de bytes por segundo! = 32000. ¿No es la frecuencia de muestreo lo mismo que bytes por segundo? – Cerin

+0

> frecuencia de muestreo lo mismo que bytes por segundo? Ningún archivo debe ser mono (un solo canal también). –

Cuestiones relacionadas