【语音合成】基于matlab GUI语音合成【含Matlab源码 293期】

189 阅读1分钟

一、简介

本文介绍了利用matlab软件及其中的图形用户界面(GUI)实现驱动声卡采集语音信号和语音信号采集后的文档处理方法,并通过实例利用matlab分析了语音信号处理的过程。

二、源代码

%梳状滤波器:H1=1+a*z^(-R) <=> y[n]=x[n]+a*x[n-R]   |a|<1
%全通滤波器:H2=(b+z^(-R))/(1+b*z^(-R))     |b|<1
clf;
clc;
a=0.5;%回声衰减系数
b=0.5;
R=10; %回声混响时间

%从幅频、相频特性比较两者不同。实际上人对相位的变化的敏感度低于幅度的变化
[h1,w]=freqz([1 zeros(1,R) a],1);
[h2,w]=freqz([b zeros(1,R) 1],[1 zeros(1,R) b]);
subplot(2,2,1);plot(w/pi,abs(h1));
xlabel('w/pi');ylabel('梳状滤波器|H|');
subplot(2,2,2);plot(w/pi,angle(h1));
xlabel('w/pi');ylabel('梳状滤波器Angle');
subplot(2,2,3);plot(w/pi,abs(h2),'r');
xlabel('w/pi');ylabel('全通滤波器|H|');ylim([0 2]);
subplot(2,2,4);plot(w/pi,angle(h2),'r');
xlabel('w/pi');ylabel('全通滤波器Angle');

%试听比较
R=3000;
[x,fs,a]=wavread('jsl.wav');
for i=1:3
n=input('试听选择:1.原声 2.梳状滤波器 3.全通滤波器');
if n==1
    sound(x,fs);

三、运行结果

在这里插入图片描述
在这里插入图片描述

四、备注

2014a