Reconocimiento de voz C # desde el audio del sistema (sonido del altavoz)

He visto reconocimiento de voz desde dispositivos de entrada (obviamente) y he visto reconocimiento de voz desde archivos ( http://gotspeech.net/forums/thread/6835.aspx ). Sin embargo, me preguntaba si sería posible ejecutar el reconocimiento de voz en el audio del sistema en tiempo real. Por audio del sistema, el sonido que sale de tus altavoces.

Sería una gran herramienta para aquellos que tienen problemas de audición, ya que están viendo videos de YouTube, la aplicación C # podría transcribir lo que se dice.

¿Cómo podría hacer esto?

Muy fácilmente: vaya al mezclador de sonido, seleccione la entrada y active / desactive la función “Stereo Mix”. Por supuesto, deberías silenciar el micrófono si no quieres grabar eso también. Luego, comience a grabar de la misma manera que grabaría el micrófono: ahora obtendrá la misma fuente de alimentación que los altavoces en calidad digital.

Esto se puede hacer de manera programática, aunque puede ser complicado, especialmente si desea admitir WinXP así como Vista / Win7 (el sonido se revisó en Vista y creo que las API son significativamente diferentes, aunque aún no he tenido que usarlas).

Es casi seguro que necesitarás filtrar el sonido antes de intentar el reconocimiento. A menos que el discurso reconozca. La biblioteca que está utilizando está diseñada para funcionar en condiciones adversas, la música y los efectos especiales interferirán con el reconocimiento adecuado al igual que varias personas que hablan al mismo tiempo.

Si no tiene una biblioteca súper robusta, los filtros para atenuar las frecuencias no vocales serán una necesidad. Es posible que también deba aplicar la normalización de volumen para tener en cuenta las escenas ruidosas / silenciosas: hay cientos de filtros que podrían mejorar la coincidencia.

Es posible que desee acceder a la API de reconocimiento en el nivel más bajo para obtener el mayor control posible. Deberá modificarlo para hacer frente a la gente que grita, sin aliento, llorando, etc. Si comienza a diseñar con flexibilidad de bajo nivel. acceso, probablemente le ahorrará semanas si encuentra que lo necesita más adelante y que tendrá que volver a diseñar.

Te sugiero que consideres NAudio como punto de partida para el procesamiento de audio.

Sospecho que podrá obtener algo que funcione en condiciones ideales sin demasiado esfuerzo, pero modificarlo para que funcione bien en todas las eventualidades puede ser una tarea gigantesca. Dicho esto, suena como un proyecto divertido.

Podría mejorar considerablemente la posibilidad de reconocimiento mediante la creación de diccionarios específicos de género, usuario o progtwig. Estos pueden generarse previamente o generarse automáticamente utilizando un circuito de retroalimentación ponderado, lo que quizás también permita al usuario corregir errores.