2009-03-20 13 views
6

Quiero escribir un software básico de reconocimiento de voz que puede convertir voz en texto. Quería saber qué idioma es más adecuado para escribir dicho software. ¿Es Java adecuado para este trabajo?¿Qué idioma utilizar para escribir un software de reconocimiento de voz?

edición: Gracias a todos por las respuestas. Quiero construir una herramienta para un proyecto universitario. No quiero escribirlo desde cero. Solo quiero demostrar el poder del reconocimiento de voz. La herramienta solo debe escribir lo que diga un usuario en un editor de texto como el bloc de notas. No necesita ser muy preciso. Solo quiero experimentar y aprender los diversos algoritmos detrás del Reconocimiento de voz, ya que encuentro este campo muy interesante.

Gracias, Deepak

Respuesta

2

de Java puede ser adecuado para una interfaz a ella, pero el reconocimiento de voz requiere serio ronco prima. Elegiría un lenguaje compilado y cercano al metal como C para el motor de reconocimiento real.

Esto no es algo para tomarse a la ligera, por cierto. Hay una gran cantidad de teoría que deberá aprender incluso antes de comenzar. Yo mismo, autorizaría uno de los motores existentes si era posible, y me concentraría en construir un producto decente a su alrededor.

Eso es si su intención es construir un producto. Si solo quieres experimentar, por supuesto, escribe el tuyo. Será divertido (hasta cierto punto :-).

+0

@Pax no dude en comentar mi respuesta contraria a su respuesta. – MarkusQ

+0

Estoy de acuerdo con la idea de que licenciar un motor existente es probablemente más productivo. Pero sabes que hoy en día, Java también es efectivamente un lenguaje nativo "compilado", ¿verdad? En cualquier caso, las personas han escrito motores en Python antes de ahora ... –

+0

@paxdiablo, gracias por esta respuesta. Sé que respondo 6 años después, pero ... Quiero integrar el software de voz a texto en mi aplicación al presionar una API, pero no hay puntos finales para idiomas extranjeros. Lo publiqué aquí: http://stackoverflow.com/questions/32937367/speech-to-text-api-for-foreign-languages. ¿Puede usted ayudar? – Growler

0

Creo que Java puede ser una buena opción, todo depende de cómo va a recibir la entrada. Hay algunas buenas bibliotecas para sonidos en Java.

El lenguaje no será el problema porque se tratará de reconocer los patrones. Si Java es el idioma con el que está más familiarizado, lo usaría.

1

Estoy de acuerdo con casi todo lo que dijo Pax, así que voy a ser contrario y defender lo contrario. La sabiduría convencional es que el reconocimiento de voz "requiere un gruñido gravemente en bruto" y puede ser porque esto es cierto.

Pero también puede ser que todo el mundo cree que debido a que es como siempre se ha hecho. Considerando que el cerebro humano no hace hacer enormes cantidades de datos de fuerza bruta para reconocer el habla, yo sugeriría que existen algoritmos de extracción de características inteligentes para hacer el trabajo mucho más de manera más eficiente.

Si ese es el caso, y si busca encontrar dicho algoritmo, un lenguaje de nivel superior puede ser más adecuado para la tarea. Cualquier cosa que pierda en eficiencia lo compensará y más en la expresividad algorítmica.

Dicho esto, probablemente tenga razón.

+0

No estoy en desacuerdo con nada de lo que diga, MarkusQ. Pero el cerebro logra su ronroneo con un paralelismo masivo: podríamos tratar de engendrar 100 mil millones de hilos en el JRE, pero no estoy seguro de qué tan bien funcionaría (sí, sé que es reductio ad absurdum :-). Estoy de acuerdo con tu afirmación de que debemos intentarlo. – paxdiablo

+0

@Pax Es una pregunta interesante. Ciertamente no usamos 10^11 hilos por valor de neuronas para hacer reconocimiento de voz; de 10^11 neuronas que probablemente usemos del orden de 10^9 para reconocimiento de voz a una tasa de transición de tal vez 10^2/seg cada una; mi escritorio quadcore llega fácilmente a 10x que ... – MarkusQ

+0

No estoy de acuerdo. En el campo de reconocimiento automático de voz, los mejores enfoques no son demasiado inteligentes y dependen de una gran cantidad de datos de entrenamiento y computación. No es porque le guste a la gente, sino porque los resultados son mejores. Pero estamos en el camino con la ley de Moore en el bolsillo :-) – Jiri

3

Estoy de acuerdo con Pax en que este es un proyecto potencialmente bastante grande, y que la solución más práctica es, probablemente, simplemente licenciar un motor existente.

Si el alcance de lo que desea hacer es solo distinguir entre unas posibles emisiones anteriormente conocidas, es un proyecto significativamente más pequeño, pero aún considerable.

Pero ... si decides que realmente realmente quieres empezar a desarrollar el tuyo propio, no veo una razón para no usar Java. La idea de que "C es más rápido" es en gran parte un mito (o se basa en información desactualizada).

4

Mis alumnos están utilizando Sphinx. Está escrito en Java (creo que es un puerto de C++). Puede que no sea adecuado para lo que quieres (creo que necesitarías crear tu propio diccionario) pero vale la pena echarle un vistazo.

0

Java es turing complete por lo que puede manejar todos los trabajos de programación. Si usted quiere para hacer algo en Java es decisión suya.

0

Tuvimos un éxito moderado con el framework Shynx escrito en Java, pero el verdadero trabajo duro radica en la comprensión de los algoritmos y las matemáticas involucradas en el área y luego en el motor de ajuste fino a sus necesidades particulares.

Cuestiones relacionadas