Voglio programmare il mio sintetizzatore vocoder come "Songify" ma non riesco a trovare un semplice algoritmo vocoder. Forse puoi spiegare o dire dove cercare informazioni su come funziona il vocoder.
Voglio programmare il mio sintetizzatore vocoder come "Songify" ma non riesco a trovare un semplice algoritmo vocoder. Forse puoi spiegare o dire dove cercare informazioni su come funziona il vocoder.
Risposte:
Temo che tutte le risposte qui siano irrilevanti per la domanda. Ciò che viene chiamato vocoder nel mondo della produzione musicale ha poco a che fare con il vocoder di fase utilizzato nell'elaborazione del segnale. A peggiorare le cose, l' app Songify a cui fa riferimento il post originale non è un esempio di vocoder. Cerchiamo di risolvere questo!
1. Vocoder di fase
Il vocoder di fase a cui fanno riferimento le altre risposte è una tecnica di elaborazione del segnale che può essere utilizzata per eseguire la modifica di tempo / tono dei segnali (time-stretching, pitch-shifting), calcolando una rappresentazione tempo-frequenza del segnale (trasformata di Fourier a breve termine o STFT), quindi inserendo / rimuovendo i frame di segnale e mantenendo la coerenza delle informazioni sulla fase. La sua relazione con la voce è solo storica, ed è attualmente utilizzata per il pitch-shifting e il time-stretching nell'hardware / software audio di fascia bassa. RubberBand è un esempio di libreria open source C ++ di modifica del tempo / intonazione basata su un vocoder di fase.
2. Vocoder
Quando le persone nel campo della produzione musicale si riferiscono a un Vocoder, si riferiscono a un dispositivo che estrae l'inviluppo spettrale di un segnale (di solito voce, chiamato modulatore) e filtra un altro segnale (di solito una trama ricca di synth, chiamata portante) con un filtro la cui risposta è l'inviluppo spettrale estratto. Per un esempio del suono risultante, ascolta 0:23 in Kraftwerk Trans Europe Express , o Il progetto The Raven di Alan Parsons dai pochi primi secondi. L'effetto risultante è un timbro vocale simile applicato alla melodia o agli accordi suonati dal segnale portante, dando la sensazione che una voce sia pronunciata attraverso un sintetizzatore.
Essendo il vocoder originariamente un dispositivo analogico, è stato implementato con due banchi di una dozzina o più di filtri passa-banda con Q elevato. Il segnale del modulatore viene inviato attraverso il primo banco di filtri e l'ampiezza di tutti i segnali della sottobanda viene tracciata con un matrice di follower delle buste. Parallelamente, il segnale portante viene inviato attraverso un altro banco di filtri. Ogni sottobanda è amplificata (con un VCA) con i guadagni dati dai follower dell'inviluppo. Se leggi l'analogico, puoi dare un'occhiata agli schemi di un canale vocoder qui , dal Vocoder vivente di Jurgen Haible- in alto il filtro del segnale del modulatore, in basso il filtro vettore e il VCA. Le implementazioni software dei vocoder rimangono vicine a questo, semplicemente perché i produttori di musica si aspettano che i vocoder suonino come i classici dispositivi analogici! Ma se non si desidera la fedeltà ai dispositivi "vintage" e si desidera qualcosa di più economico di 40 biquads, un altro modo per ottenere lo stesso risultato è stimare un filtro tutto polare (dell'ordine da 8 a 20 a seconda di quanto si desidera per arrivare alla voce originale) dal segnale del modulatore (modellazione AR); e quindi applicare questo filtro al corriere. Il problema tipico qui è che dovrai aggiornare i tuoi coefficienti di filtro ogni 20 ms circa; quindi è necessaria una rappresentazione del filtro onnipolare che gestisca aggiornamenti bruschi dei coefficienti.
3. Sintonizzazione automatica e rimappatura del pitch
Quello che fa Songify è il seguente: estrarre la prosodia (contorno del tono) della voce registrata e modificarla in modo che il contorno del tono risultante corrisponda a una melodia target. Questo è un po 'simile a quello che fa l'auto-tune, con la differenza che l'auto-tune "arrotonda" l'intonazione verso il semitono musicalmente più vicino, mentre Songify lo spinge semplicemente come un valore target.
Gli algoritmi al lavoro qui sono molto diversi dal tradizionale time-shifting pitch-shifting, perché il segnale vocale è monofonico e si adatta bene al modello di filtro sorgente. Approcci come Time-Domain Pitch-Synchronous-Overlap-Add (TD-PSOLA) sono molto più efficienti, sia dal punto di vista computazionale che in termini di qualità, per alterare in modo trasparente il tono della voce rispetto agli algoritmi di time-stretch generici (generalmente eseguiti con vocoder di fase ). Questi sono usati ad esempio nella sintesi vocale per alterare la prosodia di una frase sintetizzata - non diversamente da Songify! La sintonizzazione automatica si basa anche su tali metodi nel dominio del tempo (rilevamento di cicli completi della forma d'onda di input e ricampionamento di questi).
Dan Ellis ha degli ottimi esempi di Matlab in questa pagina: http://www.ee.columbia.edu/~dpwe/resources/matlab/pvoc/
Ecco un link allo pseudo-codice su Mathworks.
Ecco un link una descrizione dell'algoritmo in DSP Dimensions.
Un cestino FFT ha una frequenza centrale. Qualsiasi sinusoide a quella esatta frequenza del bin avrà la stessa fase con riferimento a 2 punti di riferimento spostati esattamente a 1 fotogramma FFT a parte, o avrà una fase delta che può essere calcolata per 2 punti di riferimento o 2 fotogrammi FFT a distanza arbitraria (forse sovrapposti) . L'idea di base di un vocoder di fase è di regolare leggermente ciascuna frequenza del contenitore FFT su una frequenza vicina in modo che una sinusoide a quella frequenza corrisponda alla fase rilevata nei punti di riferimento di 2 frame FFT offset, se le frequenze centrali del contenitore FFT non lo fanno.
Queste frequenze regolate possono quindi essere utilizzate per una risintesi granulare di una forma d'onda che presenta più continuità attraverso i frame resintesi, anche se la sequenza originale di spettri viene ridimensionata nei domini di frequenza o di tempo. Queste frequenze di offset possono anche essere utilizzate per la stima della frequenza o come parte di un metodo di stima dell'intonazione. Con la stima del tono più la risintesi del suono, si potrebbe essere in grado di emettere un suono a un tono e spingere una risintesi a qualcosa che suona quasi uguale, tranne che a un altro tono.
Il seguente articolo descrive un vocoder di fase basato sulla trasformata di Fourier (STFT) di breve durata, nonché una tecnica di sovrapposizione sincrona del tono (PSOLA) per affrontare il tempo e le modifiche del tono dei segnali audio:
Moulines, E. & Laroche, J.
" Tecniche non parametriche per la modifica del parlato su scala di tono e scala temporale ",
Speech Communication, 1995.
(alcune versioni PDF sono disponibili nei link di google scholar )