Octave, el software equivalente a Matlab en Linux, tiene una serie de funciones y comandos que permiten la adquisición, grabación, reproducción y procesamiento digital de señales de audio para aplicaciones de entretenimiento, investigación, medicina o cualquier otra área científica. En este tutorial, usaremos Octave V4.0.0 en Ubuntu y comenzaremos a leer archivos de audio escribiendo y reproduciendo señales para emular sonidos utilizados en una amplia gama de actividades.
Nota que el enfoque principal de este tutorial no es instalar o aprender a usar un software de procesamiento de audio ya establecido, sino comprender cómo funciona desde el punto de vista del diseño y la ingeniería de audio.
Requisitos
El primer paso es instalar octave. Ejecute los siguientes comandos en una terminal para agregar Octave PPA en Ubuntu e instalar el software.
sudo apt-add-repository ppa:octave/stable
sudo apt-get update
sudo apt-get install octave
Paso 1:Octava de apertura.
En este paso abrimos el software haciendo clic en su icono, podemos cambiar el directorio de trabajo haciendo clic en el menú desplegable Explorador de archivos.
Paso 2:Información de audio
El comando "audioinfo" nos muestra información relevante sobre el archivo de audio que vamos a procesar.
>> info = audioinfo ('testing.ogg')
Paso 3:Lectura de un archivo de audio
En este tutorial leeré y usaré archivos ogg para los cuales es factible leer características como muestreo, tipo de audio (estéreo o mono), número de canales, etc. Debo mencionar que para los propósitos de este tutorial, todos los comandos utilizados se ejecutarán en la ventana de terminal de Octave. Primero, tenemos que guardar el archivo ogg en una variable. Nota:es importante que el archivo esté en la ruta de trabajo de Octave
>> file='yourfile.ogg'
>> [M, fs] = audioread(file)
Donde M es una matriz de una o dos columnas, dependiendo del número de canales y fs es la frecuencia de muestreo.
Hay algunas opciones que podemos usar para leer archivos de audio, como :
>> [y, fs] = audioread (filename, samples)
>> [y, fs] = audioread (filename, datatype)
>> [y, fs] = audioread (filename, samples, datatype)
Donde samples especifica los marcos inicial y final y datatype especifica el tipo de datos a devolver. Podemos asignar valores a cualquier variable:
>> samples = [1, fs)
>> [y, fs] = audioread (filename, samples)
Y sobre el tipo de datos:
>> [y,Fs] = audioread(filename,'native')
Si el valor es 'nativo', el tipo de datos depende de cómo se almacenen los datos en el archivo de audio.
Paso 4:Escribir un archivo de audio
Creando el archivo ogg:
Para ello, vamos a generar un archivo ogg con valores a partir de un coseno. La frecuencia de muestreo que usaré es de 44100 muestras por segundo y el archivo tendrá una duración de 10 segundos. La frecuencia de la señal del coseno es de 440 Hz.
>> filename='cosine.ogg';
>> fs=44100;
>> t=0:1/fs:10;
>> w=2*pi*440*t;
>> signal=cos(w);
>> audiowrite(filename, signal, fs);
Esto crea un archivo llamado 'coseno.ogg' en nuestro espacio de trabajo que contiene la señal del coseno.
Si reproducimos el archivo 'cosine.ogg', este reproducirá un Tono de 440 Hz que equivale a un tono musical 'A'. Si queremos ver los valores guardados en el archivo tenemos que 'leer' el archivo con la función 'audioread'. En otro tutorial, veremos cómo escribir un archivo de audio con dos canales.
Paso 5:Reproducir un archivo de audio
Octave, por defecto, tiene un reproductor de audio que podemos usar con fines de prueba. Use las siguientes funciones como ejemplo:
>> [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);
En las siguientes partes del tutorial, veremos características avanzadas de procesamiento de audio y posibles casos de uso para uso científico y comercial.