Matlab为我们提供了音频文件读取函数wavread, 以这个函数为基础可实现语音音频时域波形的绘制.
一开始我直接将.m4a文件改为.wav文件, 虽然语音文件能够通过播放器播放, 但Matlab无法读取. 为了实现格式的转换, 我下载了格式工厂, 在其中进行了.m4a格式到.wav格式的转换, 最终Matlab可正常读取这两个语音文件.
本程序中使用的两个语音文件分别为朗读"为什么要学习信号与系统"的男声语音和女生语音, 下面我们可以通过程序的运行结果直观地感受它们的不同.
% 读取男声语音文件
% x : 音频信号, Fs : 采样频率, Nbits : 采样时使用的位数
[x1, Fs1, Nbits1] = wavread('C:\Users\surface\Desktop\ZSY_Voice.wav');
% 把矩阵x中第一列元素赋值给x
x1 = x1(:,1);
% 将x中元素的个数赋值给N
N1 = length(x1);
% 按秒为单位绘制语音信号波形
t1 = (0 : N1 - 1) / Fs1;
% 第一幅图
figure(1);
% 绘制男生语音信号波形图
plot(t1, x1);
xlabel('time(s)');
ylabel('x(t)');
% sound(x, Fs); 播放音频信号x
% 读取女生语音文件
[x2, Fs2, Nbits2] = wavread('C:\Users\surface\Desktop\XWR_Voice.wav');
x2 = x2(:,1);
N2 = length(x2);
t2 = (0 : N2 - 1) / Fs2;
% 第二幅图
figure(2);
plot(t2, x2);