GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Elaborazione scientifica dell'audio, parte II - Come eseguire l'elaborazione dei segnali matematici di base nei file audio utilizzando Ubuntu con Octave 4.0

Nel tutorial precedente, abbiamo visto i semplici passaggi per leggere, scrivere e riprodurre file audio. Abbiamo anche visto come possiamo sintetizzare un file audio da una funzione periodica come la funzione coseno. In questo tutorial, vedremo come possiamo apportare aggiunte ai segnali, moltiplicando i segnali (modulazione) e applicando alcune funzioni matematiche di base per vedere il loro effetto sul segnale originale.

Aggiunta di segnali

La somma di due segnali S1(t) e S2(t) dà come risultato un segnale R(t) il cui valore in ogni istante è la somma dei valori di segnale aggiunti in quel momento. Proprio così:

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

Ricreeremo la somma di due segnali in Octave e vedremo l'effetto graficamente. Per prima cosa genereremo due segnali di frequenze diverse per vedere il segnale risultante dalla somma.

Fase 1:creazione di due segnali di frequenze diverse (file 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);


Qui tracciamo entrambi i segnali.

Traccia del segnale 1 (440 Hz)

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

Traccia del segnale 2 (880 Hz)

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


Passaggio 2:aggiunta di due segnali

Ora eseguiamo la somma dei due segnali creati nel passaggio precedente.

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

Grafico del segnale risultante


L'effetto Octaver

Nell'Octaver, il suono fornito da questo effetto è caratteristico perché emula la nota suonata dal musicista, sia in un'ottava inferiore o superiore (a seconda che sia stata programmata), accoppiata al suono la nota originale, cioè compaiono due note suono identico.

Fase 3:aggiunta di due segnali reali (esempio con due tracce musicali)

A tale scopo utilizzeremo due tracce di canti gregoriani (campionamento vocale).

Pista Avemaria

Per prima cosa leggerò e tramerò una traccia Avemaria:

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

Traccia dell'inno

Ora leggerà e tramerà una traccia di inni

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

Traccia Avemaria + Hymnus

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




Il risultato, dal punto di vista dell'audio, è che entrambe le tracce suonerà misto.

Prodotto di due segnali


Per moltiplicare due segnali, dobbiamo usare un modo analogo alla somma. Usiamo gli stessi file creati in precedenza.

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


Nota:dobbiamo usare l'operando  '.*' perché questo prodotto è realizzato, da valore a valore, sui file degli argomenti. Per ulteriori informazioni, fare riferimento al manuale delle operazioni del prodotto con matrici di Octave.

Traccia del segnale prodotto risultante

Effetto grafico della moltiplicazione di due segnali con una grande differenza di frequenza fondamentale (Principi di modulazione)

Passaggio 1:

Crea un segnale di frequenza audio con una frequenza di 220 Hz.

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


Passaggio 2:

Crea un segnale modulante a frequenza più alta di 22000 Hz.

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

Passaggio 3:

Moltiplicando e tracciando i due segnali.

>> plot(y1.*y2);


Moltiplicare un segnale per uno scalare

L'effetto della moltiplicazione di una funzione per uno scalare equivale a modificarne l'ambito e, in alcuni casi, il segno della fase. Dato uno scalare K, il prodotto di una funzione F(t) per lo scalare è definito come:

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

Trama del segnale originale
>> plot(y)

Traccia di un segnale ridotto in ampiezza di 0,2

>> plot(res1)


Traccia di un segnale ridotto in ampiezza di 0,5

>> plot(res2)


Traccia di un segnale con fase invertita

>> plot(res3)

Conclusione


Le operazioni matematiche di base, come la somma algebrica, il prodotto e il prodotto di una funzione per uno scalare sono la spina dorsale di operazioni più avanzate tra cui l'analisi dello spettro, la modulazione in ampiezza, la modulazione angolare, ecc. Nel prossimo tutorial, vedremo come effettuare tali operazioni e i loro effetti sui segnali audio.


Ubuntu
  1. Come configurare un cluster MongoDB utilizzando 3 nodi con Ubuntu 16?

  2. Come creare un server Minecraft con Hostinger, Ubuntu, Windows e macOS

  3. Come monitorare i file di registro del server con Logwatch su Debian e Ubuntu

  4. Elaborazione scientifica dell'audio, parte III - Come applicare gli effetti di elaborazione matematica avanzata sui file audio con Octave 4.0 su Ubuntu

  5. Elaborazione scientifica dell'audio, parte I - Come leggere e scrivere file audio con Octave 4.0.0 su Ubuntu

Come trovare ed eliminare file duplicati in Ubuntu usando Fdupes

Come trasferire in modo sicuro file tra sistemi Ubuntu utilizzando Croc

Come pulire il tuo sistema Ubuntu usando lo strumento Bleachbit

Come creare una cartella temporanea in Ubuntu usando MKTemp

Come creare un progetto HTML5 di base in Ubuntu usando Netbeans

Come rendere compatibile il file di testo creato in Ubuntu con il blocco note di Windows?