java audio 分帧_语音信号的分帧加窗的matlab实现

语音信号的分帧加窗的matlab实现

function Seg=segment(signal,W,SP,Window)

if nargin<3

SP=.4;

end

if nargin<2

W=256;

end

if nargin<4

Window=hamming(W);

end

Window=Window(:); %make it a column vector

L=length(signal);

SP=fix(W.*SP);

N=fix((L-W)/SP +1); %number of segments

Index=(repmat(1:W,N,1)+repmat((0:(N-1))'*SP,1,W))';

hw=repmat(Window,1,N);

Seg=signal(Index).*hw;

语音信号处理预加重、加窗分帧matlab程序

%获取语音信号

[filename,pathname]=uigetfile('*.wav','choose a audio file:');

[wavin,fs,nbits]=wavread([pathname filename]);

wav_l=length(wavin); %采样点数,length()返回值是标量

frame_l=0.04*fs; %根据fs选择帧长,

step_l=floor(0.5*frame_l); %设置帧移

num_frame=floor((wav_l-frame_l)/step_l)+1; %确定帧数

win_ham=hamming(frame_l); %在做fft之前,为移除直流分量和加重高频分量,采用汉明窗,对信号进行加权

%加窗处理用来消除分帧时带来的截断效应

%加窗,分帧(矩阵每一行为一帧)

for i=1:num_frame

n1=(i-1)*step_l+1;

n2=(i-1)*step_l+frame_l;

zy(i,:)=(win_ham').*(yt(n1:n2)'); %存储每一帧噪音(行向量)%win_ham、yt是列向量,需转置

yy(i,:)=(win_ham').*(wavin(n1:n2)'); %存储每一帧纯净语音

end

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值