usar tutorial spanish microsoft language español ejemplos demonstration como speech-recognition sapi speech

speech recognition - tutorial - Entrenamiento acústico usando SAPI 5.3 Speech API



web speech api sample (1)

Implementar la capacitación de SAPI es relativamente difícil, y la documentación realmente no le dice lo que necesita saber.

ISpRecognizer2 :: SetTrainingState cambia el reconocedor dentro o fuera del modo de entrenamiento.

Cuando ingresas al modo de entrenamiento, todo lo que realmente ocurre es que el reconocedor le da al usuario mucha más libertad de acción sobre los reconocimientos. Entonces, si estás tratando de reconocer una frase, el motor será mucho menos estricto con respecto al reconocimiento.

El motor realmente no realiza ninguna adaptación hasta que abandona el modo de entrenamiento, y ha establecido el indicador fAdaptFromTrainingData.

Cuando el motor se adapta, escanea el audio de entrenamiento almacenado bajo los datos del perfil. Es responsabilidad del código de capacitación colocar nuevos archivos de audio donde el motor pueda encontrarlos para su adaptación.

Estos archivos también deben estar etiquetados, para que el motor sepa lo que se dijo.

Entonces como haces esto? Necesita utilizar tres API SAPI menos conocidas. En particular, debe obtener el token de perfil utilizando ISpRecognizer :: GetObjectToken y SpObjectToken :: GetStorageFileName para ubicar correctamente el archivo.

Finalmente, también necesita usar ISpTranscript para generar archivos de audio correctamente etiquetados.

Para ponerlo todo junto, debes hacer lo siguiente (pseudo-código):

Cree un reconocedor de proceso y vincule la entrada de audio adecuada.

Asegúrese de retener el audio para sus reconocimientos; lo necesitarás más tarde.

Crea una gramática que contenga el texto para entrenar.

Establezca el estado de la gramática para pausar el reconocedor cuando se produce un reconocimiento. (Esto también ayuda con la capacitación de un archivo de audio).

Cuando se produce un reconocimiento:

Obtenga el texto reconocido y el audio retenido.

Cree un objeto de flujo usando CoCreateInstance (CLSID_SpStream).

Cree un archivo de audio de capacitación utilizando ISpRecognizer :: GetObjectToken , e ISpObjectToken :: GetStorageFileName , y conéctelo a la transmisión (usando ISpStream :: BindToFile ).

Copie el audio retenido en el objeto de transmisión.

QI el objeto de flujo para la interfaz ISpTranscript , y use ISpTranscript :: AppendTranscript para agregar el texto reconocido a la transmisión.

Actualice la gramática para el siguiente enunciado, reanude el reconocedor y repita hasta que haya terminado el texto de capacitación.

Utilizando SAPI 5.3 Speech API de Microsoft en Vista, ¿cómo programaticamente haces el entrenamiento del modelo acústico de un RecoProfile? Más concretamente, si tiene un archivo de texto y un archivo de audio de un usuario que habla ese texto, ¿qué secuencia de llamadas SAPI haría para entrenar el perfil del usuario con ese texto y audio?

Actualizar:

Más información sobre este problema aún no he resuelto: llama a ISpRecognizer2.SetTrainingState (TRUE, TRUE) al "principio" e ISpRecognizer2.SetTrainingState (FALSE, TRUE) al "final". Pero todavía no está claro cuándo esas acciones tienen que ocurrir en relación con otras acciones.

Por ejemplo, debe realizar varias llamadas para configurar una gramática con el texto que coincida con su audio, y otras llamadas para conectar el audio, y otras llamadas a varios objetos para decir "ya está listo para comenzar". Pero, ¿cuáles son las interdependencias? ¿Qué tiene que suceder antes de qué más? Y si está utilizando un archivo de audio en lugar del micrófono del sistema para la entrada, ¿eso hace que el tiempo relativo sea menos permisivo, porque el reconocedor no va a permanecer sentado escuchando hasta que el altavoz lo haga bien?