GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Wissenschaftliche Audioverarbeitung, Teil II - Wie man grundlegende mathematische Signalverarbeitung in Audiodateien mit Ubuntu mit Octave 4.0 durchführt

Im vorherigen Tutorial haben wir die einfachen Schritte zum Lesen, Schreiben und Wiedergeben von Audiodateien gesehen. Wir haben sogar gesehen, wie wir eine Audiodatei aus einer periodischen Funktion wie der Kosinusfunktion synthetisieren können. In diesem Tutorial werden wir sehen, wie wir Signale hinzufügen, Signale multiplizieren (Modulation) und einige grundlegende mathematische Funktionen anwenden können, um ihre Auswirkungen auf das ursprüngliche Signal zu sehen.

Signale hinzufügen

Die Summe zweier Signale S1(t) und S2(t) ergibt ein Signal R(t), dessen Wert zu jedem Zeitpunkt die Summe der addierten Signalwerte zu diesem Zeitpunkt ist. Einfach so:

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

Wir werden die Summe zweier Signale in Octave nachbilden und den Effekt grafisch sehen. Zuerst erzeugen wir zwei Signale mit unterschiedlichen Frequenzen, um das Signal zu sehen, das sich aus der Summe ergibt.

Schritt 1:Erstellen von zwei Signalen mit unterschiedlichen Frequenzen (ogg-Dateien)

>> 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);


Hier werden wir beide Signale darstellen.

Plot von Signal 1 (440 Hz)

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

Plot von Signal 2 (880 Hz)

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


Schritt 2:Hinzufügen von zwei Signalen

Jetzt führen wir die Summe der beiden im vorherigen Schritt erstellten Signale durch.

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

Darstellung des resultierenden Signals


Der Octaver-Effekt

Beim Octaver ist der von diesem Effekt erzeugte Klang charakteristisch, da er die vom Musiker gespielte Note emuliert, entweder in einer tieferen oder höheren Oktave (je nach Programmierung), gekoppelt mit dem Klang der Originalnote, dh es erscheinen zwei Noten identisch klingen.

Schritt 3:Hinzufügen von zwei echten Signalen (Beispiel mit zwei Musiktiteln)

Zu diesem Zweck verwenden wir zwei Spuren von gregorianischen Gesängen (Voice Sampling).

Avemaria-Track

Zuerst wird ein Avemaria-Track gelesen und geplottet:

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

Hymnus-Track

Jetzt wird ein Hymnus-Track gelesen und gezeichnet

>> [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)




Das Ergebnis aus Audiosicht ist, dass beide Spuren klingt gemischt.

Produkt zweier Signale


Um zwei Signale zu multiplizieren, müssen wir analog zur Summe vorgehen. Lassen Sie uns dieselben zuvor erstellten Dateien verwenden.

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


Hinweis:Wir müssen den Operanden '.*' verwenden, da dieses Produkt Wert für Wert aus den Argumentdateien erstellt wird. Weitere Informationen finden Sie im Handbuch für den Produktbetrieb mit Octave-Matrizen.

Plot des resultierenden Produktsignals

Grafischer Effekt der Multiplikation zweier Signale mit einem großen Grundfrequenzunterschied (Prinzipien der Modulation)

Schritt 1:

Erstellen Sie ein Tonfrequenzsignal mit einer Frequenz von 220 Hz.

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


Schritt 2:

Erzeugen Sie ein höherfrequentes modulierendes Signal von 22000 Hz.

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

Schritt 3:

Multiplizieren und Plotten der beiden Signale.

>> plot(y1.*y2);


Multiplikation eines Signals mit einem Skalar

Der Effekt der Multiplikation einer Funktion mit einem Skalar entspricht der Änderung ihres Umfangs und in einigen Fällen des Vorzeichens der Phase. Bei einem Skalar K ist das Produkt einer Funktion F(t) durch den Skalar definiert als:

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);

Plot des Originalsignals
>> plot(y)

Plot eines um 0,2 reduzierten Signals

>> plot(res1)


Plot eines um 0,5 reduzierten Signals

>> plot(res2)


Plot eines Signals mit invertierter Phase

>> plot(res3)

Schlussfolgerung


Die grundlegenden mathematischen Operationen wie algebraische Summe, Produkt und Produkt einer Funktion durch einen Skalar sind das Rückgrat fortgeschrittenerer Operationen, darunter Spektrumanalyse, Amplitudenmodulation, Winkelmodulation usw. Im Folgenden Tutorial, werden wir sehen, wie man solche Operationen und ihre Auswirkungen auf Audiosignale durchführt.


Ubuntu
  1. Wie richte ich einen MongoDB-Cluster mit 3 Knoten mit Ubuntu 16 ein?

  2. So erstellen Sie einen Minecraft-Server mit Hostinger, Ubuntu, Windows und macOS

  3. So überwachen Sie Server-Logdateien mit Logwatch auf Debian und Ubuntu

  4. Wissenschaftliche Audioverarbeitung, Teil III – Anwenden von erweiterten mathematischen Verarbeitungseffekten auf Audiodateien mit Octave 4.0 unter Ubuntu

  5. Wissenschaftliche Audioverarbeitung, Teil I - Lesen und Schreiben von Audiodateien mit Octave 4.0.0 auf Ubuntu

So finden und löschen Sie doppelte Dateien in Ubuntu mit Fdupes

So übertragen Sie Dateien sicher zwischen Ubuntu-Systemen mit Croc

So reinigen Sie Ihr Ubuntu-System mit dem Bleachbit-Tool

So erstellen Sie einen temporären Ordner in Ubuntu mit MKTemp

So erstellen Sie ein einfaches HTML5-Projekt in Ubuntu mit Netbeans

Wie kann man eine in Ubuntu erstellte Textdatei mit Windows Notepad kompatibel machen?