Pregunta

Se utiliza para crear una aplicación que utiliza el motor de reconocimiento de voz de Windows o el SAPI. es como un juego para pronunciación que le dan su puntuación cuando lo pronuncia correctamente. Pero cuando empecé a experimentos con SAPI, tiene pobre reconocimiento a menos que si se carga una gramática en él (XML) su mejor resultado del reconocimiento dar.

pero el problema ahora es más cercano pronunciación del texto de entrada se reconoce. por ejemplo:

Base de datos -> dedebase -.> Correcta

incluso si pronuncian mal. le da las respuestas correctas.

sin utilizar el xml gramática

cuando se dice que la base de datos que dan "en la base / base / base de datos / etc ..."

Por favor enviar su respuesta, sugerencia, aclaración. votos para mejor respuesta.

is it possible or not?

por la forma en que uso compilador de Delphi en el proyectos ....

¿Fue útil?

Solución

Para obtener lo que quiere, es mejor no utilizar una gramática. Pero requiere que los usuarios hacen de la formación básica "mínimo" del motor de reconocimiento de voz. No es muy larga y relativamente agradable. Y lo que realmente hace una diferencia en la precisión del reconocimiento (créanme, tengo un fuerte acento francés en mi Inglés).
Incluso puede ser incluido como una práctica preliminar para el juego en sí.
Que puede resultar interesante para ver este CodeRage 4 sesión en "Speech Habilitación de aplicaciones Delphi (zip)"

Otros consejos

Yo haría dos cosas:

  1. Convertir el texto original a los fonemas mediante el uso de ISpEnginePronunciation :: GetPronunciations .
  2. Usar una gramática de dictado y el modelo de pronunciación de idiomas a la fuerza SAPI para darle una copia de un conjunto de fonemas - hacerlo llamando ISpRecoGrammar :: LoadDictation (L "pronunciación", SPLO_STATIC).
  3. Comparación de los fonemas reconocidos a los fonemas.

Tenga en cuenta que ISpEnginePronunciation no está disponible en SAPI 5.1, por lo que este se limita a Vista y Windows 7.

Si el objetivo del juego es animar al usuario a hablar usando pronunciación que es más cercano a "pronunciación estándar" para un determinado idioma (por ejemplo, en-US), y luego tener el tren de usuario el reconocedor para adaptarse al usuario particular, patrones (no modificada) de habla pueden ser contraproducente. Se podría ser en parte el entrenamiento del reconocedor a ser más tolerantes de pronunciación lapsos del usuario.

Ya sea que terminan usando reconocimiento basado en la gramática o el reconocimiento basado en el dictado (miradas de correos de Eric Brown muy prometedor), es probable que también desee ver en las puntuaciones "confianza". Estas puntuaciones están disponibles después de un reconocimiento se ha realizado, y dan un valor numérico a la confianza que el reconocedor es que lo que el usuario realmente ha dicho coincide con lo que el reconocedor piensa que el usuario dijo. Dependiendo del caso de configuración reconocedor y uso, puntuaciones de confianza puede o puede no ser significativo.

Si usted está basando su puntaje de exactitud fuera de la representación textual de los teléfonos / fonemas / pronunciación, una forma rápida y fácil para conseguir un nivel de acierto sería el uso de la distancia Levenshtein, un algoritmo para la cual hay muchas implementaciones de libre disposición en la red. Un mejor algoritmo de puntuación podría ser un diff resincronización, con la unidad atómica de comparación que se está celulares individuales.

Aquí están algunas palabras clave para MSDN caza doc:
ISpRecoResult -> GetPhrase -> SPPHRASE -> Regla -> SPPHRASERULE -.> SREngineConfidence

http://msdn.microsoft. com / es-es / library / ee413319% 28v = vs.85% 29.aspx
http://msdn.microsoft.com/en -US / library / ms720460% 28v = VS.85% 29.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top