【转载】语音短时平均能量的实现

语音短时平均能量的实现

一.实验目的:

1.熟悉Matlab基本程序的运用。

2.充分理解取不同窗长时的语音短时平均能量的变化情况。

3.熟悉Matlab编程语言在语音信号处理中的作用。

4.能够实现程序的重新编制。

二.实验原理:

定义n时刻某语音信号的短时平均能量为:

式中N为窗长,可见短时平均能量为为一帧样点值的甲醛平方和。特殊地,当窗函数为矩形窗时,有

三.实验要求:

1.实验前自己用Cool Edit音频编辑软件录制声音“我到北京去”,并把它保存为.txt文件。

2.编程实现不同矩形窗长N=50、100、200、800的短时平均能量。

3.用Matlab画出不同窗长的短时平均能量的图形。

4.写出实验报告,分析实验结果。

四.实验条件:

计算机   Matlab软件

五.实验步骤:

1.用Cooledit读入语音“我到北京去”。设置采样率为8kHz,16位,单声道。

2.将读入的语音wav文件保存为txt文件,即zqq.txt文件。

3.把保存的文件zqq.txt文件读入Matlab。

4.对采样到的语音样点值进行分帧。

5.对照不同矩形窗长N的短时平均能量,画出图形。

六.实验程序及数据:

    fid=fopen('zqq.txt','rt');

    x=fscanf(fid,'%f');

fclose(fid);

s=fra(25,50,x)

s2=s.^2;

energy=sum(s2,2)

subplot(2,2,1)

plot(energy)

xlabel('帧数')

ylabel('短时能量 E')

legend('N=50')

axis([0,1500,0,2* 10^10])

s=fra(60,100,x)

s2=s.^2;

energy=sum(s2,2)

subplot(2,2,2)

plot(energy)

xlabel('帧数')

ylabel('短时能量 E')

legend('N=100')

axis([0,750,0,4* 10^10])

s=fra(250,400,x)

s2=s.^2;

energy=sum(s2,2)

subplot(2,2,3)

plot(energy)

xlabel('帧数')

ylabel('短时能量 E')

legend('N=400')

axis([0,190,0,1.5* 10^11])

s=fra(500,800,x)

s2=s.^2;

energy=sum(s2,2)

subplot(2,2,4)

plot(energy)

xlabel('帧数')

ylabel('短时能量 E')

legend('N=800')

axis([0,95,0,3* 10^11])

其中fra()为分帧函数,其MATLAB程序如下:

    function f=fra(len,inc,x)

fh=fix(((size(x,1)-len)/inc)+1)

f=zeros(fh,len);

    i=1;n=1;

while i<=fh

        j=1;

        while j<=len

            f(i,j)=x(n);

            j=j+1;n=n+1;

        end

        n=n-len+inc;

        i=i+1;

End




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值