2011-04-05 16 views
5

En primer lugar, me gustaría decir que mi pregunta no es por decir acerca de la definición "clásica" de reconocimiento de voz.¿Cómo comparo dos muestras de voz en iOS?

Lo que estamos tratando de hacer es algo diferente, en el sentido de:

  1. usuario registra su mando
  2. Más tarde, cuando el usuario hablará comando pre-grabado, se producirá una determinada acción.

Por ejemplo, grabo un comando de voz para llamar a mi madre, así que hago clic en ella y digo "Mamá". Luego, cuando uso el programa y digo "Mamá", automáticamente la llamaré.

¿Cómo puedo realizar la comparación de un comando hablado con una muestra de voz guardada?

EDITAR: No tenemos necesidad de habilidades de "texto a voz", solo una comparación de señales de sonido. Obviamente, estamos buscando algún tipo de producto o marco disponible.

+2

¿Cuál es tu pregunta? – titaniumdecoy

+1

Como dije, ¿cómo es posible lograr lo que he preguntado :) –

+0

Solo para aclarar este problema, no necesitamos ningún tipo de "Texto a voz" o algo por el estilo, estamos buscando un marco relativamente simple que puede comparar 2 señales de sonido y ver si son "las mismas". De esta manera, incluso las personas que no hablan inglés pueden usar este programa. –

Respuesta

0

Intente utilizar una biblioteca de terceros, como OpenEars para aplicaciones iOS. Puede hacer que los usuarios graben una muestra de voz y la guarden como texto traducido, o simplemente que ingresen el texto para su reconocimiento.

+0

Ni siquiera necesito traducir dicho comando de voz en texto, simplemente quiero almacenar dicho comando y luego compararlo. –

+1

No, realmente necesita reconocimiento de voz. La comparación de sonidos para "igualdad" no tiene en cuenta ninguna de las muchas formas en que la segunda muestra grabada podría diferir de la primera. El auto pasa por el fondo? El usuario pausa un poco más entre palabras? ¿O tartamudea? Perdona a tus usuarios: son humanos y no son capaces de producir exactamente el mismo sonido dos veces. – Dominic

0

Creo que tendrías que realizar algún tipo de cross correlation para determinar qué tan similares son estas dos señales. (Suponiendo que sea el mismo usuario el que está hablando por supuesto). Solo estoy escribiendo esta respuesta para ver si me ayuda, pero esperaría una mejor respuesta de otra persona. Mis habilidades de procesamiento de señales son cercanas a cero.

+0

La correlación cruzada parece ser lo que necesitamos para el proyecto, ya que queremos que sea universal (y no solo para los clientes de habla inglesa) –

0

No estoy seguro si su pregunta es sobre el DSP o cómo hacerlo en el iPhone. Si es lo último, comenzaría con el proyecto Speak Here que proporciona Apple. De esa manera ya tienes la interfaz para grabar la voz en un archivo hecho. Le ahorrará muchos problemas.

4

Una forma de hacerlo es tomar una secuencia de tiempo de espectros de frecuencia (FFT de STFT con ventana de tiempo) para los dos sonidos en cuestión, mapear las ubicaciones de los picos de frecuencia sobre el eje de tiempo y correlacionar las dos asignaciones de pico de frecuencia de tiempo 2D para una coincidencia. Esto es mucho más sólido que la simple correlación cruzada de las 2 muestras de sonido, ya que los picos cambian mucho menos que todos los "cruces" espectrales entre los picos espectrales. Este método funcionará mejor si la tasa de las dos emisiones y su tono no han cambiado demasiado.

En iOS 4.x, puede usar el marco Accelerate para las FFT y también las correlaciones cruzadas 2D.

+1

¿Tiene el código fuente para ello? – va05

Cuestiones relacionadas