做了个matlab的音频处理小作业,顺手写个教程
Matlab 音频信号处理
一、读取音频文件
函数名:$audioread$
调用格式:
- [y,Fs] = audioread(filename)
- [y,Fs] = audioread(filename,samples)
使用方法:
1
| [y,Fs]=audioread('C:\Users\user\Desktop\audio_signal_processing\demo.mp4');
|
Fs:采样频率,1秒内对连续的音频信号取的点的个数
y:输出的音频数字信号,默认是n行2列,其中2的意思是,这个音频信号是两个声道的,n的值等于该音频信号的时长乘采样频率Fs。
samples :音频读取区域,samples其实是一个数组,意思就是一段音频比如是1分钟,但是我只需要读取一部分,比如0-20s,20s-40s,40s-最后
1 2 3
| [y,Fs]=audioread('demo.mp4'); sound(y,Fs); clear sound;
|
二、倍乘信号
三、相加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| samples1 = [1,10*Fs]; samples2 = [10*Fs,20*Fs]; [y1,Fs]=audioread('demo.mp4',samples1); [y2,Fs]=audioread('demo.mp4',samples2);
[m,n]=size(y1); [m0,n0]=size(y2); a=zeros(abs(m-m0),n); if length(y1)<length(y2) z=[y1;a]; y3=z+y2; else z=[y2;a]; y3=z+y1; end; sound(y3,Fs)
|
四、相乘
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| samples1 = [1,10*Fs]; samples2 = [10*Fs,20*Fs]; [y1,Fs]=audioread('demo.mp4',samples1); [y2,Fs]=audioread('demo.mp4',samples2);
[m,n]=size(y1); [m0,n0]=size(y2); a=zeros(abs(m-m0),n); if length(y1)<length(y2) z=[y1;a]; y3=z.*y2; else z=[y2;a]; y3=z.*y1; end; sound(y3,Fs)
|
五、微分
1 2
| dy = diff(y); sound(dy,Fs);
|
六、积分
1 2
| y2 = cumtrapz(y); sound(y2,Fs);
|
七、尺度
八、反褶
1 2 3 4
| L = size(y,1); n = 1:L; y2 = y(L-n+1,1); sound(y2,Fs);
|
九、平移
1 2 3
| a=zeros(100000,2); %零矩阵 y2 = [a;y]; sound(y2,Fs);
|