hedgehogli

导航

Matlab 语谱图(时频图)绘制与分析

Matlab 语谱图(时频图)绘制与分析


语谱图:先将语音信号作傅里叶变换,然后以横轴为时间,纵轴为频率,用颜色表示幅值即可绘制出语谱图。在一幅图中表示信号的频率、幅度随时间的变化,故也称“时频图”。

%matlab 2016a
%需要先安装语音处理工具箱(matlab_voicebox)


[Y,FS,WMODE,FIDX]=readwav('sound0_10','s',-1,-1);
	%Y为读到的双声道数据
	%FS为采样频率
	%这里的输入参数sound0_10为双声道数字0到10的声音文件(sound0_10.wav)
	%其它参数的功能忘了

Y1 = Y(:,1);		%Y为双声道数据,取第2通道
plot(Y1);			%画Y1波形图
grid on;
specgram(Y1,2048,44100,2048,1536);
	%Y1为波形数据
	%FFT帧长2048点(在44100Hz频率时约为46ms)
	%采样频率44.1KHz
	%加窗长度,一般与帧长相等
	%帧重叠长度,此处取为帧长的3/4


图1 数字0-10波形图


图2 数字0-10语谱图


图3

语谱图简单分析

1、san(1),si(4),shi(2)声母相同,图2中3,4,10三个音的头部相似。(从图中还能看出读音不准,4、10平卷舌不分。本人普通话三级甲等,😦 )

2、语谱图中低频部分频率幅值随时间的变化趋势非常清楚地显示了声调。

3、从图3可以预测,结合时域和频域数据,中文的小词汇量孤立词语音识别,应该没有太大难度。

** 相关文件可参考: https://github.com/hedgeli/ChineseSpeakRecognize **

posted on 2016-09-28 22:29  hedgehogli  阅读(69266)  评论(6编辑  收藏  举报