科学音频处理,第一部分 - 如何读取和写入音频文件与Ubuntu上的Octave 4.0.0

Octave,在Linux中与Matlab相当的软件,具有许多功能和命令,允许采集,记录,回放和数字...

Octave是Matlab在Linux中的等效软件,它具有许多功能和命令,可用于娱乐应用,研究,医疗或任何其他科学领域的音频信号的采集,记录,播放和数字处理。 在本教程中,我们将在Ubuntu中使用Octave V4.0.0,并将通过写入和播放信号开始从音频文件读取,以模拟广泛活动中使用的声音。

请注意 ,本教程的主要重点不是安装或学习使用已经建立的音频处理软件,而是从设计和音频工程的角度了解其工作原理。

先决条件

第一步是安装八度。 在终端中运行以下命令,在Ubuntu中添加Octave PPA,并安装软件。

sudo apt-add-repository ppa:octave/stable
sudo apt-get update
sudo apt-get install octave

第1步:打开八度。

在这一步中,我们通过点击它的图标打开软件,我们可以通过点击文件浏览器下拉菜单来更改工作目录。

开启八度4.0

第2步:音频信息


命令“audioinfo”显示有关我们将要处理的音频文件的相关信息。

>> info = audioinfo ('testing.ogg')


在Octave中使用audioinfo

第3步:读取音频文件


在本教程中,我将阅读并使用ogg文件,它可以读取特征,如采样,音频类型(立体声或单声道),通道数等。我应该提到,为了本教程的目的,所有使用的命令将在八度的终端窗口中执行。 首先,我们必须将ogg文件保存在一个变量中。 注意: 文件必须位于Octave的工作路径中很重要

>> file='yourfile.ogg'

>> [M, fs] = audioread(file)


其中M是一列或两列的矩阵,取决于通道数, fs是采样频率。

八度 - 将音频文件读入变量。

八度矩阵

八度频繁

我们可以使用一些选项来读取音频文件,例如:

>> [y, fs] = audioread (filename, samples)

>> [y, fs] = audioread (filename, datatype)

>> [y, fs] = audioread (filename, samples, datatype)


where 示例指定起始和结束帧, 数据类型指定要返回的数据类型。 我们可以为任何变量赋值:

>> samples = [1, fs)

>> [y, fs] = audioread (filename, samples)


关于数据类型:

>> [y,Fs] = audioread(filename,'native')


如果值为“ native ”,则数据类型取决于数据如何存储在音频文件中。

第4步:编写音频文件

创建ogg文件:

为此,我们将生成一个带余弦值的ogg文件。 我将使用的抽样频率是每秒44100个样本,文件将持续10秒。 余弦信号的频率为440 Hz。

>> filename='cosine.ogg';
>> fs=44100;
>> t=0:1/fs:10;
>> w=2*pi*440*t;
>> signal=cos(w);
>> audiowrite(filename, signal, fs);

这将在我们的工作区中创建一个包含余弦信号的名为' cosine.ogg '的文件。

余弦文件

如果我们播放' cosine.ogg '文件,那么这将重现一个相当于“ A ”音调的440Hz音调。 如果我们想看到文件中保存的值,我们必须用' audioread '功能' 读取 '文件。 在另一个教程中,我们将看到如何使用两个通道编写音频文件。

第5步:播放音频文件


Octave,默认情况下,有一个音频播放器,我们可以用于测试目的。 使用以下功能作为示例:

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


在本教程的下一部分中,我们将看到高级音频处理功能和可用于科学和商业用途的用例。