2010-05-12 17 views
12

No deseo el software de sonido a texto. Lo que necesito es la siguiente:Biblioteca/código de reconocimiento de muestras de sonido

  • voy a grabar múltiples (por ejemplo 50+) flujos de audio (grabaciones de emisoras de radio)
  • de que las grabaciones, voy a marcar clips de audio interesantes - su longitud oscila entre 2 a 60 segundos - habrá pocos miles de estos clips de audio
  • biblioteca debe ser capaz de encontrar otros ejemplos de mismos clips de audio de sonido grabado arroyos
  • factor de confianza debe ser reportado al utilizado y la potencia adicional proporciona para el reconocimiento podría funcionar mejor la próxima vez

¿Conoces dicha biblioteca de software? LGPL sería muy valioso para mí, pero también puedo obtener una licencia comercial.

Los clips de audio contendrán música, texto, efectos o cualquier combinación de los mismos. Por lo tanto, el reconocimiento de texto está fuera de cuestión.

Arquitectura: C++, C# para pegamento, CUDA si es posible.

+1

¿Los clips de audio contienen voz, sonidos, música, todo esto? – mdma

+2

¿Tiene una arquitectura de lenguaje o procesador específica en mente? –

+0

Por cierto, creé mi propia implementación, después de 2 años de desarrollo, y está disponible para la explotación comercial :) http://www.videophill.com/index.php?page=playkontrol –

Respuesta

9

no he encontrado ninguna biblioteca (aún), pero dos artículos interesantes, que le puede dar la terminología y los antecedentes refinar las búsquedas:

EDIT: La búsqueda de "fingerprinti Audio ng "llegó a una página de implementaciones, tanto de código abierto como comercial.

Aquí es un introduction to Audio fingerprinting

+0

La primera de sus propuestas parece prometedora, y sé de Picard, pero no estoy seguro de que sea apropiada para la detección de "muestra desde la transmisión". –

0

Tome un vistazo a la API de Microsoft Speech (SAPI):
http://msdn.microsoft.com/en-us/library/ee125077%28VS.85%29.aspx

Todos los demás requisitos que enumeró son básicamente los detalles de implementación que se le tiene que aplicar por su cuenta. Por ejemplo, como el software interpreta las transmisiones de audio, puede almacenarlas en SQL Server con indización de texto completo ... a partir de las cuales realiza las búsquedas para encontrar clips de audio similares/mismos.

Por supuesto, hay otras maneras de implementar que, y esto no es más que una idea :-)

+0

Bueno, ya que mi pregunta explícitamente declaró que no quiero el reconocimiento de sonido a texto, porque No tengo ningún uso para encontrar jingles u otro tipo de sonidos, tendré que dejarte -1 en esto. –

7

Lo que usted describe es una matched filter y todo lo que necesita es una función cross-correlation que debe ser parte de cualquier biblioteca DSP razonable. Dependiendo de la arquitectura y el idioma del procesador que elija, es posible que incluso pueda encontrar una biblioteca vectorizada que pueda realizar esta operación de manera más eficiente.

Si no te importa el rendimiento, puedes usar Python ...

$ python 
Python 2.6.4 (r264:75706, Dec 7 2009, 18:45:15) 
[GCC 4.4.1] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import scipy 
>>> interesting_clip = [ 5, 7, 2, 1] 
>>> full_stream = [ 1, 5, 7, 2, 1, 4, 3, 2, 4, 7, 1, 2, 2, 5, 1] 
>>> correlation = scipy.correlate (full_stream, interesting_clip) 
>>> print correlation 
[56 79 55 28 41 49 44 53 73 48 28 35] 
>>> for offset, value in enumerate(correlation) : 
...  if (value > 60) : 
...   print "match at position", offset, "with value of", value 
... 
match at position 1 with value of 79 
match at position 8 with value of 73 

Mi umbral anterior es arbitrario. Debes determinar experimentalmente qué es apropiado para ti.

Tenga en cuenta que cuanto más largo sea su "clip interesante", más tiempo tomará calcular la correlación. Si bien los clips más largos ayudarán a que las partidas reales destaquen mejor de las que no coinciden, probablemente no necesites más de unos pocos segundos.

+1

OK, la correlación parece lo suficientemente fina, pero ¿en qué espacio de características? ¿Qué propones? –

4

AudioDB es un proyecto de código abierto de C++ que busca secciones similares de audio y maneja flujos ruidosos, y puede darle una medida de similitud. Se puede ejecutar como cliente/servidor, pero creo que puede hacer un programa independiente.
Las otras respuestas sobre la correlación dsp son correctas, pero en general estos algoritmos dsp quieren comparar dos flujos de la misma longitud, que tienen partes similares superpuestas.
Lo que necesita requiere que funcione en segmentos arbitrarios de la transmisión; esto es para lo que se construyó AudioDB. (Una aplicación es encontrar referencias/muestras ocultas o un uso indebido flagrante de los derechos de autor.) La he utilizado para buscar sonidos que se reprodujeron al revés, y también encuentra el caso donde se introducen algunos cambios de ruido o de voz.
Tenga en cuenta que todavía está en desarrollo aunque las fechas en la página de inicio parecen estar desactivadas. Me suscribiría a la lista de correo y me preguntaría cuál es el estado actual y cómo podría incorporarlo.

0

Me gustaría ir a algún lugar en línea con la respuesta de Tim Kryger y utilizar funciones simples de correlación estadística, ya que quiere mantenerse independiente del contenido.

En cuanto a las características, definitivamente probaría MFCC ya que se usa tanto en procesamiento de voz como en reconocimiento de música (géneros, canciones). Puede encontrar MFCC y una gran cantidad de otras características de audio disponibles en la excelente fuente abierta Vamp plugins (o su paquete de más alto nivel, un programa llamado Sonic Annotator) o alternativamente en el marco Marsyas.