第二次大作业 语音合成 (1)对等式两边进行 Z 变换 ᵃ(ᵆ) = ᵄ(ᵆ) − ᵄ1(ᵆ−1ᵄ(ᵆ) + ᵆ(−1)) − ᵄ2 (ᵆ−2 ᵄ(ᵆ) + ᵆ−1ᵆ(−1) + ᵆ(−2 )) 所以传递函数为 ᵃ (ᵆ) =11 − ᵄ1ᵆ−1 − ᵄ2 ᵆ−2 (2)当ᵄ1 = 1.3789 ᵄ2 = −0.9506时,求解的 MATLAB 程序为 clear all, close all, clc; a = [1, -1.3789, 0.9506]; b = [1]; n = [0:100]'; x = [(n)==0]; [y] = filter(b, a, x);%use filter figure; subplot(2,1,1), zplane(b,a); subplot(2,1,2), impz(b,a),hold on;%use impz stem(n,y,'k-'),hold off; figure, freqz(b,a); 图像为 零极点图为 单位样值响应为 黑色为使用filter 方法所得的图像,蓝色为使用impz 方法所得的图像。可见两种方法产生的图像完全相同。 系统的频率响应为 由图我们可以读出共振频率为0.25 倍的抽样频率 (3 ) 此问需在原程序中添加如下程序 if n == 27 zplane([1],A); end 所得图像如下 (4 )此问须在原程序中添加如下程序 [w wf] = filter(1, A, s_f, wi); %利用filter和初态计算出响应与末态,最开始假设初态为圈零 exc((n-1)*FL+1:n*FL) =w ; wi=wf; %此时末态为下一时刻初态 (5 )此问须在原程序中添加如下程序 [ss zi_rec]=filter(1,A,exc((n-1)*FL+1:n*FL),zi_pre); %与上问功能相同 s_rec((n-1)*FL+1:n*FL) =ss; zi_pre=zi_rec; (6 )此问须在原程序中添加如下程序 sound(s); sound(exc); sound(s_rec); 声音依次变得模糊。 每一次处理都相当于过了一次滤波器,所以会对声音中某些频率加以削弱或加强,所以处理之后的声音的清晰程度会有所下降。 (7)200Hz 其中 NS=8000,N=floor(8000/200) 生成声音的程序如下 close all,clear all, clc; sa=[1:8000]; a=floor(8000/200); sb=mod(sa,a)==0; sound(sb); 产生 300Hz 声音的程序如下 close all,clear all, clc; sa=[1:8000]; a=floor(8000/300); sb=mod(sa,a)==0; sound(sb); 会有很小的频率差别,但基本可以忽略不计 (8)相关程序如下 close all,clear all, clc; aa=zeros(1,8000); PL=80; yu=1 for count=1:100 PT=80+5*mod(count,50); if(count>1) %找出最近的脉冲点 skd=find(aa>0, 1, 'last' ); %下次脉冲与刚找到的脉冲间隔应为一个现在的周期,所以在新的区域中脉冲的位置与...