感悟及语谱图代码实现
今天看了杨澜采访李飞飞的视频和开讲啦施一公的视频,感触颇多,现在的社会太过于浮躁,多多听听正能量的东西是非常有必要的,李飞飞的成就让我很是钦佩,她对人工智能,计算机视觉的热爱很感染我,以及想为国家,为社会做出贡献的这颗心让我很感动,施一公等创建的西湖大学,相信未来会培养一批又一批的国家的栋梁之才,国家的繁荣发展要依靠青年也能成就青年,虽然现在只是一个小小的研究生,但是梦想还是要有的,万一实现了呢,哈哈。希望看到这个帖子的同学也能去看一下这2个视频,会有所收获的。
下面是对文件夹里声所有的.wav文件提取语谱图特征的基于matlabde 的代码,注释非常清晰了
mkdir('general');%创建保存声谱图的文件夹
file = 'C:\Users\li\Desktop\无噪音频\general\'; % 语音文件夹
file1 = strcat(file, '*.wav');
file2=dir(file1);%搜索.wav 后缀的文件
k=length(file2);%统计文件的数目
R=1024;%设置窗函数长度
window=hamming(R);%使用汉明窗
N=1024;%短时傅立叶函数点数
L=512;%步长
overlap=R-L;%窗重叠点数
for i=1:k
file3 = strcat(file, file2(i).name);
[x,fs]=audioread(file3);%读取.au 文件
xx=double(x);%预加重处理
xx=filter([1 -0.97],1,xx);
%str1 = strcat('C:\Users\li\Desktop\yinpin\琵琶夹\trainpp\bad\classicalshengputu\', file2(i).name);%记录.wav 文件名字
str1 = strcat('C:\Users\li\Desktop\无噪音频\general\general\', 'general');%记录.wav 文件名字
figure('visible','off')
%x= awgn(x,5,'measured','linear');
[S,F,T]=spectrogram(xx,window,overlap);%生成声谱图
y=20*log10(abs(S)+eps);%如需要在转换实数和虚数
%[y,PS] = mapminmax(y,0,1);%如需要归一化成[0,1]调用
[y,PS] = mapminmax(y,-1,1);%如需要归一化成[-1,1]调用
y = y*255;%归一化ss后需转化成声谱图调用
y=uint8(y);%归一化后需转化成声谱图调用
axis off;%关闭坐标
imagesc(y);%把矩阵绘制成图时调用,imagesc(A) 将矩阵A中的元素数值按大小转化为不同颜色
%colormap gray %如果需要声谱图为灰度声谱图调用
str2=strcat(str1,'_');
str2=strcat(str2,num2str(i-1));
set(gcf,'position',[0,0,200,256]);%设定 figure 的位置和大小,此处大小为 200*200
set(gca,'position',[0 0 1 1]);%调整坐标轴位置时调用,去掉边框,不去掉保存会有一圈灰色的
f=getframe(gcf); %直接保存为声谱彩图,大小由上面呢参数决定
imwrite(f.cdata,strcat(str2,'.png'),'png');
close(gcf)
end