GNU/Linux >> Znalost Linux >  >> Ubuntu

Vědecké zpracování zvuku, část II – Jak vytvořit základní matematické zpracování signálu ve zvukových souborech pomocí Ubuntu s Octave 4.0

V předchozím tutoriálu jsme viděli jednoduché kroky ke čtení, zápisu a přehrávání zvukových souborů. Dokonce jsme viděli, jak můžeme syntetizovat zvukový soubor z periodické funkce, jako je funkce kosinus. V tomto tutoriálu uvidíme, jak můžeme k signálům přidávat doplňky, násobit signály (modulace) a používat některé základní matematické funkce, abychom viděli jejich účinek na původní signál.

Přidávání signálů

Součet dvou signálů S1(t) a S2(t) vede k signálu R(t), jehož hodnota v libovolném časovém okamžiku je součtem hodnot přidaných signálů v daném okamžiku. Přesně takto:

R(t) =S1(t) + S2(t)

Znovu vytvoříme součet dvou signálů v oktávě a efekt uvidíme graficky. Nejprve vygenerujeme dva signály různých frekvencí, abychom viděli signál vyplývající ze součtu.

Krok 1:Vytvoření dvou signálů s různými frekvencemi (soubory ogg)

>> sig1='cos440.ogg';                  %creating the audio file @440 Hz
>> sig2='cos880.ogg';                  %creating the audio file @880 Hz
>> fs=44100;                           %generating the parameters values (Period, sampling frequency and angular frequency)
>> t=0:1/fs:0.02;
>> w1=2*pi*440*t;
>> w2=2*pi*880*t;
>> audiowrite(sig1,cos(w1),fs);        %writing the function cos(w) on the files created
>> audiowrite(sig2,cos(w2),fs);


Zde vykreslíme oba signály.

Graf signálu 1 (440 Hz)

>> [y1, fs] = audioread(sig1);
>> plot(y1)

Graf signálu 2 (880 Hz)

>> [y2, fs] = audioread(sig2);
>> plot(y2)


Krok 2:Přidání dvou signálů

Nyní provedeme součet dvou signálů vytvořených v předchozím kroku.

>> sumres=y1+y2;
>> plot(sumres)

Graf výsledného signálu


Efekt Octaver

V Octaveru je zvuk poskytovaný tímto efektem charakteristický, protože emuluje notu, kterou hraje hudebník, buď v nižší nebo vyšší oktávě (podle toho, jak to bylo naprogramováno), ve spojení se zvukem původní noty, tj. objeví se dvě noty. stejně znějící.

Krok 3:Přidání dvou skutečných signálů (příklad se dvěma hudebními stopami)

K tomuto účelu použijeme dvě skladby gregoriánských chorálů (voice sampling).

Avemaria Track

Nejprve přečte a nakreslí stopu Avemaria:

>> [y1,fs]=audioread('avemaria_.ogg');
>> plot(y1)

Hymnus Track

Nyní přečte a nakreslí skladbu hymnus

>> [y2,fs]=audioread('hymnus.ogg');
>> plot(y2)

Avemaria + Hymnus Track

>> y='avehymnus.ogg';
>> audiowrite(y, y1+y2, fs);
>> [y, fs]=audioread('avehymnus.ogg');
>> plot(y)




Výsledkem z hlediska zvuku je, že obě stopy bude znít smíšeně.

Součin dvou signálů


K vynásobení dvou signálů musíme použít analogickou cestu k součtu. Použijme stejné soubory vytvořené dříve.

R(t) =S1(t) * S2(t)



>> sig1='cos440.ogg';                  %creating the audio file @440 Hz
>> sig2='cos880.ogg';                  %creating the audio file @880 Hz
>> product='prod.ogg';                 %creating the audio file for product
>> fs=44100;                           %generating the parameters values (Period, sampling frequency and angular frequency)
>> t=0:1/fs:0.02;
>> w1=2*pi*440*t;
>> w2=2*pi*880*t;
>> audiowrite(sig1, cos(w1), fs);      %writing the function cos(w) on the files created
>> audiowrite(sig2, cos(w2), fs);
>> [y1,fs]=audioread(sig1);
>> [y2,fs]=audioread(sig2);
>> audiowrite(product, y1.*y2, fs);    %performing the product
>> [yprod,fs]=audioread(product);
>> plot(yprod);                        %plotting the product


Poznámka:Musíme použít operand  '.*', protože tento součin je vytvořen, hodnota k hodnotě, v souborech argumentů. Další informace naleznete v příručce operací produktu s maticemi Octave.

Graf výsledného signálu produktu

Grafický efekt násobení dvou signálů s velkým rozdílem základní frekvence (Principy modulace)

Krok 1:

Vytvořte zvukový frekvenční signál s frekvencí 220 Hz.

>> fs=44100;
>> t=0:1/fs:0.03;
>> w=2*pi*220*t;
>> y1=cos(w);
>> plot(y1);


Krok 2:

Vytvořte modulační signál vyšší frekvence 22 000 Hz.

>> y2=cos(100*w);
>> plot(y2);

Krok 3:

Násobení a vykreslování dvou signálů.

>> plot(y1.*y2);


Násobení signálu skalárem

Účinek násobení funkce skalárem je ekvivalentní úpravě jejich rozsahu a v některých případech i znaménka fáze. Je-li dán skalár K, součin funkce F(t) skalárem je definován jako:

R(t) =K*F(t)


>> [y,fs]=audioread('cos440.ogg');        %creating the work files
>> res1='coslow.ogg';               
>> res2='coshigh.ogg';
>> res3='cosinverted.ogg';
>> K1=0.2;                                %values of the scalars
>> K2=0.5;
>> K3=-1;
>> audiowrite(res1, K1*y, fs);            %product function-scalar
>> audiowrite(res2, K2*y, fs);
>> audiowrite(res3, K3*y, fs);

Zákres původního signálu
>> plot(y)

Vykreslení signálu se sníženou amplitudou o 0,2

>> plot(res1)


Vykreslení signálu se sníženou amplitudou o 0,5

>> plot(res2)


Zákres signálu s obrácenou fází

>> plot(res3)

Závěr


Základní matematické operace, jako je algebraický součet, součin a součin funkce skalárem, jsou páteří pokročilejších operací, mezi něž patří spektrální analýza, modulace amplitudy, úhlová modulace atd. tutoriálu, uvidíme, jak takové operace provádět a jejich účinky na audio signály.


Ubuntu
  1. Jak nastavit MongoDB Cluster pomocí 3 uzlů s Ubuntu 16?

  2. Jak vytvořit server Minecraft s Hostinger, Ubuntu, Windows a macOS

  3. Jak monitorovat soubory protokolu serveru pomocí Logwatch na Debianu a Ubuntu

  1. Vědecké zpracování zvuku, část III – Jak aplikovat pokročilé efekty matematického zpracování na zvukové soubory s Octave 4.0 na Ubuntu

  2. Vědecké zpracování zvuku, část I – Jak číst a zapisovat zvukové soubory s Octave 4.0.0 na Ubuntu

  3. Jak šifrovat soubory pomocí Tomb na Ubuntu 16.04 LTS

  1. Instalace a používání vědeckého softwaru GNU Octave na Ubuntu 15.04

  2. Jak zacházet se soubory pomocí Scilab na Ubuntu 15.04

  3. Jak synchronizovat soubory/složky pomocí FreeFileSync na Ubuntu