• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

基于MATLAB的语音的短时平均能量分析

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
  • 题目要求
    编程实现一句话语音的短时能量曲线,并比较窗长、窗口形状(以矩形窗和哈明窗为例)对短时平均能量的影响。
  • 常见问题
    1.未定义与 ‘double’ 类型的输入参数相对应的函数 ‘enframe’
    解决办法:下载MATLAB voicebox工具包
function frameTime=frame2time(frameNum,framelen,inc,fs)
% ================= 计算分帧后每一帧对应的时间=====================
% ================= 输     入 ===================================
%frameNum          :  总帧数
%framelen          : 帧长
%inc               :  帧移
%fs                : 采样频率
%================== 输     出 ====================================
%frametime         : 每帧的时间,即取这一帧数据中间位置的时间
frameTime=(((1:frameNum)-1)*inc+framelen/2)/fs;

2.未定义与 ‘double’ 类型的输入参数相对应的函数 ‘frame2time’
可在MATLAB toolbox\voicebox文件夹中添加frame2time.m文件

function frameTime=frame2time(frameNum,framelen,inc,fs)
% ================= 计算分帧后每一帧对应的时间=====================
% ================= 输      入 ==================================
%frameNum       :  总帧数
%framelen       :  帧长
%inc            :  帧移
%fs             : 采样频率%
================== 输      出 ====================================
%frametime      : 每帧的时间,即取这一帧数据中间位置的时间
frameTime=(((1:frameNum)-1)*inc+framelen/2)/fs;

检验工具包是否安装成功:

>> addpath(genpath('D:\MATLAB R2014a\toolbox\voicebox\voicebox'))
>> savepath
>> which activlev.m

如果结果为D:\MATLAB R2014a\toolbox\voicebox\voicebox\activlev.m即表示输出成功。

  • 源代码
clear
[x,Fs]=wavread('E:\szyy.wav');       % 读入数据文件
x=x(:,1);                 % 双声道变单声道
wlen=200; inc=80;          % 给出帧长和帧移
win=hanning(wlen);         % 给出海宁窗
N=length(x);               % 信号长度
X=enframe(x,win,inc)';     % 分帧
fn=size(X,2);              % 求出帧数
time=(0:N-1)/Fs;           % 计算出信号的时间刻度
for i=1 : fn
    u=X(:,i);              % 取出一帧
    u2=u.*u;               % 求出能量
    En(i)=sum(u2);         % 对一帧累加求和
end
subplot 211; plot(time,x,'k'); % 画出时间波形 
title('语音波形');
ylabel('幅值'); xlabel(['时间/s' 10 '(a)']);
frameTime=frame2time(fn,wlen,inc,Fs);   % 求出每帧对应的时间
subplot 212; plot(frameTime,En,'k')     % 画出短时能量图
title('短时能量');
ylabel('幅值'); xlabel(['时间/s' 10 '(b)']);

矩形窗(窗长200帧)短时平均能量图如下:

矩形窗 窗长150帧

矩形窗 窗长100帧

矩形窗 窗长50帧

哈明窗 窗长1000帧

哈明窗 窗长200帧

哈明窗 窗长150帧

哈明窗 窗长100帧

哈明窗 窗长50帧


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi 的接口(2) - 第一个例子发布时间:2022-07-18
下一篇:
DELPHI之崩溃地址排错代码查看转发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap