heiweibo 发表于 2007-5-3 16:07

关于小波分解语音信号的问题

最近在做一个实验,需要将语音信号分段,每段16个点,然后分别做DWT变换。然后不做任何处理,再做IDWT变换。但是得到的信号失真很大。百思不得其解,希望大家想想办法,谢谢了、
   代码如下


clear all;
clc;
%读入声音
=wavread('ceshilong.wav');
AA=aa';
A(1:80000)=AA(1:80000);
for i=1:65536 % 4096*16=65536,候采样频率是22.05KHZ
   Ae(i)=A(i);
end

for k=1:4096
    %将原始音频信号分段,每段16个数据
    Aef(k,(1:16))=Ae(((k-1)*16+1):((k-1)*16+16));
    %将每个音频段进行dwt变换
    =wavedec(Aef,3,'db4');
   ca3=appcoef(c,l,'db4',3);
    =detcoef(c,l,);
    c1_m=;
    A_m(k,(1:16))=waverec(c1_m,l,'db4');
   Aey(1,(((k-1)*16+1):((k-1)*16+16)))=A_m(k,(1:16));
end
Am=Aey;
wavwrite(Am,fs,nbits,'DWT.wav');

subplot(211)
Aw=(Aw-min(min(Aw)))/(max(max(Aw))-min(min(Aw)))*225;
plot(Aw);
xlabel('采样点数');
ylabel('归一化幅度');
title('变换后的语音图像')
subplot(212)
A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225;
plot(A);
xlabel('采样点数');
ylabel('归一化幅度');
title('原始语音图像')
toc;

songzy41 发表于 2007-5-4 10:09

把下语句
=wavedec(Aef,3,'db4');
修改为
=wavedec(Aef(k,:),3,'db4');

heiweibo 发表于 2007-5-4 19:00

问题解决了

太感谢songzy41,原来问题出在这里,真的很感:@)
页: [1]
查看完整版本: 关于小波分解语音信号的问题