voz una texto samsung programa pasar para online notas mejor las guardan gratis grabaciones grabacion espaƱol donde convertir convertidor computadora como app android android-audiorecord

android - una - el mejor convertidor de texto a voz online



Detectar la voz humana a partir de la entrada de archivos de audio (9)

Estoy tratando de implementar la funcionalidad de grabación de voz automática, similar a la aplicación Talking Tom. Utilizo el siguiente código para leer la entrada de la grabadora de audio y analizar el búfer:

float totalAbsValue = 0.0f; short sample = 0; numberOfReadBytes = audioRecorder.read( audioBuffer, 0, bufferSizeInBytes); // Analyze Sound. for( int i=0; i<bufferSizeInBytes; i+=2 ) { sample = (short)( (audioBuffer[i]) | audioBuffer[i + 1] << 8 ); totalAbsValue += Math.abs( sample ) / (numberOfReadBytes/2); } // Analyze temp buffer. tempFloatBuffer[tempIndex%3] = totalAbsValue; float temp = 0.0f; for( int i=0; i<3; ++i ) temp += tempFloatBuffer[i];

Ahora puedo detectar la entrada de voz proveniente de la grabadora de audio y puedo analizar el búfer de audio.

El búfer se convierte a un valor flotante y si aumenta en cierta cantidad, se supone que hay un sonido de fondo y se inicia la grabación. Pero el problema es que la aplicación comienza a grabar todo el ruido de fondo, incluidos los sonidos del ventilador / conductos de CA.

¿Puede alguien ayudarme a analizar el búfer para detectar únicamente la voz humana? ¿O hay otras formas alternativas de detectar la voz humana desde la entrada del grabador de audio?

Gracias por adelantado,


¿Has considerado usar la API de reconocimiento de voz de Microsoft? Puede usar una pronunciación de voz para comenzar a grabar, como por ejemplo, cómo dicen "computadora" antes de pedirle algo a Star Trek. Use ISpRecognizer :: CreateRecoContext para cargar su gramática de reconocimiento y comenzar a reconocer. Luego, realice una comprobación con ISpPhrase para ver si debe comenzar a grabar o no.


¿Que es exactamente lo que está buscando? ¿Solo quiere filtrar el habla humana en el audio o realmente quiere saber lo que la persona ha dicho?

Casi todos los teléfonos inteligentes realizan el filtrado del habla humana grabando el ruido de fondo con un segundo micrófono en la parte posterior del dispositivo y restando las dos señales. Pero para ser honesto, no he visto ninguna API de Android en la que se pueda acceder directamente a las dos señales.

Si desea hacer una conversión de voz a texto, entonces eche un vistazo a Sphinx4 y Praat. Ambos hacen este trabajo pero, una vez más, no he visto una implementación para Android. Sphinx4 afirma que está completamente escrito en Java, por lo que debería ser posible incrustarlo en una aplicación de Android.


En el caso completamente general, este es un problema sin resolver. En el sentido práctico ...

El primer paso es obtener una grabación lo más libre de ruido posible. Como han dicho otros, eso comienza con un micrófono direccional que se enfoca en el sonido que desea mantener lo más posible.

El segundo paso es el filtrado. Como se señaló anteriormente, la compañía telefónica realizó un gran trabajo en los rangos de frecuencia que los humanos realmente necesitan para la comprensión del habla. Filtrar las frecuencias fuera de ese rango hará que la voz suene como ... bueno, un teléfono ... pero eliminará más el ruido de fondo.

Si quieres ir más allá, las cosas pueden complicarse mucho. Hay algunos algoritmos que, si puede mostrarles una muestra de lo que considera ruido en esa grabación en particular, lo analizará e intentará restarlo sin dañar el sonido que desea mantener demasiado. Esto no es simple programación; si fuera usted, seriamente consideraría comprarlo a alguien que ya lo ha hecho bien en lugar de intentar reinventarlo / reimplementarlo. No sé si alguno de ellos está disponible para Android o si la caja típica de Android tiene suficiente poder de cómputo para ejecutarlos en tiempo real. (He usado SoundSoap en el estudio para eliminar el ruido del aire acondicionado, y funciona muy bien).

De hecho, mi propia inclinación sería simplificar el problema a uno resuelto: usar el micrófono más direccional y más cercano que pueda obtener, dejar que Android haga la grabación ... pero luego hacer el procesamiento de la señal para limpiarlo más tarde, usando el apagado -las herramientas de estantería. Pero admito que soy parcial porque ya he invertido en esto último.


Intenté resolver un problema similar en Windows. Una cosa aprendí rápido: el simple análisis de frecuencia con una transformada rápida de Fourier no es suficiente. Muchos ruidos golpean las frecuencias humanas, desde simples toques en el micrófono hasta aplaudir las manos. Incluso algún nivel de filtrado sofisticado no lo hará. He encontrado que la forma más fácil es llevar el ruido a una API en la nube y pedirle que transcriba el discurso. Si la API de la nube puede transcribirse a una cadena de longitud razonable, entonces puedo continuar grabando; de lo contrario, detenga la grabación. Esto requiere que muestre algo de ruido y lo envíe a un proveedor de la nube.


La detección de voz no es tan simple. Hay varios algoritmos, algunos de ellos publicados, por ejemplo, GSM VAD . Varias bibliotecas de VAD de código abierto están disponibles, algunas de ellas se discuten here


La forma de procesar la entrada es utilizar una biblioteca especializada que elimine el ruido.

Por ejemplo, http://audacity.sourceforge.net , elimina el ruido.

Siempre que haya caracterizado los principales tipos de ruido, solo debe tener voz restante.

Valdría la pena recopilar datos de muestreo antes de la captura del usuario y después de que el usuario finalice la captura, ya que esto proporcionaría muestras de ruido en el entorno en el momento. Esto es útil si cada usuario enfrenta desafíos únicos de ruido de fondo.


La mayoría de ellos ha entendido mal la pregunta y sus respuestas resuelven problemas diferentes a los suyos.

Debería analizar el audio en su búfer buscando frecuencias en el rango humano de la voz. Tan pronto como los detectes, significará que alguien ha comenzado a hablar y puedes comenzar a grabar (no olvides incluir el búfer también, ya que contiene la primera parte del discurso).

Busque rutinas que impriman la lista de frecuencias en un flujo de audio sin formato


Para la detección de voz, pruebe el algoritmo ftt.

Para el ruido, intente biblioteca speex.


Si quieres tener una grabación limpia puedes

  1. Para filtrar el ruido de la voz, puede usar FFT para eso y aplicar filtros como los filtros de paso bajo, paso alto y paso de banda. Filtrado usando FFT y Filters

2. Después de la filtración, el ruido disminuirá y podrá utilizar las API de reconocimiento de voz.

API''s

Cuanto más filtre, mejor será menos ruido. Más reconocimiento, pero tenga cuidado al filtrar porque también puede eliminar la voz junto con el ruido.

También lea más sobre FFt

Transformada rápida de Fourier de la voz humana

Espero que esto ayude :)