数字语音处理B第二次实验教学内容.docx

上传人:b****1 文档编号:785752 上传时间:2022-10-13 格式:DOCX 页数:16 大小:475.24KB
下载 相关 举报
数字语音处理B第二次实验教学内容.docx_第1页
第1页 / 共16页
数字语音处理B第二次实验教学内容.docx_第2页
第2页 / 共16页
数字语音处理B第二次实验教学内容.docx_第3页
第3页 / 共16页
数字语音处理B第二次实验教学内容.docx_第4页
第4页 / 共16页
数字语音处理B第二次实验教学内容.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

数字语音处理B第二次实验教学内容.docx

《数字语音处理B第二次实验教学内容.docx》由会员分享,可在线阅读,更多相关《数字语音处理B第二次实验教学内容.docx(16页珍藏版)》请在冰豆网上搜索。

数字语音处理B第二次实验教学内容.docx

数字语音处理B第二次实验教学内容

数字语音处理B

2016–2017学年第2学期电信1405龙为花

第二次实验

一、实验目的

1.掌握短时傅里叶变换的定义,并理解其两种解释

2.理解窗函数对短时傅里叶谱的影响,并能根据需要选择适当的窗函数

3.理解同态信号处理的原理

4.掌握倒谱的定义及计算方法

5.对以上各项能用Matlab代码实现,并能画出相应谱图

二、实验内容

1.画出ah第20帧单帧语音时域图,窗长20ms,帧移10ms,同时加矩形窗和hamming窗

分帧函数:

function[frameSet,timeAxis,frameCount]=enframe(data,fs,timeperFrame,overlapRate,winF)

winfunc=str2func(winF);

ndata=length(data(:

));

frameLength=fs*timeperFrame*0.001;

nframeLength=length(winfunc(frameLength));%取窗长

overlap=frameLength*overlapRate;

inc=frameLength-overlap;

if(nframeLength==1)

len=frameLength;

else

len=nframeLength;

end

frameCount=fix((ndata-overlap)/inc);%计算帧数

frameSet=zeros(len,frameCount);

startIndexf=(0:

(frameCount-1))*inc;%每帧在数据data中开始的位置

startIndexs=(1:

len);

startIndexsT=startIndexs(:

);

frameSet(:

)=data(startIndexsT(:

ones(frameCount,1))+startIndexf(ones(1,len),:

));

w=winfunc(frameLength);

if(nframeLength>1)

frameSet=frameSet.*w(:

ones(frameCount,1));

end

timeAxis=(((1:

frameCount)-1)*inc+frameLength/2)/fs;%求出每帧对应的时间

主函数:

clc

clearall

closeall

%----------------------------------------

loadah;

x1=enframe(data,fs,20,0.5,'boxcar');

x2=enframe(data,fs,20,0.5,'hamming');

plot(x1(:

20),'g','LineWidth',2);

holdon;

plot(x2(:

20),'b','LineWidth',2);

legend('矩形窗信号','汉明窗信号');

xlabel('时间(采样点数)');ylabel('幅度');

suptitle('电信1405龙为花0121409341029')

图1:

语音ah第20帧时域波形图与加hammming窗10k采样

2.语音单帧频谱图

clc

clearall

closeall

%----------------------------------------

loadah;

fs=10000;

x2=enframe(data,fs,20,0.5,'boxcar');

x1=enframe(data,fs,20,0.5,'hamming');

u1=x1(:

20);%取得一帧数据

u2=x2(:

20);

N=1024;

t=(0:

N-1)/fs;

y1=20*log10(fft(u1,N));

y2=20*log10(fft(u2,N));

f=(0:

511)*fs/1024;

figure

(1);

xlabel('Hz');

ylabel('db');

plot(f,y1(1:

512),'r','LineWidth',1);%做原始语音信号的FFT频谱

legend('汉明窗的频谱');

figure

(2);

plot(f,y2(1:

512),'b','LineWidth',1);

xlabel('Hz');

ylabel('db');

legend('矩形窗的频谱');

suptitle('电信1405龙为花0121409341029')

图2:

ah第20帧单帧语音频谱图,窗长20ms,帧移10ms,矩形窗和hamming窗,10k采样

 

3.语音频域功率谱图

clc

clearall

closeall

%----------------------------------------

loadah;

fs=10000;

x2=enframe(data,fs,20,0.5,'boxcar');

x1=enframe(data,fs,20,0.5,'hamming');

