Domanda

Sto cercando di utilizzare ANN per la rilevazione intonazione di note musicali. La rete è un semplice due strati MLP, i cui ingressi sono fondamentalmente una DFT (mediati e logaritmicamente distribuita), e 12 uscite corrispondono ai 12 note di un particolare un'ottava.

La rete è allenato con diversi campioni di quei 12 note suonate da alcuni strumento (una sola nota alla volta), e alcuni campioni di "silenzio".

I risultati sono in realtà un bene. La rete è in grado di rilevare quelle note suonate da strumenti diversi preety con precisione, è relativamente amune al rumore, e anche non perdere completamente di sanety quando viene riprodotto un brano.

L'obiettivo, tuttavia, è quello di essere in grado di rilevare il suono polifonica. In modo che quando due o più note sono suonate insieme, i due neuroni corrispondenti spareranno. La cosa sorprendente è che la rete fa in realtà già che in qualche misura (in formazione sui campioni monofoniche solo), tuttavia meno coerente e meno accurato rispetto per le note monofoniche. La mia domanda è come posso migliorare la sua capacità di riconoscere il suono polyphnic?

Il problema è che non veramente a capire perché effettivamente funziona già. Le diverse note (o loro DFTS) sono fondamentalmente diversi punti dello spazio per le quali è addestrato alla rete. Così vedo il motivo per cui riconosce i suoni la classica (punti nelle vicinanze), ma non come è "conclude" l'uscita di una combinazione di note (che formano un punto lontano da ciascuno degli esempi di formazione). Allo stesso modo una rete AND che è formato oltre (0,0) (0,1) (1,0) = (0), non dovrebbe "concludono" che (1,1) = (1).

L'aprroach forza bruta per questo è quello di formare la rete con il maggior numero di campioni polifoniche possibili. Tuttavia, dal momento che la rete sembrano cogliere in qualche modo vagamente l'idea dai campioni monofonici, probabilmente c'è qualcosa di più fundemential qui.

Tutti gli indicatori? (Mi dispiace per la lunghezza, btw:).

È stato utile?

Soluzione

Il motivo per cui funziona è probabilmente già molto semplicemente che non si è allenato a sceglierne uno e una sola uscita (almeno presumo che non è vero). Nel caso semplice quando l'uscita è solo un prodotto scalare di ingresso ed i pesi, i pesi diventerebbe abbinato filtri per il passo corrispondente. Dal momento che tutto è lineare, uscite multiple sarebbero contemporaneamente si attivano se più abbinato filtri SAW contemporaneamente buone partite (come è il caso per le note polifoniche). Dal momento che la rete include probabilmente non linearità, l'immagine è un po 'più complesso, ma l'idea è probabilmente lo stesso.

Per quanto riguarda i modi per migliorarla, la formazione con i campioni polifoniche è certamente una possibilità. Un'altra possibilità è di passare ad un filtro lineare. La DFT di un suono polifonica è fondamentalmente la somma di DFTS di ogni singolo suono. Si desidera una combinazione lineare degli ingressi per diventare una corrispondente combinazione lineare delle uscite, quindi un filtro lineare è appropriata.

Per inciso, il motivo per cui si usa una rete neurale per questo, in primo luogo? Sembra che solo guardando il DFT e, diciamo, prendendo la frequenza massima darebbe risultati migliori con più facilità.

Altri suggerimenti

Anssi Klapuri è un ricercatore audio di tutto rispetto che ha pubblicato un metodo per eseguire il rilevamento passo su di registrazioni polifoniche che utilizzano le reti neurali.

Si potrebbe desiderare di confrontare il metodo di Klapuri al tuo. E 'completamente descritto nella sua tesi di master, Metodi di elaborazione del segnale per la trascrizione automatica di musica . Potete trovare i suoi molti articoli on-line, o comprare il suo libro che spiega i suoi algoritmi e risultati dei test. sua tesi di master è collegata al di sotto.

https://www.cs.tut.fi /sgn/arg/klap/phd/klap_phd.pdf

Pitch Detection su registrazioni polifoniche è un argomento molto difficile e contiene molte polemiche - essere pronti a fare un sacco di lettura. Il link qui sotto contiene un altro approccio alla rilevazione passo su registrazioni polifoniche, che ho sviluppato per un'applicazione gratuita chiamata PitchScope Player . Il mio codice sorgente C ++ è disponibile sul GitHub.com, e viene fatto riferimento nel link in basso. Una versione eseguibile gratuita di PitchScope Player è disponibile sul web e funziona su Windows anche.

tempo reale campo di rilevamento

I sperimentato con l'evoluzione di una CTRNN (Continuous Tempo Recurrent Neural Network) sulla rilevazione della differenza tra 2 onde sinusoidali. Ho avuto un moderato successo, ma non ha mai avuto il tempo di follow-up con una banca di questi neuroni (cioè in bande simili al cocleare).

Un possibile approccio potrebbe essere quello di impiegare Programmazione Genetica (GP), per generare gli snippet brevi di codice che rileva il campo. In questo modo si sarebbe in grado di generare una regola per come funziona il rilevamento passo, che si spera essere leggibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top