Wissenschaftliche Audioverarbeitung, Teil II – Wie man grundlegende mathematische Signalverarbeitung in Audiodateien mit Ubuntu mit Octave 4.0 macht

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

Hinzufügen von Signalen

Die Summe von zwei Signalen S1(t) und S2(t) ergibt ein Signal R(t), dessen Wert zu jedem Zeitpunkt die Summe der addierten Signalwerte zu diesem Zeitpunkt ist. Genau wie dieses:

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

Wir werden die Summe von zwei Signalen in Oktave nachbilden und den Effekt grafisch darstellen. Zuerst werden wir zwei Signale mit unterschiedlichen Frequenzen erzeugen, um das aus der Summe resultierende Signal zu sehen.

Schritt 1: Erzeugen 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 aufzeichnen.

Darstellung von Signal 1 (440 Hz)

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

Darstellung des Signals 1

Darstellung von Signal 2 (880 Hz)

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

Darstellung des Signals 2

Schritt 2: Addieren von zwei Signalen

Nun führen wir die Summe der beiden im vorherigen Schritt erzeugten Signale durch.

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

Plotten des resultierenden Signals

Signal-Summe aufzeichnen.

Der Oktavereffekt

Im Oktaver ist der durch diesen Effekt erzeugte Klang charakteristisch, weil er die vom Musiker gespielte Note entweder in einer tieferen oder höheren Oktave (je nach Programmierung) emuliert, gekoppelt mit dem Klang der Originalnote, d.h. zwei Noten erscheinen identisch klingend.

Schritt 3: Hinzufügen von zwei realen Signalen (Beispiel mit zwei Musikstücken)

Zu diesem Zweck werden wir zwei Spuren gregorianischer Gesänge verwenden (Stimmabtastung).

Avemaria-Spur

Zuerst wird eine Avemaria-Spur gelesen und geplottet:

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

Avemaria-Spur

Hymnus-Spur

Nun werden wir eine Hymnenspur lesen und zeichnen

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

Hymnus-Spur

Avemaria + Hymnus-Spur

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

Avearia + Hymnusspur

Das Ergebnis ist, aus der Sicht des Tons, dass beide Spuren gemischt klingen werden.

Produkt aus zwei Signalen

Um zwei Signale zu multiplizieren, müssen wir einen analogen Weg zur Summe verwenden. Verwenden wir die gleichen Dateien, die zuvor erstellt wurden.

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

Anmerkung: Wir müssen den Operanden ‚.*‘ verwenden, weil dieses Produkt, Wert zu Wert, auf den Argumentdateien erstellt wird. Für weitere Informationen lesen Sie bitte das Handbuch der Produktoperationen mit Oktavmatrizen.

Darstellung des resultierenden Produktsignals

Geplantes Produkt

Grafischer Effekt der Multiplikation zweier Signale mit einer großen Grundfrequenzdifferenz (Modulationsprinzipien)

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

Spediteur

Schritt 2:

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

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

Modulieren

Schritt 3:

Multiplikation und Darstellung der beiden Signale.

>> plot(y1.*y2);

Moduliertes Signal

Multiplikation eines Signals mit einem Skalar

Der Effekt der Multiplikation einer Funktion mit einem Skalar ist gleichbedeutend mit einer Änderung ihres Umfangs und in einigen Fällen auch des Vorzeichens der Phase. Bei einem Skalar K ist das Produkt einer Funktion F(t) mit dem 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)

Darstellung eines um 0,2 in der Amplitude reduzierten Signals

>> plot(res1)

Cosinus niedrig

Darstellung eines um 0,5 % amplitudenreduzierten Signals

>> plot(res2)

Cosinus hoch

Plot eines Signals mit invertierter Phase

>> plot(res3)

Cosinus invertiert

Schlussfolgerung

Die grundlegenden mathematischen Operationen, wie algebraische Summe, Produkt und Produkt einer Funktion durch einen Skalar, bilden das Rückgrat der fortgeschritteneren Operationen, zu denen die Spektrumanalyse, Amplitudenmodulation, Winkelmodulation usw. gehören. Im nächsten Tutorial werden wir sehen, wie man solche Operationen und ihre Auswirkungen auf Audiosignale durchführt.

Das könnte dich auch interessieren …