name initial icon content capable apple app iphone speech-recognition language-model

iphone - initial - Construyendo openears compatible modelo de lenguaje.



viewport iphone (2)

Antigua pregunta, pero tal vez la respuesta sigue siendo interesante. OpenEars ahora tiene una generación de modelos de lenguaje incorporada, por lo que una opción es crear modelos dinámicamente en su aplicación a medida que los necesite utilizando la clase LanguageModelGenerator, que usa la biblioteca MITLM y NSScanner para realizar la misma tarea que el kit de herramientas de CMU mencionado anteriormente . El procesamiento de un corpus con> 5000 palabras en el iPhone llevará mucho tiempo, pero siempre se puede usar el simulador para ejecutarlo una vez, obtener el resultado de la carpeta de documentos y conservarlo.

Otra opción para el reconocimiento de vocabulario grande se explica aquí:

Creando un archivo modelo de lenguaje ARPA con 50,000 palabras

Dicho esto, debo señalar como desarrollador de OpenEars que el límite de 5000 palabras de la herramienta CMU se corresponde bastante con el tamaño máximo de vocabulario que probablemente tenga una precisión y velocidad de procesamiento decentes en el iPhone cuando use Pocketsphinx. Entonces, la última sugerencia sería reconceptualizar su tarea para que no requiera un gran reconocimiento de vocabulario (por ejemplo, dado que OpenEars le permite cambiar de modelo sobre la marcha, es posible que no necesite un modelo enorme, pero puede arreglárselas con varios más pequeños que puede cambiar en diferentes contextos), o usar una API basada en la red que puede hacer un gran reconocimiento de vocabulario en un servidor (o hacer su propia API que usa Sphinx4 en su propio servidor). ¡Buena suerte!

Estoy haciendo algo de desarrollo de voz a texto y de texto a voz y encontré que la API de OpenEars muy útil.

El principio de esta API basada en cmu-slm es que utiliza un modelo de lenguaje para asignar el discurso escuchado por el dispositivo iPhone. Así que decidí buscar un gran modelo en inglés para alimentar el motor de reconocimiento de voz API. Pero no pude entender el formato del modelo de datos de voxfourge en inglés para usar con OpenEars.

¿Alguien tiene alguna idea de cómo puedo obtener el archivo .languagemododel y .dic para que el idioma inglés funcione con OpenEars?


Con respecto a los formatos LM:

AFAIK, la mayoría de los modelos de lenguaje utilizan el estándar ARPA para los modelos de lenguaje. Los modelos de lenguaje Sphinx / CMU se compilan en formato binario. Necesitaría el formato de origen para convertir un Sphinx LM en otro formato. La mayoría de los otros modelos de lenguaje están en formato de texto.

Recomiendo usar el kit de herramientas de reconocimiento de voz HTK; Documentación detallada aquí: http://htk.eng.cam.ac.uk/ftp/software/htkbook_html.tar.gz

Aquí también se encuentra una descripción del kit de herramientas SLM de CMU: http://www.speech.cs.cmu.edu/SLM/toolkit_documentation.html

Aquí hay un ejemplo de un modelo de lenguaje en formato ARPA que encontré en la red: http://www.arborius.net/~jphekman/sphinx/full/index.html

Probablemente desee crear un ARPA LM primero y luego convertirlo a cualquier formato binario si es necesario.

En general:

Para crear un modelo de lenguaje, necesita una gran cantidad de datos de entrenamiento, para determinar cuál es la probabilidad de que exista alguna otra palabra en su vocabulario, después de observar la entrada actual a este punto en el tiempo.

No puede simplemente "hacer" un modelo de lenguaje simplemente agregando las palabras que desea reconocer; también necesita una gran cantidad de datos de entrenamiento (= entrada típica que observa cuando ejecuta su aplicación de reconocimiento de voz).

Un modelo de lenguaje no es solo una lista de palabras, sino que estima la probabilidad del siguiente token (palabra) en la entrada. Para estimar esas probabilidades, debe ejecutar un proceso de capacitación, que revisa los datos de capacitación (por ejemplo, datos históricos) y observa las frecuencias de palabras allí para estimar las probabilidades mencionadas anteriormente.

Para su problema, tal vez como una solución rápida, simplemente suponga que todas las palabras tienen la misma frecuencia / probabilidad.

  1. cree un diccionario con las palabras que desea reconocer (N palabras en el diccionario)

  2. cree un modelo de lenguaje que tenga 1 / N como la probabilidad de cada palabra (modelo de lenguaje uni-gramo)

luego puede interpolar ese modelo de lenguaje uni-gramo (LM) con otro LM para un corpus más grande usando el kit de herramientas HTK