java - source - Software de código abierto para transcribir voz en archivos de audio
pocketsphinx tutorial (1)
¿Alguien puede recomendar un software confiable de código abierto para transcribir la voz en inglés en archivos wav? Los dos programas principales que he investigado son Sphinx y Julius , pero nunca he podido hacer que ninguno de los dos funcione, y la documentación con cada uno de ellos en la transcripción de archivos es, en el mejor de los casos, incompleta.
Estoy desarrollando Ubuntu 10.04 de 64 bits, cuyos repositorios incluyen sphinx2 y julius, así como 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 contra Ubuntu, ya que puedo grabar sonido con mi micrófono perfectamente usando Audacity, pero ninguno de los sistemas parece capaz de acceder a mi micrófono, así que espero que pueda simplemente configurarlos simplemente leyendo un archivo.
Primero probé Sphinx2, del paquete Ubuntu sphinx2-bin. A pesar de que la muestra sphinx2-demo parece 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 esto para leer de un wav arbitrario. El archivo de audio utilizado en la demostración está en algún formato "16k" no documentado, al que se hace referencia indirecta a través de 2 archivos de configuración. Hay una breve reseña que describe a sphinx2-demo como ejecutando sphinx2-batch, pero la inspección del script muestra que en realidad está llamando a sphinx2-continuo. Peor aún, los documentos de ayuda para cada secuencia de comandos enumeran aproximadamente 6 docenas de opciones y no mencionan cuáles son obligatorias 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.
Luego probé con Julius, nuevamente del paquete de Ubuntu, que era 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 ligeramente mejor, e incluso un ejemplo escrito en Python (/ usr / share / doc / julius-voxforge / examples / controlapp). Después de leer los documentos del ejemplo, traté de adaptarlo para leer de un archivo creando un archivo filelist.txt
contenga el texto "hello.wav" que se refiere a un archivo del mismo nombre, que contiene una grabación de alguien que dice "hola". Colocando estos en el mismo directorio, corrí:
julius -input file -filelist filelist.txt -C julian.jconf
obteniendo 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
Reintentar especificando nombres de archivo absolutos para filelist.txt y hello.wav produce el mismo error.
También probé la llamada de Julius utilizada en el ejemplo, para grabar directamente desde un micrófono:
julius -input mic -C julian.jconf
Llamé a 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 saber si aún no puede leer el micrófono o si está leyendo algo, pero simplemente no puede transcribir el audio.
No estoy seguro de qué hacer con esto. Los errores que estoy recibiendo no me dejan mucho para seguir. ¿Por qué no puede leer un wav? ¿Por qué no puede leer / dev / dsp? ¿Por qué entonces parece ser capaz de leer / dev / dsp, pero no reaccionar de ninguna manera?
¿Alguien más ha tenido éxito con los reconocedores de voz de código abierto, especialmente en Linux?
¿Por qué no puede leer un wav?
Le indica que el archivo tiene una frecuencia de muestreo incorrecta (8000) en lugar de la solicitada (16000). La frecuencia de muestreo es muy importante para el software de reconocimiento de voz.
¿Por qué no puede leer / dev / dsp?
En las versiones recientes de Ubuntu, se utiliza el marco de trabajo de audio en lugar de OSS. La versión que está intentando está usando OSS, por lo que necesita instalar el paquete de compatibilidad oss de su distribución para recuperar el soporte de OSS.
Puedes probar el nuevo Julius que tiene soporte para pulseaudio
¿Por qué entonces parece ser capaz de leer / dev / dsp, pero no reaccionar de ninguna manera?
La entrada de audio no funciona correctamente.
¿Alguien más ha tenido éxito con los reconocedores de voz de código abierto, especialmente en Linux?
Claro, mira este video como ejemplo de lo que las personas hacen con CMUSphinx:
http://www.youtube.com/watch?v=vfaNLIowSyk
Le sugiero que vuelva a visitar el paquete CMUSphinx, que es un motor líder de reconocimiento de voz de código abierto. Hay un montón de documentos en el sitio web, solo necesitas leerlos. Recuerde que el reconocimiento de voz es un área compleja en la que 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 CMUSPhinx, debe realizar los siguientes 3 pasos simples:
- Tome el archivo wav y vuelva a muestrearlo en un archivo mono de 8 kHz de 8 kHz con sox:
sox input.wav -r 8000 -c 1 resampled.wav
- Instalar pocketsphinx 0.7
apt-get install pocketsphinx
- Decodificar el archivo
pocketsphinx_continuous -samprate 8000 -infile resampled.wav
El resultado se imprimirá a la salida estándar. Para suprimir el registrador, agregue la redirección stderr a / dev / null
pocketsphinx_continuous -infile resampled.wav 2> /dev/null