感悟及语谱图代码实现

2018-01-11  本文已影响0人  sunnylxs

今天看了杨澜采访李飞飞的视频和开讲啦施一公的视频,感触颇多,现在的社会太过于浮躁,多多听听正能量的东西是非常有必要的,李飞飞的成就让我很是钦佩,她对人工智能,计算机视觉的热爱很感染我,以及想为国家,为社会做出贡献的这颗心让我很感动,施一公等创建的西湖大学,相信未来会培养一批又一批的国家的栋梁之才,国家的繁荣发展要依靠青年也能成就青年,虽然现在只是一个小小的研究生,但是梦想还是要有的,万一实现了呢,哈哈。希望看到这个帖子的同学也能去看一下这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 

上一篇下一篇

猜你喜欢

热点阅读