Memprogram Vocoder

11

Saya ingin memprogram synthesizer vocoder saya sendiri seperti "Songify" tetapi saya tidak dapat menemukan algoritma sederhana dari vocoder. Mungkin Anda bisa menjelaskan atau memberi tahu di mana mencari informasi tentang cara kerja vocoder.

Rytis Alekna
sumber
3
DAFX oleh Udo Zölzer et al memiliki fase vocoder sederhana dengan beberapa kode MATLAB.
Phonon
1
Periksa Melodify SDK , itu melakukan hal yang sama, dan uji coba demo tersedia.
Danijel

Jawaban:

18

Saya khawatir semua jawaban di sini tidak relevan dengan pertanyaan. Apa yang disebut vocoder dalam dunia produksi musik tidak ada hubungannya dengan fase vocoder yang digunakan dalam pemrosesan sinyal. Lebih parahnya lagi, aplikasi Songify yang dirujuk oleh posting asli bukan contoh dari vocoder. Mari kita selesaikan ini!

1. Phase vocoder

The vocoder fase direferensikan oleh jawaban yang lain adalah teknik pemrosesan sinyal yang dapat digunakan untuk melakukan modifikasi waktu / pitch sinyal (waktu-peregangan, pitch-pergeseran), dengan menghitung representasi waktu-frekuensi sinyal (jangka pendek Fourier Transform , atau STFT) dan kemudian memasukkan / melepaskan bingkai sinyal dan kemudian menjaga koherensi informasi fase. Hubungannya dengan suara hanya bersifat historis, dan saat ini digunakan untuk mengubah nada dan waktu dalam perangkat keras / lunak audio kelas bawah. RubberBand adalah contoh pustaka waktu / pitch alterasi open-source C ++ berdasarkan fase-vocoder.

2. Vocoder

Ketika orang-orang di bidang produksi musik mengacu pada Vocoder, mereka merujuk ke perangkat yang mengekstraksi amplop spektral dari sinyal (biasanya suara, disebut modulator), dan menyaring sinyal lain (biasanya tekstur synth yang kaya, yang disebut pembawa) dengan filter yang jawabannya adalah amplop spektral yang diekstraksi. Untuk contoh suara yang dihasilkan, dengarkan 0:23 di Kraftwerk Trans Europe Express , atau Alan Parsons 'Project The Raven dari beberapa detik pertama. Efek yang dihasilkan adalah timbre seperti vokal yang diterapkan pada melodi atau akor yang dimainkan oleh sinyal pembawa, memberikan perasaan bahwa suara diucapkan melalui synthesizer.

Vokoder yang awalnya merupakan perangkat analog, itu diimplementasikan dengan dua bank selusin atau lebih bandpass filter dengan Q tinggi. Sinyal modulator dikirim melalui bank filter pertama, dan amplitudo dari semua sinyal sub-band dilacak dengan berbagai pengikut amplop. Secara paralel, sinyal pembawa dikirim melalui bank filter lain. Setiap sub-band diperkuat (dengan VCA) dengan keuntungan yang diberikan oleh pengikut amplop. Jika Anda membaca analog, Anda dapat melihat skema saluran vocoder di sini , dari Vocoder hidup Jurgen Haible- di atas filter sinyal modulator, di bagian bawah filter pembawa dan VCA. Implementasi perangkat lunak vocoders tetap dekat dengan ini, hanya karena produser musik mengharapkan vocoders terdengar seperti perangkat analog klasik! Tetapi jika Anda tidak ingin kesetiaan pada perangkat "vintage", dan menginginkan sesuatu yang lebih murah daripada 40 biquads, cara lain untuk mencapai hasil yang sama adalah dengan memperkirakan semua-tiang filter (urutan 8 hingga 20 tergantung pada seberapa dekat Anda inginkan untuk sampai ke suara asli) dari sinyal modulator (pemodelan AR); dan kemudian menerapkan filter ini ke operator. Masalah umum di sini adalah Anda harus memperbarui koefisien filter setiap 20ms frame atau lebih; jadi Anda memerlukan representasi dari filter semua kutub yang menangani pembaruan koefisien dengan tiba-tiba.

3. Auto-tune dan pitch-remapping

Apa yang dilakukan Songify adalah sebagai berikut: mengekstrak prosodi (kontur pitch) dari suara yang direkam, dan mengubahnya sehingga kontur pitch yang dihasilkan cocok dengan melodi target. Ini sedikit mirip dengan apa yang dilakukan auto-tune, dengan perbedaan bahwa auto-tune "memutar" pitch ke arah semitone yang akurat secara musikal terdekat, sementara Songify hanya mendorongnya nilai target.

Algoritme yang bekerja di sini sangat berbeda dari pengubahan waktu pitch-shifting tradisional, karena sinyal suara monofonik dan cocok dengan model sumber-filter. Pendekatan seperti Time-Domain Pitch-Synchronous-Overlap-Add (TD-PSOLA) jauh lebih efisien, baik secara komputasi maupun dari segi kualitas, untuk mengubah nada suara secara transparan daripada algoritma rentang waktu umum (biasanya dilakukan dengan fase-vocoder). ). Ini digunakan misalnya dalam sintesis ucapan untuk mengubah prosodi kalimat yang disintesis - tidak seperti Songify! Penyesuaian otomatis juga didasarkan pada metode waktu-domain seperti itu (mendeteksi siklus penuh dari bentuk gelombang input dan mengamplasnya kembali).

Ilustrasi PSOLA

pichenettes
sumber
2

Berikut ini satu tautan ke pseudo-code di Mathworks.

Berikut tautan uraian algoritme di Dimensi DSP.

Bin FFT memiliki frekuensi pusat. Setiap sinusoid pada frekuensi bin yang tepat akan memiliki fase yang sama dengan referensi ke 2 titik referensi mengimbangi tepat 1 frame FFT terpisah, atau memiliki fase delta yang dapat dihitung untuk 2 titik referensi atau 2 FFT membingkai jarak sewenang-wenang terpisah (mungkin tumpang tindih) . Ide dasar dari vocoder fase adalah sedikit menyesuaikan setiap frekuensi nampan FFT ke frekuensi di dekatnya sehingga sinusoid pada frekuensi tersebut akan cocok dengan fase yang terdeteksi pada titik referensi 2 frame offset FFT, jika frekuensi pusat bin FFT tidak.

Frekuensi yang disesuaikan ini kemudian dapat digunakan untuk resintesis granular dari bentuk gelombang yang menunjukkan lebih banyak kontinuitas di seluruh frame yang disintesis ulang, bahkan jika urutan spektrum asli diskalakan dalam frekuensi atau domain waktu. Frekuensi offset ini juga dapat digunakan untuk estimasi frekuensi, atau sebagai bagian dari metode estimasi pitch. Dengan estimasi nada ditambah resintesis suara, seseorang mungkin dapat mengambil suara pada satu nada dan mendorong resintesis ke sesuatu yang terdengar hampir sama, kecuali pada nada lainnya.

hotpaw2
sumber
2

Artikel berikut ini menjelaskan vocoder fase Fourier transform (STFT) jangka pendek, serta teknik pitch overlap-add (PSOLA) pitch sinkron untuk menangani modifikasi sinyal audio waktu dan pitch:

Moulines, E. & Laroche, J.
" Teknik non-parametrik untuk skala nada dan modifikasi skala waktu bicara ",
Speech Communication, 1995.
(beberapa versi PDF tersedia dalam tautan dari google scholar )

Jean-louis Durrieu
sumber