Octave, il software equivalente a Matlab in Linux, ha una serie di funzioni e comandi che consentono l'acquisizione, la registrazione, la riproduzione e l'elaborazione digitale di segnali audio per applicazioni di intrattenimento, ricerca, medicina o qualsiasi altra area scientifica. In questo tutorial, utilizzeremo Octave V4.0.0 in Ubuntu e inizieremo a leggere da file audio scrivendo e riproducendo segnali per emulare i suoni utilizzati in un'ampia gamma di attività.
Nota che l'obiettivo principale di questo tutorial non è installare o imparare a utilizzare un software di elaborazione audio già stabilito, ma piuttosto capire come funziona dal punto di vista del design e dell'ingegneria audio.
Prerequisiti
Il primo passo è installare Octave. Esegui i seguenti comandi in un terminale per aggiungere Octave PPA in Ubuntu e installare il software.
sudo apt-add-repository ppa:octave/stable
sudo apt-get update
sudo apt-get install octave
Passaggio 1:apertura dell'ottava.
In questo passaggio apriamo il software facendo clic sulla sua icona, possiamo cambiare la directory di lavoro facendo clic sul menu a discesa Browser file.
Fase 2:informazioni sull'audio
Il comando "audioinfo" ci mostra informazioni rilevanti sul file audio che elaboreremo.
>> info = audioinfo ('testing.ogg')
Fase 3:lettura di un file audio
In questo tutorial leggerò e utilizzerò file ogg per i quali è possibile leggere caratteristiche come campionamento, tipo di audio (stereo o mono), numero di canali, ecc. Devo menzionare che ai fini di questo tutorial, tutto i comandi utilizzati verranno eseguiti nella finestra del terminale di Octave. Innanzitutto, dobbiamo salvare il file ogg in una variabile. Nota:è importante che il file si trovi nel percorso di lavoro di Octave
>> file='yourfile.ogg'
>> [M, fs] = audioread(file)
Dove M è una matrice di una o due colonne, a seconda del numero di canali e fs è la frequenza di campionamento.
Ci sono alcune opzioni che possiamo usare per leggere i file audio, come :
>> [y, fs] = audioread (filename, samples)
>> [y, fs] = audioread (filename, datatype)
>> [y, fs] = audioread (filename, samples, datatype)
Dove samples specifica i frame iniziali e finali e il tipo di dati specifica il tipo di dati da restituire. Possiamo assegnare valori a qualsiasi variabile:
>> samples = [1, fs)
>> [y, fs] = audioread (filename, samples)
E sul tipo di dati:
>> [y,Fs] = audioread(filename,'native')
Se il valore è 'nativo', il tipo di dati dipende da come i dati sono archiviati nel file audio.
Fase 4:scrittura di un file audio
Creazione del file ogg:
A questo scopo, genereremo un file ogg con i valori di un coseno. La frequenza di campionamento che userò è di 44100 campioni al secondo e il file durerà 10 secondi. La frequenza del segnale coseno è 440 Hz.
>> filename='cosine.ogg';
>> fs=44100;
>> t=0:1/fs:10;
>> w=2*pi*440*t;
>> signal=cos(w);
>> audiowrite(filename, signal, fs);
Questo crea un file chiamato 'cosine.ogg' nel nostro spazio di lavoro che contiene il segnale del coseno.
Se riproduciamo il file 'cosine.ogg', questo riprodurrà un Tono a 440 Hz che equivale a un tono musicale 'LA'. Se vogliamo vedere i valori salvati nel file dobbiamo 'leggere' il file con la funzione 'audioread'. In un ulteriore tutorial vedremo come scrivere un file audio con due canali.
Fase 5:riproduzione di un file audio
Octave, per impostazione predefinita, dispone di un lettore audio che possiamo utilizzare a scopo di test. Utilizzare le seguenti funzioni come esempio:
>> [y,fs]=audioread('yourfile.ogg');
>> player=audioplayer(y, fs, 8)
scalar structure containing the fields:
BitsPerSample = 8
CurrentSample = 0
DeviceID = -1
NumberOfChannels = 1
Running = off
SampleRate = 44100
TotalSamples = 236473
Tag =
Type = audioplayer
UserData = [](0x0)
>> play(player);
Nelle prossime parti del tutorial, vedremo funzionalità avanzate di elaborazione audio e possibili casi d'uso per uso scientifico e commerciale.