欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    matlab大作业语音合成.docx

    • 资源ID:36149740       资源大小:1.38MB        全文页数:31页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    matlab大作业语音合成.docx

    清华大学电子工程系matlab实弟抠假设语音合成综合实验班级:无99姓名:姜舒扬学号:2009011970实验日期:2011/7/29交报告日期:2011/7/29的以基音为周期的人工激励信号e(n)o对于200Hz的单位样值“串”,可知NS=200, N=8000/NS=20,而对于300Hzmatlab高级编程与工程应用课程作业之二的单位样值“串”,可知NS=300, N=round (8000/NS) =27。用sound试听两者 后发现300H在的信号会更加刺耳一些。其代码如下:200Hz的单位样值“串”clear all;close all;clc;T=8000;t=0:T-l;NSl=200;Nl=round(T/NS1);el=(mod(t,N1)=0);sound(elz 8000);300Hz的单位样值“串”clear all;close all;clc;T=8000;t=0:T-l;NS2=300;N2=round(T/NS2);e2=(mod(t,N2)=0);sound(e2r 8000);(8)生成时变基音序列真实语音信号的基音周期总是随着时间变化的。我们 首先将信号分成假设干个10毫秒长的段,假设每个段内基音周期固定不变,但 段和段之间那么不同,具体为PT = 80 + 5mod(m; 50)其中PT表示基音周期,m表示段序号。生成1秒钟的上述信号并试听。(提示:用 循环逐段实现,控制相邻两个脉冲的间隔为其中某个脉冲所在段的PT值。)我们知 道每个段的长度为80,但是其周期比80大,可知每个段内只有一个脉冲,甚至有些 段内由于周期太长出现没有脉冲的情况,在处理相邻两个脉冲的间隔时用前一个脉冲 的周期,这样从第1个脉冲开始不断的插入后面的脉冲,直 到不能插入脉冲为止。生成的波形如下:10.90.80.70.65 ,§)05 V) 0.4 0.3 0.2 0.10.10.20.30.40.50.60.70.80.91time/smatlab高级编程与工程应用课程作业之二相应的代码如下:信号函数function y=signal () T=8000;FL=80;y=zeros (T,1);y(1)=1; index=l;index=index+FL+5*mod(ceil(index/FL),50); while (index<=T)y(index)=1;index=index+FL+5*mod(ceil(index/FL),50);end return 画出波形clear all;close all;clc;y=signal ();t=l:8000/8000;plot(t,y);xlabel('time/s1;ylabel(1 signal');sound(y,8000);(9)人工激励产生语音用filter将(8)中的激励信号e(n)输入到(1)的系统中计算输出s(n),试听 和e(n)有何区别。输出的s (n)和e (n)波形如下:t/s1通过波形可以直到e (n)通过系统以后,有了一些音色,同时声音也更加圆滑,并且包络也不再是简单的冲击而是先直线上升而后指数下降。另外,听起来,e (n)是“依依”的声音,s (n)是“啊啊”的声音。其代码如下:matlab高级编程与工程应用课程作业之二clear all;close all;clc;al=1.3789;a2=-0.9506;a=1,-al,-a2;b=l;e=signal();s=filter(b,a,e);t=l:8000/8000;figure;subplot (2,1,1);plot (t,s);xlabel ( !t/s !);ylabel(1s (n) 1);subplot(2,1,2);plot(tf e);xlabel ( 1t/s1);ylabel(* e (n) 1 );sound(s,8000);pause(3);sound(ez 8000);(10)重改 speechprocm 程序重改speechproc.m程序。利用每一帧已经计算得到的基音周期和(8)的方法, 生成合成激励信号Gx(n) (G是增益),用filter函数将Gx(n)送入合成滤波器得 到合成语音sn)。试听和原始语音有何差异。利用(8)的方法得到激励,然后合成激励信号Gx(n),送入合成滤波器得 到合成语音,其代码如下:% (10)在此位置写程序,生成合成激励,并用激励和filter函数产生合成语音 if n=3index=(n-1)*FL+1;endwhile(index<=n*FL)exc_syn(index)=G;index=index+PT;ends_syn ( (n-1) *FL+1: n*FL) , zi_syn =f ilter (1, A, exc_syn ( (n-1) *FL+1: n*FL) , z i_syn);通过试听,发现合成语音与原始语音相差不大,但是噪音有所增加,声音 不清晰。下面是合成语音与原始语音波形的比拟:matlab高级编程与工程应用课程作业之二4可见两者波形基本相同,但是在一些细微的地方还是有所不同的。为了 更加清楚的比拟两者的区别,这里进行傅里叶变换得到频谱图如下:50040030020010050010001500相比而言,原始语音的低频分量比合成语音要丰富的多,同时高频的噪声 也比合成语音的大。而合成语音低频分量比拟单调是因为我们用以PT为周期 的单位样值周期信号作为激励,滤掉了一些低频分量。画波形和频谱图的代码如下:figure;subplot (2,1,1);plot (s) ; ylab1。原始语音 1); subplot (2,1,2);plot(s_syn); ylabel ( , 合 成语音D;sound(s, 8000);pause (3);sound(s synz 8000);Trg=0,13730-1/8000;N=13730;matlab高级编程与工程应用课程作业之二OMGrg=0,3000*pi;K=1000;omg,FT=prefourier(Trg,N,OMGrg,K);Fourier_s=FT*s;Fourier_s_syn=FT*s_syn;figure;subplot(2,1,1);plot(omg/2/pi,abs(Fourier_s);ylabel原始语音频谱,);axis(0,1500,0,500);subplot (2,1,2);plot(omg/2/pi,abs(Fourier_s_syn);ylabel ( 1合成语音频谱D ;axis(0, 1500,0z 500);预备傅里叶变换函数代码如下:function omg,FT = prefourier(Trg,N,OMGrg,K) T = Trg (2)-Trg (1);t = linspace (Trg (1) , Trg -T/N, N) 1 ;OMG = OMGrg(2)-OMGrg(1);omg = linspace(OMGrg(1),OMGrg(2)-OMG/K,K)1;FT = T/N*exp(-j *kron(omg,t.1);注明:预备傅里叶变换函数代码参考谷老师提供的程序示范中的prefourier.m文 件,不过有所改进,这里去掉了用不到的时间抽样点和IFL对代码进行了精 简。三、变速不变调(11)变速不变调仿照(10)重改speechproc.m程序,只不过将(10)中合成激励的长度增加一 倍,即原来10毫秒的一帧变成了 20毫秒一帧,再用同样的方法合成出语音 来,如果你用原始采样速度进行播放,就会听到慢了一倍的语音,但是音调基 本没有变化。这里实现的过程与第10题基本相同,这是一帧长度由80变成了 160,其余 的实现过程完全相同,其实现代码如下:% (11)不改变基音周期和预测系数,将合成激励的长度增加一倍,再作为filter%的输入得到新的合成语音,听一听是不是速度变慢了,但音调没有变。if n=3 indexv=(n- 1)*2*FL+1;endwhile(indexv<=n*2*FL)exc_syn_v(indexv)=G;indexv=indexv+PT;end s_syn_v ( (n-1) *2*FL+1: n*2*FL) , zi_syn_v =f liter (1, A, exc_syn_v ( (n-1)*2* FL+1:n*2*FL),zi syn v);matlab高级编程与工程应用课程作业之二将原始波形和变速不变调波形画出进行比照:比照波形我们可以发现两者的波形形状基本相同,但是变速不变调语音的横 坐标范围是原始语音的2倍长。为了更加准确的比拟两者频率的差异,对2种信号进行傅里叶变换得到频谱, 我们得到如下结果:5004003002001000通过频谱图我们可以知道两种信号的频域分布的基本上相同,这也证实了 变速不变调的实现。其画波形和频谱图代码如下:figure;subplot(2,1,1);plot (s) ; ylabel (1 原始语音1); subplot (2,1,2);plot(s_syn_v); ylabel(1变速不变调语音D;sound(s, 8000);pause (3);sound(s syn vz 8000);matlab高级编程与工程应用课程作业之二Trgl=O,13730-1/8000;Nl=13730;OMGrg=Oz 3000*pi;K=1000;omg,FT1=prefourier(Trgl,N1,OMGrg,K); Fourier_s=FTl*s; Trg2=0,13730*2- l/8000;N2=13730*2;omg,FT2=prefourier(Trg2,N2,OMGrg,K);Fourier_s_syn_v=FT2 *s_syn_v; figure;subplot(2,1,1);plot(omg/2/pi,abs(Fourier_s);ylabel原始语音频谱,);axis ( 0, 1500,0z 500); subplot (2,1,2);plot(omg/2/pi,abs(Fourier_s_syn_v);ylabel ('变速不变调语音频谱,);axis(0,1500,0,500);四、变调不变速(12)参数计算重新考察(1)中的系统,将其共振峰频率提高150Hz后的ai和a2分别是多少?改变 共振峰频率就是要把该系统的极点沿原点进行旋转,其中在x轴上面的极点逆时针旋转,x轴下面的极点顺时针旋转。 其代码实现如下:clear all;close all;clc;al=1.3789;a2=-0.9506;a=1,-al,-a2; b=l;z, p,k=tf2zp(b,a);for m=l:length(p) if(imag(p(m)>0)p(m)=p(m)*exp(j *150*2*pi/8000); elsep(m)=p(m)*exp(-j *150*2*pi/8000); endendBt,At=zp2tf(z,p,k);Atl=-At(2), At2=-At (3), figure; zplane (b,a); figure;matlab高级编程与工程应用课程作业之二、语音预测模型(1)参数分析给定e(n) = s(n) - ais(n-1) -a2s(n- 2)假设e(n)是输入信号,s(n)是输出信号,上述滤波器的传递函数是什么?如果 ai = 1.3789 , a2 = -0.9506 ,上述合成模型的共振峰频率是多少?用zplane , freqz , impz分别绘出零极点图,频率响应和单位样值响应。用filter绘出单位 样我响应,比拟和impz的是否相同。为了求得传递函数,我们需要使用tf ()函数,其中b=l, a=l,-al,-a2, 其中1.3789, a2 = -0.9506,可得传递函数如下:Transfer function: 11- 1.379 zA-l +0.9506 zA-2Sampling time: unspecified因而可得函数传递函数的一般表达式为:H=q11 -az1 -az 212其代码如下:al=1.3789;a2=-0.9506;a=1,-al,-a2;b= 1 ; sys=tf (b, a, 一1 Variable', 1zA-1!)由于题中给出的为二阶差分方程,因此有一对共飘极点,可知一对共加极点freq =999.9447因此共加峰频率为999.9447HZo下面分别列出零极点图、频率响应和单位样值响应。(1)零极点图:00tpd dcou_ 6eal_8 o.2 05 r 66 6zplane(Bt,At);matlab高级编程与工程应用课程作业之二得到结果如下:Atl =1.2073At2 =-0.9506BP ai=1.2073, a2=-0.9506比照零极点分布如下:频率未改变前:06、 yrrtrr-1-0.500.51Real Part频率提iWj后:1-0.500.51Real Part10.8图中显示出了极点的变化。(13)变调不变速仿照(10)重改speechproc.m程序,但要将基音周期减小一半,将所有的共振 峰频率都增加150Hz ,重新合成语音,听听是何感受。其基本实现思路与合成语音基本相同,只是在两个地方有所不同:1、 系统参数b, a不同,这里的b和a是要用经改变后的极点计算出来的; 2、生成激励信号时,用floor (PT/2)作为这里的PT。其实现代码如下: % (13)将基音周期减小一半,将共振峰频率增加150Hz,重新合成语音 z,p,k=tf2zp(l,A);matlab高级编程与工程应用课程作业之二for m=l:length(p)if(imag(p(m)>0)p(m)=p(m)*exp(j *150*2*pi/8000);elsep(m)=p(m)*exp(-j*150*2*pi/8000);endendBt,At=zp2tf(z,p,k);if n=3indext=(n-1)*FL+1;endwhile(indext<=n*FL)exc_syn_t(indext)=G;indext=indext+floor (PT/2);end s_syn_t ( (n-1) *FL+1: n*FL) , zi_syn_t =f ilter (Btz At, exc_syn_t ( (n- 1)*FL+1 :n*FL),zi_syn_t);试听后,发现音调明显高了好多,但是速度并没有改变,下面是两者的波 形的比照:x 104-W 20004000600080001000012000 14000仔细观察波形,我们会发现变调不变速语音的波形会更加稠密一些,为了 更加直观地看出其差异,我们用傅里叶变换得到其频谱如下:matlab高级编程与工程应用课程作业之二可以发现变调不变速语音的高频分量要比原始语音丰富的多,同时通过耳朵我 们也能感受到其语速没有明显的变化,这证实了变调不变速。其画波形和频谱 代码如下:figure;subplot (2,1,1);plot (s) ; ylabe1厂原始语音1); subplot (2,1,2);plot(s_syn_t); ylabel(1变调不变速语音D;sound(s, 8000);pause (3);sound(s_syn_tz 8000);Trg=0,13730-1/8000;N=13730;OMGrg=0z 3000*pi;K=1000;omg,FT=prefourier(Trg,N,OMGrg,K);Fourier_s=FT*s;Fourier_s_syn_t=FT*s_syn_t;figure;subplot(2,1,1);plot(omg/2/pi,abs(Fourier_s);ylabel ( 1原始语音频谱,);axis ( 0, 1500,0,500); subplot (2,1,2);plot(omg/2/pi,abs(Fourier_s_syn_t);ylabel变调不变速语音频谱,);axis(0,1500,0,500);创新补充:变调又变速这里我好奇就结合前面的变调不变速和变速不变调技 术,可以得到变速又变matlab高级编程与工程应用课程作业之二调技术,这里我讲(11)和(13)进行结合,得到变调有变速的代码如下:%变速又变调if n=3 indexvt=(n-1)*2*FL+1;endwhile(indexvt<=n*2*FL)exc_syn_vt(indexvt)=G;indexvt=indexvt+floor(PT/2);ends_syn_vt ( (n-1) *2*FL+1: n*2*FL) , zi_syn_vt =f ilter (Bt, At, exc_syn_vt ( (n- 1)*2*FL+1:n*2*FL),zi_syn_vt);试听后发现其音调变高,同时速度为原始语音的一半,下面分别列出两者 的波形区别和频谱区别:波形:matlab高级编程与工程应用课程作业之二从图中不难看到其波形和频率的变化,由于速度和频率都出现变化,因此在 波形上兼有变速不变调和变调不变速的特点。由于speechproc.m文件过长,因此列于本文的最后。五、逆向工程(14)语音信号的变调处理有一款商业娱乐产品可实现语音信号的变调处理。现进行如下处理:将该产 品放置于音响前,用计算机播放voice.pcm,声音经音箱放出后被该产品采集到, 随后该产品生成变调语音、播放病自行记录,最后将其记录的音频文件导入计算 机得至ITomvoice.pcmo请你在分析比对这两个语音信号的频谱特征的基础上, 研究该产品生成变调语音的机理,画出实现框图,并指明具体参数。为了比拟起见,先将voice.pcm和Tomvoice.pcm的波形和频谱列于下: 波形:1FrFf频谱:matlab高级编程与工程应用课程作业之二通过研究后,其实现框图如下:其中这里实现的变调原理与(13)题的原理是相同的,只是具体参数有所 不同,这里共振峰频率提高10HZ,基音周期变为原来的1/1.1,最后由于麦克 风的问题,录音振幅比拟小,因此将其放大为原来的400000倍后作为最后的 语音。其具体实现代码如下: clear all;close all;clc;%定义常数FL = 80;%帧长WL = 240;%窗长P = 10;%预测系数个数sl=readspeech ( 1 voice .pcm* , 100000) ; %录入语音 r = audiorecorder (8000,16,1);record(r);% speak into microphone.sound(si,8000);pause (1.6);stop (r);s=getaudiodata (r);L = length (s) ;%读入语音长度FN = floor (L/FL) -2;% 计算帧数zi_pre = zeros (P,1);exc=zeros (L,1);exc_syn_t = zeros (L,1); s_syn_t = zeros (L,1); zi syn t=zeros (P,1);exc_syn_t = zeros (L,1); s_syn_t = zeros (L,1); zi syn t=zeros (P,1);%合成的激励信号(脉冲串)%合成语音hw = hamming(WL);hw = hamming(WL);%汉明窗%依次处理每帧语音for n = 3:FN%计算预测系数(不需要掌握)s_w = s (n*FL-WL+l:n*FL) .*hw;%汉明窗加权后的语音A E = lpc(s_w, P) ;%用线性预测法计算P个预测系数% A是预测系数,E会被用来计算合成激励的能量matlab高级编程与工程应用课程作业之二s_f=s ( (n-1) *FL+l:n*FL) ;%本帧语音,下面就要对它做处理%用filter函数s_f计算激励,注意保持滤波器状态exc_f,zi_pre=filter(Az1,s_f,zi_pre); exc ( (n-1) *FL+l:n*FL)=exc_f; %将你计算得到而激励写在这里s_Pitch = exc (n*FL-222:n*FL);PT = findpitch (s_Pitch) ;% 计算基音周期 PTG = sqrt (E*PT);用计算合成激励的能量G%进行变调不变速处理z,p,k=tf2zp(1,A); for m=l:length(p)if(imag(p(m)>0)p(m)=p(m)*exp(j *10*2*pi/8000); elsep(m)=p(m)*exp(-j*10*2*pi/8000);endendBt,At=zp2tf(z,p,k);if n=3indext=(n-1)*FL+1;endwhile(indext<=n*FL)exc_syn_t(indext)=G;indext=indext +floor (PT/1.1);ends_syn_t ( (n-1) *FL+1: n*FL) , zi_syn_t =f ilter (Bt, At, exc_syn_t ( (n- 1)*FL+1 :n*FL), zi_syn_t);ends=s*400000;s_s yn_t=s_s yn_t *400000; % 画出录 入语音和语音变调不变速后的语音figure;subplot (2,1,1);plot (s) ; ylabel (1 录入语音1); subplot (2,1,2);plot(s_syn_t); ylabel (1变调不变速语音D;sound(s, 8000);pause (3);sound(s_syn_tz 8000);matlab高级编程与工程应用课程作业之二writespeech(1myTomspeech.pcm *,s_syn_t);(15) GUI上题介绍了该款娱乐产品的基本功能,即录音、变调处理、回放,给用户 以“趣味学舌”的体验。请利用上题的分析结果,参考该产品功能设计并编制一 套具有自主知识产权的娱乐产品。(提示:help audiorecorder进行录音:可自 动检测话音有无,也可以让用户在说话之前和之后分别按键触发软件的录音和 变调回放。)我根据(14)题的功能进行了 GUI设计,得到界面如下:录入语音波形0.50.50开始录音结束录音变调回放010.20.30 20.30受调语箸波形。60 70 80.91结束 回放关闭|_C3_ 区 J其中上面为波形显示区域,分别为录音波形和变调波形,下面分别实现响 应的功能,有开始录音、结束录音、显示波形、存入变调录音到文件中以及原 始录音和变调录音的回放等相关功能。右下角为关闭窗口按钮。具体实现时要先翻开exl5.m,然后点击run按钮即得到GUI界面,即可实现 相关的功能。这就是我自主设计的娱乐产品。具体代码见exl5.m,由于代码过长,这里不再列出。六、总结通过这次实验,我对人地发声系统有了一个基本的认识,通过语音的重建, 我了解了人的声调高低和音色差异的来源。同时通过变速不变调和变调不变速, 我对语音信号数字处理技术也有了更加进一步的认识。最后通过逆向工程,我对 可视化软件的制作有了初步的了解。总之,我对语音的认识有了一个全新的认 识,也为后面的实验做了良好的铺垫。matlab高级编程与工程应用课程作业之二 附: speechprocm 文件 function speechproc()%定义常数FL = 80;%帧长WL = 240;%窗长P = 10;%预测系数个数s = readspeech ( T voice .pcm, 100000) ;% 载入语音 sL = length (s) ;%读入语音长度FN = floor (L/FL) -2 ;% 计算帧数%预测和重建滤波器exc = zeros (L, 1) ;%激励信号(预测误差)zi_pre = zeros (Pz 1) ;%预测滤波器的状态s_rec = zeros (L, 1) ;% 重建语音zi_rec = zeros (PA1);%合成滤波器exc_syn = zeros (L, 1) ;%合成的激励信号(脉冲串)s_syn = zeros (L, 1) ;% 合成语音zi_syn=zeros (P,1);%变调不变速滤波器exc_syn_t = zeros (L, 1) ;%合成的激励信号(脉冲串)s_syn_t = zeros (Lz 1) ;% 合成语音zi_syn_t=zeros (P,1);%变速不变调滤波器(假设速度减慢一倍)exc_syn_v = zeros (2*L, 1) ;%合成的激励信号(脉冲串)s_syn_v = zeros (2*L, 1) ;% 合成语音zi_syn_v=zeros (P,1);%变速又变调滤波器(假设速度减慢一倍)exc_syn_vt = zeros (2*LZ 1) ;%合成的激励信号(脉冲串)s_syn_vt = zeros (2*L, 1) ;% 合成语音zi syn vt=zeros (Pf1);hw = hamming(WL);hw = hamming(WL);%汉明窗%依次处理每帧语音for n = 3:FN%计算预测系数(不需要掌握)s_w = s (n*FL-WL+l:n*FL) .*hw;%汉明窗加权后的语音A E = Ipc (s_wr P) ;%用线性预测法计算P个预测系数% A是预测系数,E会被用来计算合成激励的能量if n = 27% (3)在此位置写程序,观察预测系统的零极点图Real Partmatlab高级编程与工程应用课程作业之二zplane(1,A); ends f = s ( (n-1)*FL+1:n*FL);s f = s ( (n-1)*FL+1:n*FL);%本帧语音,下面就要对它做处理% (4)在此位置写程序,用filter函数s_f计算激励,注意保持滤波器状态 exc f,zi pre=filter(A,l,s f,zi pre); exc ( (n- 1) *FL+l:n*FL) =exc_f;用将你计算得到的激励写在这里% (5)在此位置写程序,用filter函数和exc重建语音,注意保持滤波器状态 rec f,zi rec=filter(lfA,exc f,zi rec); s rec ( (n- l)*FL+l:n*FL)=rec_f; %将你计算看到的董建语音写在这里%注意下面只有在得到exc后才会计算正确 s_Pitch = exc(n*FL-222:n*FL);PT = findpitch (s_Pitch) ;%计算基音周期PT (不要求掌握)G = sqrt(E*PT);G = sqrt(E*PT);%计算合成激励的能量G (不要求掌握)% (10)在此位置写程序,生成合成激励,并用激励和filter函数产生合成语 音 if n=3index=(n-1)*FL+1;endwhile(index<=n*FL)exc_syn(index)=G; index=index+PT;ends_syn ( (n-1) *FL+1: n*FL) , zi_syn =f ilter (1, A, exc_syn ( (n-1) *FL+1: n*FL) , z i_syn);% (11)不改变基音周期和预测系数,将合成激励的长度增加一倍,再作为filter %的输入得到新的合成语音,听一听是不是速度变慢了,但音调没有变。if n=3 indexv=(n-1)*2*FL+1;endwhile(indexv<=n*2 *FL)exc_syn_v(indexv)=G; indexv=indexv+PT;ends_syn_v ( (n-1) *2*FL+1: n*2*FL) , zi_syn_v =f ilter (1 f Az exc_syn_v ( (n-1) *2* FL+1:n*2*FL),zi syn v);matlab高级编程与工程应用课程作业之二% (13)将基音周期减小一半,将共振峰频率增加150Hz,重新合成语音,听听是啥 感受z,p,k=tf2zp(1,A);for m=l:length(p) if(imag(p(m)>0)p(m)=p(m)*exp(j *150*2*pi/8000); elsep(m)=p(m)*exp(-j*150*2*pi/8000); end endBt,At=zp2tf(z,p,k);if n=3indext=(n-1)*FL+1;endwhile(indext<=n*FL)exc_syn_t(indext)=G;indext=indext+floor (PT/2); ends_syn_t ( (n-1) *FL+1: n*FL) , zi_syn_t =f ilter (Btz At, exc_syn_t ( (n-1)*FL+1 :n*FL), zi_syn_t);告变速又变调if n=3indexvt=(n-1)*2*FL+1;endwhile(indexvt<=n*2 *FL)exc_syn_vt(indexvt)=G;indexvt=indexvt +floor (PT/2);ends_syn_vt ( (n-1) *2*FL+1: n*2*FL) , zi_syn_vt =f ilter (Bt, At, exc_syn_vt ( (n- 1)*2*FL+1:n*2*FL),zi_syn_vt);end% (6)在此位置写程序,听一听s , exc和s_rec有何区别,解释这种区 别 sound (exc, 8000);pause(2);sound(s, 8000);pause (2);sound(s_recz 8000);pause (2);figure;subplot(3,1,1);plot(100:400,exc (100:400);subplot(3Zlz 2);plot( 100:400,s (100:400);subplot(3,1,3);plot(100:400,s_rec(100:400); figure;matlab高级编程与工程应用课程作业之二subplot (3,1,1);plot(6000:6300,exc(6000:6300);subplot(3,1,2);plot(6000:6300zs(6000: 6300);subplot(3,lz 3);plot(6000:6300, s_rec(6000:6300);figure;subplot(3,lz1);plot(12000:12300zexc (12000:12300);subplot(3,1,2);plot ( 12000:12300zs (12000:12300);subplot(3,1,3);plot(12000:12300z s_rec(12000:12300); figure;subplot(3,1r 1);plot (exc);subplot(3,1,2);plot (s);subplot(3,1, 3);plot(s_rec);%后面听语音的题目也都可以在这里写,不再做特别注明 figure;subplot (2,1,1);plot (s) ; ylab原始语音1); subplot (2,1,2);plot (s_syn) ; ylabel ('合成语音D;sound(s, 8000);pause (3);sound(s_syn,8000);Trg=0z13730-1/8000;N=13730;OMGrg=0z 3000*pi;K=1000;omg,FT=prefourier(Trg,N,OMGrg,K);Fourier_s=FT*s;Fourier_s_syn=FT*s_syn;figure;subplot(2,1,1);plot(omg/2/pi,abs(Fourier_s);ylabel。原始语音频谱,);axis (0,1500,0,500);subplot (2,1,2);plot(omg/2/pi,abs(Fourier_s_syn);ylabel ( 1合成语音频谱,);axis(0,1500,0,500);figure;subplot (2,1,1);plot (s) ; ylabel ( 1 原始语音 D; subplot (2,1,2);plot(s_syn_v);ylabel变速不变调语音,);matlab高级编程与工程应用课程作业之二sound(s, 8000);pause (3);sound(s_syn_vz 8000);Trgl=0,13730-1/8000;Nl=13730;OMGrg=Oz 3000*pi;K=1000;omgz FT1=prefourier(Trgl,N1,OMGrg, K); Fourier_s=FTl*s; Trg2=0,13730*2- l/8000;N2=13730*2;omg,FT2=prefourier(Trg2,N2,OMGrg,K);Fourier_s_syn_v=FT2*s_syn_v;figure;subplot(2Z1,1);plot(omg/2/p

    注意事项

    本文(matlab大作业语音合成.docx)为本站会员(太**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开