数字变声器设计方案文档格式.docx

上传人:b****1 文档编号:13055511 上传时间:2022-10-03 格式:DOCX 页数:10 大小:66.70KB
下载 相关 举报
数字变声器设计方案文档格式.docx_第1页
第1页 / 共10页
数字变声器设计方案文档格式.docx_第2页
第2页 / 共10页
数字变声器设计方案文档格式.docx_第3页
第3页 / 共10页
数字变声器设计方案文档格式.docx_第4页
第4页 / 共10页
数字变声器设计方案文档格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

数字变声器设计方案文档格式.docx

《数字变声器设计方案文档格式.docx》由会员分享,可在线阅读,更多相关《数字变声器设计方案文档格式.docx(10页珍藏版)》请在冰豆网上搜索。

数字变声器设计方案文档格式.docx

儿童由于声道短,其共振峰频率高于成年人,成年女性的声道一般短于成年男性,所以女性的共振峰频率一般高于男性。

本实验是基于男生录制的声音进行相关参数提取,修改接近于女声、童声、老人声,并实现了音调的高低与速度的快慢1.变声原理

在进行性别变声时,主要考虑基音周期、基频和共振峰频率的变化。

基音周期改变时,基频、共振峰同时变化,若伸展既有男变女、女变童,反之亦可。

本实验是基于男生录制的声音进行相关参数提取,修改接近于女声,实现男声到女声的变换。

●音段特征:

描述的是语音的音色特征。

特征参数主要包括基音频率、共振峰位置、共振峰带宽、基音频率、能量等。

●超音段特征:

描述的是语音的韵律特征。

特征参数主要包括因素的时长、基音频率的变化(音调)、能量等

●语言特征:

包括习惯用语、方言、口音等。

基音是指发浊音时声带振

动所引起的周期性, 而基音周期是指声带振动频率的倒数。

基音周期是语音信号最重要的参数之一,它描述了语音激励源的一个重要特征。

不同的人以及同一个人在不同的年龄时期有不同的基音周期。

人唱歌时,其基音频率范围大约是:

童声高音频率范围为260-880Hz,低音频率范围为196-700Hz,女声高音频率范围为220-1.1KHz,低音频率范围为200-700Hz,男声高音频率范围为160-523Hz低音频率范围为80-358Hz。

此外,基音的变化模式称为声调,它携带着非常重要的具有辨意作用的信息。

先就如何实时地通过基音频率的变化来实现语声变声,进行讨论,Matlab实现算法。

男声 基频分布(hz):

50~180 共振峰频率分布:

偏低

人群

女声 基频分布(hz):

160~380 共振峰频率分布:

提取参数

(1)语音时变傅里叶变换为:

X(ejw)=



¥

å

x(n)e-jwnn=-¥

在低通滤波时,采用巴特沃斯滤波器。

(2)构建巴特沃斯低通滤波器

根据人的说话特征设定相应指标参数,对本段语音设计算出巴特沃斯模拟滤波器的阶数,截止频率,归一化低通原型系统函数。

本段语音设计算出巴特沃斯模拟滤波器的阶数N为5,3dB截止频率,

算出为0.175,归一化低通原型系统函数为:

其中将 带人 中,得到低通滤波器,

各种理想数字滤波器的幅度频率响应

准备

流程图

查看变声器和声音的相关资料

收集声音

进行波形分析,傅里叶变换

构建巴特沃斯低通滤波器

用matlab进行程序设计,构建GUI界面

男声

打开声音文件

女声

变女声

变男声

3数字变声器的软件实现与仿真结果

代码部分

选择音频文件

[filename,pathname]=uigetfile({'

*.wav'

'

ALLFILES'

},'

selectvoicefile'

);

ifisequal([filenamepathname],[0,0])

return;

end

str=[pathnamefilename];

[temp,Fs]=audioread(str);

temp1=resample(temp,80,441);

handles.y1=temp;

handles.y=temp1;

handles.Fs=Fs;

guidata(hObject,handles);

原音播放c=handles.Fs;

sound(handles.y1,c);

plot(handles.axes1,handles.y1)