u1=x1(:

20);%取得一帧数据

u2=x2(:

20);

N=1024;

t=(0:

N-1)/fs;

y1=20*log10(fft(u1,N));

y2=20*log10(fft(u1,N).^2);

f=(0:

511)*fs/1024;

figure

(1);

plot(f,y1(1:

512),'b','LineWidth',1.5);%做原始语音信号的频谱

holdon;

plot(f,y2(1:

512),'r','LineWidth',1.5);%做原始语音信号的功率谱

xlabel('Hz');

ylabel('db');

suptitle('电信1405龙为花0121409341029')

legend('汉明窗的频谱','汉明窗功率谱');

z1=20*log10(fft(u2,N));

z2=20*log10(fft(u2,N).^2);

figure

(2);

plot(f,z1(1:

512),'b','LineWidth',1);%做原始语音信号的频谱

holdon;

plot(f,z2(1:

512),'r','LineWidth',1);%做原始语音信号的功率谱

xlabel('Hz');

ylabel('db');

suptitle('电信1405龙为花0121409341029')

legend('矩形窗的频谱','矩形窗功率谱');

图3:

Ah第20帧时域波形图,10k采样,帧长20ms,hamming窗

图4:

Ah第20帧时域波形图,10k采样,帧长20ms,矩形窗

4.语谱图

(1)

clc

clear

closeall

[x,fs]=audioread('E:

\1.wav');

m1=42230;

m2=138000;

x=x(m1:

m2);

win=0.01;inc=win/2;

winlen=win.*fs;

inclen=inc.*fs;

amp1=enframe(filter([1-0.9375],1,x),hamming(winlen),inclen)';

n=fix((length(x)-winlen+inclen)/inclen);

w=winlen/2+1;

n2=1:

w;

freq=(n2-1)*fs/winlen;

Y=fft(amp1);

Yn=Y(n2,:

);clf;

frameTime=(1:

n)*inclen;

imagesc(frameTime,freq,20*log10(abs(Yn)+eps));

axisxy;

xlabel('时间/s)');ylabel('频率/Hz');

colormap(jet);

suptitle('电信1405龙为花0121409341029')

图5:

语音WHUT语谱图,10k采样

(2)

clc

clear

closeall

[x,fs]=audioread('E:

\1.wav');

m1=42230;

m2=138000;

x=x(m1:

m2);

win=0.04;inc=win/2;

winlen=win.*fs;

inclen=inc.*fs;

amp1=enframe(filter([1-0.9375],1,x),hamming(winlen),inclen)';

n=fix((length(x)-winlen+inclen)/inclen);

w=winlen/2+1;

n2=1:

w;

freq=(n2-1)*fs/winlen;

Y=fft(amp1);

Yn=Y(n2,:

);clf;

frameTime=(1:

n)*inclen;

imagesc(frameTime,freq,20*log10(abs(Yn)+eps));

axisxy;

xlabel('时间/s');ylabel('频率/Hz');

colormap(jet);

suptitle('电信1405龙为花0121409341029')

图6

4.2

(1)

clc

clear

closeall

load('should.mat');

fs=10000;

win=0.01;inc=win/2;

winlen=win.*fs;

inclen=inc.*fs;

amp1=enframe(filter([1-0.9375],1,data),hamming(winlen),inclen)';

n=fix((length(data)-winlen+inclen)/inclen);

w=winlen/2+1;

n2=1:

w;

freq=(n2-1)*fs/winlen;

Y=fft(amp1);

Yn=Y(n2,:

);clf;

frameTime=(1:

n)*inclen;

imagesc(frameTime,freq,20*log10(abs(Yn)+eps));

axisxy;

xlabel('时间/s');ylabel('频率/Hz');

colormap(jet);

suptitle('电信1405龙为花0121409341029')

图7

(2)

clc

clear

closeall

load('should.mat');

fs=10000;

win=0.04;inc=win/2;

winlen=win.*fs;

inclen=inc.*fs;

amp1=enframe(filter([1-0.9375],1,data),hamming(winlen),inclen)';

n=fix((length(data)-winlen+inclen)/inclen);

w=winlen/2+1;

n2=1:

w;

freq=(n2-1)*fs/winlen;

Y=fft(amp1);

Yn=Y(n2,:

);clf;

frameTime=(1:

n)*inclen;

imagesc(frameTime,freq,20*log10(abs(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1