Riconoscere le funzioni matematiche all'interno delle canzoni


12

Sono nuovo di DSP e ho appena scoperto questo StackExchange, quindi mi scuso se non è il posto giusto per pubblicare questa domanda.

Esiste una risorsa che descrive i generi in termini più matematici? Ad esempio, se ho eseguito una FFT sul segnale in questa sezione della canzone (2:09 se il link non inizia lì), c'è un modo per me di essere in grado di rilevare che questa sezione ha quel tipo di rozzo del suono? Suoni del genere seguono alcune funzioni matematiche con cui posso confrontare? http://www.youtube.com/watch?v=SFu2DfPDGeU&feature=player_detailpage#t=130s (il link inizia a riprodurre immediatamente il suono)

È l'unico modo per utilizzare tecniche di apprendimento supervisionato o esiste un approccio diverso (che preferibilmente non richiede supervisione)?

Grazie per qualsiasi consiglio


È possibile utilizzare un FFT per rilevare un battito di batteria rispetto a un flauto, ma non per rilevare il genere. Roba molto locale sul suono, certo, ma non sul carattere musicale del file totale.
endolith,

È possibile riconoscere la "rugosità" del suono? È qui che entrano in gioco le MFCC?
XSL

Risposte:


10

Penso che la distinzione che stai cercando sia più simile a empirica vs teorica (al contrario di supervisionato rispetto a non supervisionato), ma potrei sbagliarmi al riguardo. In altre parole, l'ideale sarebbe avere una definizione teorica di vari generi, piuttosto che solo un mucchio di dati opachi che possono essere usati per classificare una canzone [senza alcuna reale comprensione].

Tuttavia, per la classificazione generale dei generi, probabilmente sei bloccato almeno con la formazione dagli esempi, anche se solo per creare le definizioni dei generi in primo luogo. Rispetto al tuo esempio, considera la frequenza con cui le persone discuteranno [su YouTube] se una determinata traccia è davvero dubstep (ad esempio qualsiasi traccia che è più doppiata e meno traballante , anche se il genere è iniziato senza alcuna vera oscillazione). Le persone definiscono i generi nel tempo attraverso esempi, quindi è ragionevole aspettarsi che algoritmi che replicano quel comportamento richiederebbero anche alcuni esempi. Il modo in cui le persone descrivono i generi è quasi come un vettore di funzionalità comunque - fanno un elenco di domande sulla canzone (ad es. è più trasandato o traballante? Ha molti sub bassi? Quanto dura? Qual è il tempo? C'è una voce? ecc.).

Naturalmente, potresti essere in grado di scegliere un elenco di funzionalità che forniscono anche una comprensione intuitiva del genere. Una funzionalità come "Gamma dinamica" è qualcosa che una persona può anche rilevare a orecchio, ma qualcosa come "Time Domain Zero Crossings" non sarebbe molto intuitiva, anche se funziona bene per la classificazione. Il seguente documento presenta alcune funzionalità che potrebbero essere interessanti per te:

George Tzanetakis, Perry R. Cook: classificazione del genere musicale dei segnali audio. Link IEEE Transactions on Speech and Audio Processing 10 (5): 293-302 (2002) .

Per misurare la rugosità, la rugosità psicoacustica sarebbe un buon punto di partenza, ma potrebbe non essere sufficiente distinguere tra elettrocateteri dubstep e elettrocateteri, ad esempio. Per distinzioni più precise, una cosa da considerare è il riconoscimento del timbro . La seguente tesi ha un discreto sondaggio di tecniche:

TH Park, "Verso il riconoscimento automatico del timbro dello strumento musicale", Ph.D. tesi di laurea, Università di Princeton, New Jersey, 2004. link .

Esiste anche un modello relativo alla rugosità percettiva in Timbre, Tuning, Spectrum e Scale che viene utilizzato per costruire scale personalizzate per timbri arbitrari. L'idea è che le armoniche che sono molto vicine tra loro producono frequenze di battito che sono percepite come dissonanza. Parafrasando dalle appendici F ed E ,

Quando è uno spettro con parziali alle frequenze , la dissonanza intrinseca [assumendo ampiezze unitarie] èFf1,f2,...,fn

DF=1/2 i=1n j=1n d(|fifj|min(fi,fj))

dove

d(x)=e3.5xe5.75x

è un modello della curva Plomp-Levelt .

È usato per misurare quanto sia piacevole un determinato accordo rispetto a un timbro (minimizzando la dissonanza). Non so se né la ruvidezza della varietà psicoacustica, né la dissonanza intrinseca sarebbero molto fruttuose per i tuoi scopi da soli, ma potrebbero essere utili in combinazione con altre metriche.

Probabilmente avrai più fortuna a classificare i timbri matematicamente che i generi. Ad esempio, le stringhe hanno armoniche pari e dispari, ma un clarinetto ha solo armoniche dispari (cfr. Onda a dente di sega , onda quadra ). Il dondolio di Dubstep tende a essere fatto con filtri basati su LFO (passa-basso e / o filtri formanti), quindi qualcosa come Spectral Flux (vedi [Tzanetakis], sopra) potrebbe essere un buon punto di partenza come caratteristica. Tuttavia, dubito che qualcuno abbia ancora studiato la classificazione matematica delle oscillazioni;)


2
Ottima risposta dal datageist. Vorrei anche suggerire isophonics.net/QMVampPlugins se stai cercando maggiori informazioni e una piattaforma di sviluppo con codice sorgente
Dan Barry,

@Dan Sembra fantastico, grazie per quel link.
datageist

Ho trovato una nicchia da studiare! : D Grazie per la brillante risposta e collegamenti. Mi ha indicato una direzione piuttosto che usare senza meta Google.
XSL

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.