# CMU Sphinx

CMU Sphinx (acortado como Sphinx), es el término general para describir un grupo de sistemas de reconocimiento de voz desarrollado en la Universidad de Carnegie Mellon. Incluye una serie de programas para reconocimiento de voz (Sphinx 2 - 4) y un entrenador modelo acústico (SphinxTrain).
En el año 2000, el grupo de Sphinx se comprometió a desarrollar varios componentes para reconocimiento de voz, incluyendo Sphinx 2 y más tarde Sphinx 3 (en 2001). Los decodificadores de voz vienen con modelos acústicos y aplicaciones de ejemplo. Los recursos disponibles incluyen además el software para el entrenamiento de modelos acústicos, la compilación de un modelo de lenguaje y un diccionario de pronunciación en dominio público llamado cmudict.
Sphinx abarca una serie de sistemas de software, arrancó como sphinx 1, luego se produjeron las versiones 2, 3, 4 y Pocket Sphinx, todas tienen aplicaciones diferentes, aunque su función es la misma, el reconocimiento del habla, todas ellas se describen a continuación.

## Sphinx

Sphinx es un sistema de habla continua y reconocimiento de habla, utiliza el Modelo oculto de Márkov (HMMs) y un lenguaje de modelado estadístico de n-gramas. Fue desarrollado por Kai Fu-Lee. Sphinx interpreta voz hablada en forma continua, reconocimiento de habla de vocabulario amplio.

## Sphinx 2

Es un sistema de reconocimiento de habla de alta resolución desarrollado originalmente por Xuedong Huang en Carnegie Mellon, quien liberó su código como software libre con una licencia BSD. Sphinx 2 se centra en el reconocimiento de voz en tiempo real, es adecuado para aplicaciones de lenguaje hablado. Incorpora funciones tales como, la puntería al final, la generación de hipótesis parciales, el cambio dinámico del modelo de lenguaje, entre otras. Se usa en sistemas de diálogo y sistemas de aprendizaje de idiomas.
Sphinx 2 utiliza una representación semi-continua para el modelado acústico (es decir, un único conjunto de gaussianas se utiliza para todos los modelos, con los modelos individuales como un vector de peso durante estas gaussianas).
Puede ser utilizado en los sistemas informáticos basados en PBX como Asterisk. El código de Sphinx 2 también se ha incorporado en una serie de productos comerciales.

## Sphinx 3

A diferencia de la versión anterior, que usaba sistema semicontinuo, la versión 3 usa una representación de frecuencia continua HMM y por eso, se ha utilizado principalmente para la alta precisión, no en tiempo real de reconocimiento. La evolución reciente (en los algoritmos y hardware) han hecho que Sphinx funcione "casi" en tiempo real, aunque todavía no es adecuado para las aplicaciones interactivas. Sphinx 3 está en desarrollo y en colaboración con SphinxTrain proporciona acceso a una serie de técnicas de modelado modernas, como LDA / MLLT, MLLR y VTLN, que mejoran la precisión en el reconocimiento.

## Sphinx 4

Sphinx 4 es una completa re-escritura de la máquina de Sphinx, con el objetivo de proporcionar un marco más flexible para la investigación en reconocimiento de voz, está escrito íntegramente en lenguaje de programación Java. Sun Microsystems apoya el desarrollo de Sphinx 4 y contribuyó con su experiencia en ingeniería de software al proyecto. Entre los participantes había personas de REAL, MIT y la CMU. Al estar escrito en java puede ser utilizado en una gran diversidad de sistemas operativos y hardware.
Los objetivos actuales de desarrollo incluyen:
* El desarrollo de un nuevo entrenador (modelo acústico)
* Implementación de adaptación de la persona que está hablando (por ejemplo, MLLR)
* Mejora de la gestión de configuración
* La creación de una interfaz gráfica de usuario basada en ConfDesigner.

## Pocket Sphinx

Pocket Sphinx es una versión de Sphinx para sistemas embebidos (por ejemplo, basado en un procesador ARM). PocketSphinx está siendo evaluado para desarrollar e incorporar características como la aritmética de coma fija y algoritmos eficientes para el cálculo de modelos mezclados. Puede ser utilizado en muchos equipos portátiles y también en teléfonos móviles.