Matlab读取和写入音频文件

529 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 26 天,点击查看活动详情

最近在做音视频开发,正好分享一点简单的matlab 音频处理

说明 示例 audiowrite(filename,y,Fs) 以采样率 Fs 将音频数据矩阵 y 写入名为 filename 的文件。filename 输入还指定了输出文件格式。输出数据类型取决于音频数据 y 的输出文件格式和数据类型。 示例 audiowrite(filename,y,Fs,Name,Value) 使用一个或多个 Name,Value 对组参数指定的其他选项。

写入音频文件

从文件 handel.mat 加载示例数据

load handel.mat

工作区现在包含音频数据矩阵 y 和采样率 Fs

使用 audiowrite 函数将数据写入当前文件夹中名为 handel.wav 的 WAVE 文件。

audiowrite('handel.wav',y,Fs)clear y Fs

audiowrite 函数还可以写入其他音频文件格式,如 OGG、FLAC 和 MPEG-4 AAC。

获取有关音频文件的信息

使用 audioinfo 函数获取有关 WAVE 文件 handel.wav 的信息。

info = audioinfo('handel.wav')info =              Filename: 'pwd\handel.wav'    CompressionMethod: 'Uncompressed'          NumChannels: 1           SampleRate: 8192         TotalSamples: 73113             Duration: 8.9249                Title: []              Comment: []               Artist: []        BitsPerSample: 16

audioinfo 返回一个 1×1 结构体数组。SampleRate 字段指示音频数据的采样率,以赫兹为单位。Duration 字段指示文件的持续时间,以秒为单位。

读取音频文件

使用 audioread 函数读取文件 handel.wavaudioread 函数可以支持 WAVE、OGG、FLAC、AU、MP3 和 MPEG-4 AAC 文件。

[y,Fs] = audioread('handel.wav');

播放音频。

sound(y,Fs)

也可以交互方式读取 WAV、AU 或 SND 文件。选择 导入数据或双击当前文件夹浏览器中的文件名。

绘制音频数据图

创建一个与 y 长度相同的向量 t,表示经过的时间。

t = 0:seconds(1/Fs):seconds(info.Duration);t = t(1:end-1);

将音频数据绘制为时间的函数。

plot(t,y)xlabel('Time')ylabel('Audio Signal')

图片