title(handles.axes1,'

时域图'

ysize=size(handles.y1);

y1=fft(handles.y,length(handles.y1));

ysize=size(y1);

plot(handles.axes2,abs(y1(1:

ysize/2)));

xlabel(handles.axes2,'

频率'

ylabel(handles.axes2,'

幅度'

title(handles.axes2,'

频率特性'

男声变女声FL=80;

WL=240;

P=10;

x1=handles.y;

fs=handles.Fs;

x1=resample(x1(:

1),8000,fs);

fs=8000;

x1=x1+0.000001*randn(length(x1),1);

x1=x1/max(x1);

L=length(x1);

FN=floor(L/FL)-2;

exc=zeros(L,1);

zi_pre=zeros(P,1);

x1_rec=zeros(L,1);

zi_rec=zeros(P,1);

exc_syn=zeros(L,1);

x1_syn=zeros(L,1);

last_syn=0;

zi_syn=zeros(P,1);

exc_syn_t=zeros(L,1);

x1_syn_t=zeros(L,1);

last_syn_t=0;

zi_syn_t=zeros(P,1);

hw=hamming(WL);

forn=3:

FN

x1_w=x1(n*FL-WL+1:

n*FL).*hw;

[AE]=lpc(x1_w,P);

x1_f=x1((n-1)*FL+1:

n*FL);

[exc1,zi_pre]=filter(A,1,x1_f,zi_pre);

exc((n-1)*FL+1:

n*FL)=exc1;

[x1_rec1,zi_rec]=filter(1,A,exc1,zi_rec);

x1_rec((n-1)*FL+1:

n*FL)=x1_rec1;

x1_Pitch=exc(n*FL-222:

PT=findpitch(x1_Pitch);

G=sqrt(E*PT);

PT1=floor(PT/2);

poles=roots(A);

deltaOMG=190*2*pi/8000;

forp=1:

10

ifimag(poles(p))>

0poles(p)=poles(p)*exp(j*deltaOMG);

elseifimag(poles(p))<

0poles(p)=poles(p)*exp(-j*deltaOMG);

end

endA1=poly(poles);

tempn_syn_t=[1:

n*FL-last_syn_t]'

;

exc_syn1_t=zeros(length(tempn_syn_t),1);

exc_syn1_t(mod(tempn_syn_t,PT1)==0)=G;

exc_syn1_t=exc_syn1_t((n-1)*FL-last_syn_t+1:

n*FL-last_syn_t);

[x1_syn1_t,zi_syn_t]=filter(1,A1,exc_syn1_t,zi_syn_t);

exc_syn_t((n-1)*FL+1:

n*FL)=exc_syn1_t;

x1_syn_t((n-1)*FL+1:

n*FL)=x1_syn1_t;

last_syn_t=last_syn_t+PT1*floor((n*FL-last_syn_t)/PT1);

sound(x1_syn_t,fs)plot(handles.axes1,x1_syn_t);

时域图'

gridon;

ysize=size(x1_syn_t);

y=fft(x1_syn_t,length(x1_syn_t));

ysize=size(y);

plot(handles.axes2,abs(y(1:

ysize)))

频率'

频率特征'

女声变男声

FL=80;

%帧长

WL=240;

%窗长

P=10;

%预测系数个数

c=handles.Fs;

Fs=c;

s=handles.y;

s=resample(s(:

1),8000,Fs);

Fs=8000;

s=s+0.000001*randn(length(s),1);

s=s/max(s);

%归一化¯

L=length(s);

%读入语音长度

FN=floor(L/FL)-2;

%计算帧数

%预测和重建滤波器

exc=zeros(L,1);

%激励信号

zi_pre=zeros(P,1);

%预测滤波器状态¬

s_rec=zeros(L,1);

%重建语音

zi_rec=zeros(P,1);

%变调不变速滤波器

exc_syn_t=zeros(L,1);

%合成的激励信号

s_syn_t=zeros(L,1);

%合成语音

last_syn_t=0;

%储存上一个或多个段的最后一个脉冲的下标zi_syn_t=zeros(P,1);

%合成滤波器状态

hw=hamming(WL);

%依次处理语音forn=3:

%计算预测系数

s_w=s(n*FL-WL+1:

%汉明窗加权后的语音[A,E]=lpc(s_w,P);

s_f=s((n-1)*FL+1:

%本帧语音

%计算激励

[exc1,zi_pre]=filter(A,1,s_f,zi_pre);

exc((n-1)*FL+1:

n*FL)=exc1;

%计算得到的重建语音[s_rec1,zi_rec]=filter(1,A,exc1,zi_

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

当前位置:首页 > 人文社科 > 视频讲堂

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

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