一、读取音频文件

函数名称:audioread

调用格式:

  • [y,Fs] = audioread(filename)
  • [y,Fs] = audioread(filename,samples)

变量含义

filename:文件的位置加名字,常用的在桌面的文件,音频格式为WAV,注意文件名带引号,特别注意的是,如果文件是在MATLAB菜单栏下的当前文件路径下,可以只写文件名,如果不在这个路径里面调用,需要把完整的全部地址写进去,程序如下

[y,Fs]=audioread('C:\Users\Administrator\Desktop\1.wav');

Fs:采样频率,1秒内对连续的音频信号取的点的个数
y:输出的音频数字信号,默认是n行2列,其中2的意思是,这个音频信号是两个声道的,n的值等于该音频信号的时长乘采样频率Fs。
samples :音频读取区域,samples其实是一个数组,意思就是一段音频比如是1分钟,但是我只需要读取一部分,比如0-20s,20s-40s,40s-最后,那么执行下面程序可以实现

Fs = 48000;         		%%定义采样频率(系统默认的)
samples1 = [1,20*Fs];        
samples2 = [20*Fs,40*Fs];
samples3 = [40*Fs,inf];
[y1,Fs]=audioread('1.wav',samples1);
[y2,Fs]=audioread('1.wav',samples2);
[y3,Fs]=audioread('1.wav',samples3);

二、播放音频文件

函数名称:sound

调用格式:sound(y,Fs)

播放一个音频文件只需要给出两个参数,好奇的我突发奇想写了下面几条语句

[y,Fs]=audioread('1.wav');
sound(y,Fs);
sound(y,0.5*Fs);
sound(y,2*Fs);

依次运行以后发现,改了这个Fs,好像就是改变了语速,也就是Fs是播放音频的频率,貌似就简单完成了语速的调整,当然可以也可以对y进行倍数的调整,看一下效果。不过突然出现个问题,音频时间太长了,MATLAB一直在那里放,怎么让他停下来呢?只需要在命令行写下面一条语句,按回车键

>> clear sound
>> 

三、生成音频文件

函数名称:audiowrite

调用格式:audiowrite(filename,y,Fs)

y和Fs是需要生成的音频文件的音频信息和采集频率,必须事先生成好数据,直接写会报错。
下面程序实现了将原音频信号截取了12-26s,并保存成一个新的文件,执行程序以后,桌面会多一个名字为2的音频文件,格式是.WAV

%%当前默认路径是桌面

Fs = 48000;
[y,Fs]=audioread('1.wav',[12*Fs,26*Fs]);
audiowrite('2.wav',x1,Fs);
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