Matlab-dagi kanalli vokoder

Source: https://sethares.engr.wisc.edu/vocoders/channelvocoder.html

William A. Sethares (Bill)

Kanal vokoderi nima?

Kanal vokoderi ikkita keladigan tovush manbalarini (tashuvchi va modulyator) mos chastota mintaqalariga ajratadigan filtrlar banki sifatida ishlaydi. Modulatorning har bir pastki bandidagi konvert tashuvchining tegishli pastki bandiga o’rnatiladi va hosil bo’lgan tovushlar birlashtiriladi. Quyida ko’rsatilgandek, rektifikatsiyaning nochiziqligi, so’ngra past o’tkazgichli filtr diapazondagi tovush konvertiga yaqinlashadi. Kanal vokoderi nutq bilan modulyatsiya qilinganida klassik robot ovozini yaratish uchun ishlatilishi mumkin va u Gollivudda maxsus effekt sifatida keng foydalanishni topdi.

Kanal vokoderi bir tovush konvertini (modulyator) boshqasining (tashuvchisi) to’lqin shakliga tushiradigan filtr-bank sifatida talqin qilinishi mumkin. Zarf operatsiyasi (bu erda rektifikatsiyaning nochiziqli g(x) qo’llanilishidan keyin past o’tish filtri qo’llanilishi bilan ko’rsatilgan) har bir chastota diapazonida alohida qo’llaniladi.

 

Kanal vokoderining zamonaviy dasturlari odatda filtr banklarini FFT bilan almashtiradi. Ko’pgina polosalardan foydalanilganda, bu hisoblash tezroq bo’ladi va FFT kattaligi yordamida chiziqsiz va past o’tkazgichli filtrlash osonlikcha amalga oshiriladi. Byung Park buni o’zining magistrlik loyihasi doirasida dasturlashtirgan va (Matlab) kodi bu erda paydo bo’ladi. Chanvocoder.m uchun “yordam” fayli quyidagicha o’qiydi:

function y = chanvocoder(carrier, modul, chan, numband, overlap)
% y = chanvocoder(carrier, modul, chan, numband, overlap)
% Kanal ovozi modulyatsiya signali bilan tashuvchi signalni modulyatsiya qiladi
% chan = kanallar soni (masalan, 512)
% numband = guruhlar soni (<chan) (masalan, 32)
% overlap = deraza ustma-ust tushishi (masalan, 1/4)
% Park va Sethares tomonidan yozilgan 2005.

Ko’rib turganingizdek, chanvokoder ikkita signalni talab qiladi. Modulyator odatda ovoz (aniq va sekin gapiring), tashuvchi odatda uyg’un boy ovoz manbai (masalan, organ, sintezator yoki rangli shovqin). Ularning ikkalasida bir xil treklar bo’lishi kerak, ya’ni ikkalasi ham mono yoki ikkalasi ham stereo bo’lishi kerak. Siz kanallar sonini (FFTlar uzunligi 2*chan) va diapazonlar sonini (signalni qancha chastota diapazoniga sindirish kerak), shuningdek ketma-ket FFT ramkalari orasidagi o’zaro bog’liqlik miqdorini tanlashingiz mumkin. Ovoz ushbu qiymatlarga qarab o’zgaradi. Odatda, siz .wav formatidagi ovozli fayllar bilan chanvocoder.m dan foydalanasiz. Masalan, “carrier22.wav” va “modulator22.wav” deb nomlangan .wav fayli bor deb taxmin qiling. Vokoderga qo’ng’iroq qilishning odatiy usuli:

modfile = ‘modulator22’;
carfile = ‘carrier22’;
outfile = ‘vocodedsound.wav’
[modul, sr1] = wavread(modfile);
[carrier, sr2] = wavread(carfile);
if sr1~=sr2, disp(‘your sampling rates dont match’); end
y = chanvocoder(carrier, modul, 512, 16, .2);
wavwrite(y,sr1,16,outfile)

Bu wavread buyrug’i yordamida ikkita ovozli faylda o’qiydi, namuna olish stavkalari mos kelishini tekshiradi (agar bo’lmasa, siz kutgan narsaga erisha olmaysiz), chanvocoder funktsiyasini chaqiradi va keyin chiqishni tinglashingiz mumkin bo’lgan boshqa ovozli fayl sifatida yozadi. Matlab-da yoki .wav fayllarini o’ynashga qodir bo’lgan har qanday audio dastur yordamida. Shunday qilib, bu hamma narsa ishlamoqda ko’rish uchun tekshirish mumkin, bu erda yuqorida bo’lgan tashuvchisi va modülatörü fayllar bilan birga ishlab chiqarish, yuqoridagi buyruq fayli eshitish lozim. (Ushbu fayllarni yuklab olish uchun o’ng tugmachani bosishingiz kerak bo’lishi mumkin.) Yuklab olingandan so’ng, ular (chanvocoder.m funktsiyasi bilan birga) Matlab yo’lida joylashtirilganligiga ishonch hosil qiling. Siz dasturni boshqarishingiz va “vocodedsound.wav” bilan bir xil natijaga erishishingiz kerak. Turli xil tashuvchi va modulyator tovushlaridan foydalanib, siz yaratishingiz mumkin bo’lgan turli xil effektlar mavjud. Bundan tashqari, ushbu dasturni Zerius Vocoder C tili bilan taqqoslash sizni qiziqtirishi mumkin – siz ularning xuddi shunday ishlashini topasiz va haqiqatan ham yuqoridagi test fayllari (carrier22 va modulator22) Zerius veb-saytidan olingan.