2010-05-12 13 views
12

Non voglio software sound-to-text. Quello che mi serve è il seguente:Libreria/codice riconoscimento campioni audio

  • sarò registrare più (diciamo 50+) flussi audio (registrazioni di stazioni radio)
  • da quella registrazioni, io ti segnano interessanti clip audio - la loro lunghezza varia da Da 2 a 60 secondi - ci saranno poche migliaia di tali clip audio
  • la libreria dovrebbe essere in grado di trovare altre istanze delle stesse clip audio da flussi audio registrati
  • il fattore di confidenza deve essere segnalato per l'utilizzo e l'input aggiuntivo fornito in modo che il riconoscimento potrebbe migliorare la prossima volta

Conosci questa libreria di software? La LGPL sarebbe molto preziosa per me, ma posso anche ottenere la licenza commerciale.

I clip audio conterranno sia musica, testo, effetti o qualsiasi combinazione di questi. Quindi, il riconoscimento del TESTO è fuori questione.

Architettura: C++, C# per colla, CUDA se possibile.

+1

Le clip audio contengono parlato, suoni, musica, tutto questo? – mdma

+2

Hai in mente un linguaggio specifico o un'architettura di processore? –

+0

BTW, ho creato la mia implementazione, dopo 2 anni di sviluppo, ed è disponibile per lo sfruttamento commerciale :) http://www.videophill.com/index.php?page=playkontrol –

risposta

9

non ho trovato le librerie (ancora), ma due articoli interessanti, che potrebbe dare la terminologia e il contesto perfezionare le ricerche:

EDIT: ricerca di "fingerprinti Audio "è arrivato a una pagina di implementazioni, sia open source che commerciale.

Ecco un introduction to Audio fingerprinting

+0

La prima delle tue proposte sembra promettente e so di Picard, ma non sono sicuro che sia appropriato per il rilevamento "campione dal flusso". –

0

Date un'occhiata alle API Microsoft Speech (SAPI):
http://msdn.microsoft.com/en-us/library/ee125077%28VS.85%29.aspx

Tutti gli altri requisiti che hai elencato sono fondamentalmente dettagli di implementazione che dovrete implementare sul proprio. Ad esempio, poiché il software interpreta i flussi audio, può archiviarli in server SQL con indicizzazione completa del testo ... dal quale si eseguono le ricerche per trovare clip audio simili/uguali.

Ci sono naturalmente altri modi per implementare questo, e questo non è che una sola idea :-)

+0

Bene, poiché la mia domanda ha esplicitamente affermato che non voglio il riconoscimento del suono al testo, perché io non serve a niente per trovare jingles o qualche altro tipo di suono, dovrò lasciarti -1 su questo. –

7

cosa si sta descrivendo è un matched filter e tutto ciò che serve è una funzione cross-correlation che dovrebbe essere parte di qualsiasi libreria DSP ragionevole. In base alla scelta dell'architettura e della lingua del processore, è possibile trovare una libreria vettoriale in grado di eseguire questa operazione in modo più efficiente.

Se non ti interessa davvero le prestazioni potresti usare 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 

La mia soglia sopra è arbitrariamente. Dovresti determinare sperimentalmente cosa è appropriato per te.

Ricorda che più lunga è la tua "clip interessante", più tempo ci vorrà per calcolare la correlazione. Mentre le clip più lunghe aiuteranno le partite reali a distinguersi meglio dalle non partite, probabilmente non ti serviranno più di qualche secondo.

+1

OK, la correlazione sembra abbastanza buona, ma in WHAT lo spazio delle funzioni ??? Cosa vorresti proporre? –

4

AudioDB è un progetto C++ open source che cerca sezioni di audio simili e gestisce flussi rumorosi e può fornire una misura di somiglianza. Può essere eseguito come client/server, ma credo che tu possa fare un programma standalone.
Le altre risposte sulla correlazione di dsp sono corrette, ma in generale questi algoritmi di dsp vogliono confrontare due flussi della stessa lunghezza, che hanno le parti simili che si sovrappongono.
Ciò di cui hai bisogno richiede che funzioni su segmenti arbitrari dello stream; questo è ciò per cui è stato creato AudioDB. (Un'applicazione serve per trovare riferimenti nascosti/campionamento o un palese uso improprio del copyright). L'ho usato per trovare suoni che venivano riprodotti all'indietro, e trova anche il caso in cui vengono introdotte alcune modifiche al rumore o alla voce.
Si noti che è ancora in fase di sviluppo anche se le date sulla home page sembrano non essere disponibili. Vorrei iscrivermi alla mailing list e chiedere qual è lo stato attuale e come procedere per incorporarlo.

0

Vorrei andare in qualche modo in linea con la risposta di Tim Kryger e utilizzare semplici funzioni di correlazione statistica, in quanto si desidera mantenere il contenuto agnostico.

Per quanto riguarda le funzionalità, proverei sicuramente MFCC in quanto viene utilizzato sia nell'elaborazione della voce che nel riconoscimento musicale (generi, canzoni). Puoi trovare MFCC e una vasta gamma di altre funzionalità audio disponibili nell'eccellente open source Vamp plugins (o nel suo bundle di più alto livello, un programma chiamato Sonic Annotator) o in alternativa nel framework Marsyas.

Problemi correlati