声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1973|回复: 1

[编程技巧] 求助语谱图峰值点提取

[复制链接]
发表于 2009-5-4 16:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
Winsiz = 256; Shift = 32; Base = 0; [Sg , Fs] = wavread('E:\1.wav');
n = floor((length(Sg) - Winsiz)/Shift)+1;%总的帧数
A = zeros(Winsiz/2+1 , n);
for i = 1:n
    n1 = (i-1)*Shift + 1;%每帧的帧头
    n2 = n1 + Winsiz - 1;%每帧的帧尾
    s = Sg(n1:n2); s = s.*hanning(Winsiz);%加窗
    z = fft(s);%求fft
    z = z(1:(Winsiz/2)+1); z = z.*conj(z);%复数求共轭,并计算能量
    z = 10 * log10(z);%得到语谱图的db表示
    A(:,i) = z;
end
L0 = (A > Base); L1 = (A < Base);
B = A.*L0 + Base*L1;%滤除db小于0的点
L = (B-Base)./(max(max(B))-Base);%归一化
y = [0:Winsiz/2]*Fs/Winsiz; x = [0:n-1]*Shift/1000;

figure(1); mesh(x,y,A); xlabel('时间(s)'); ylabel('频率(Hz)'); zlabel('分贝(db)'); title('mesh plot');
以上是画谱图的程序,从网上找的~接下来老师让我做的是要每0.1秒提取一个峰值点(0.1s内的极值),还要记录下相应的横纵坐标(也就是时间和频率) 有没大牛肯帮帮我啊 :'(

[ 本帖最后由 ChaChing 于 2009-5-4 21:12 编辑 ]
回复
分享到:

使用道具 举报

发表于 2009-5-4 21:13 | 显示全部楼层
help max
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-30 14:15 , Processed in 0.061466 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表