温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
2023
语音
伪装
matlab
实现
MATLAB课程设计
课 题
语音伪装器的设计与实现
代 码
31
课题编号
8
指导老师
邓磊
语音伪装器的设计与实现
一、我们每个人的声音不同,源于我们的每个人的音色和音调不一样,例如所说的男中音、女高音就是音调的不同。当然即便是音调一致,我们依然可以区分两个不同人的声音或者不同乐器的声音,这就是音色的不同。而我们要实现的语音变音器正是借助对声音音色和音调的双重复合改变,实现输出声音的改变。由表 1可知,在进行性别变音时,主要考虑基频和共振峰频率的变化。当基频伸展,共振峰频率也同时伸展, 可由男声变成女声,女声变成童声;反之基收缩共振峰频率也同时伸展, 可由男声变成女童;反之,基频收缩,共振峰频率也同时收缩,那么由童声变女声,女声变男声。
表一 男声、女声和童声基频、共振峰频率关系表
人群
基频分布Hz
共振峰频率分布
男声
【50,180】
偏低
女声
【160,380】
中
童声
【400,1000】
偏高
二、实现步骤
1. 使用windows和matlab工具进行语音信号的录制与读入;
2. 对读入的语音信号进行频谱分析;
3. 设计数字滤波器并画出频响特性;
4. 对读入的语音信号进行滤波以滤除噪声;
5. 通过搬移、改变基波频率实现变声;
6. 语音信号恢复
7. 实现慢录快放和快录慢放功能;
8. 绘制输出各个局部的波形 。
三、语音伪装器的MATLAB程序与实现
%读取音频信号并分析处理
[x1,fs]=wavread('C:\Users\Administrator\Desktop\xq.wav');%读取音频文件,识别的是地址
sound(x1,fs);
N=length(x1);
n=[0:N-1];
X=fft(x1);%进行傅里叶变换
Fs=1xfs;
T=1/Fs;
f=n/NxFs;
figure(1);
subplot(2,1,1);plot(n,x1);%绘制原音频信号
title('原音频信号');
subplot(2,1,2);plot(f,abs(X));%绘制频谱图
title('音频的幅度谱');
%快速播放
sound(x,1.5xfs);%以1.5倍速度播放
%慢速播放
sound(x,0.5xfs);%以0.5倍速度播放
%巴特沃斯低通滤波器设计与描述
fc=9200; %设定滤波器各参数
fst=9600;
rp=1; rs=30;
wp=fcx2/fs;%将模拟指标转换为数字指标
ws=fstx2/fs;
[n,wn]=buttord(wp,ws,rp,rs);%滤波器的最小阶数n,wn为系统频带
[b,a]=butter(n,wn,'low');
figure(2);
freqz(b,a);%绘制滤波器特性曲线
title('低通滤波器特性曲线');
%用低通滤波器对原始信号滤波
x2=filter(b,a,x1);%用滤波器对原始信号滤波
sound(x2,fs);
figure(3);
y2=abs(fft(x2,30000));%滤波后的频谱
subplot(2,1,1);
plot(x2); %绘制滤波后的信号
title('滤波后语音信号时域图')
subplot(2,1,2);
plot(y2); %绘制滤波后的音频频谱
title('滤波后语音信号频谱图')
%男声变为童声
p=fft(x2);%男声变童声信号处理
xaa=p;
N=500;
pa=[0.1xxaa(1:1000),2.5xxaa(1:180000),0.1xxaa(1:1000)];
Y1=1xreal(ifft(pa));
figure(4);
subplot(2,1,1);
plot(x1);title('原始音频');%绘制原始音频信号
subplot(2,1,2);
plot(x2);title('变声后的音频');%绘制变声后的音频
figure(5);
subplot(2,1,1);
plot(abs(X));title('原始音频频响');%绘制原始音频频响曲线
xlabel('X');ylabel('Y');
sound(Y1,fs);
subplot(2,1,2);
plot(abs(pa));title('变声后的音频频响');%绘变声后音频频响
xlabel('X');ylabel('Y');
四、程序仿真结果
1、采集的原始信号的频谱分析
由上图可见,采集到的男生声音信号大多分布在低频段上。
2、低通滤波器的特性图
本项目采用的是巴特沃斯低通滤波器。
3、经过低通滤波器滤波后的信号频谱图
经过低通滤波器处理之后,与原始信号相比,很明显,滤波后的声音信号保存了原始信号的有效成分,除去了一定的干扰信号〔即噪声〕。
4、男声变童声后音频信号比照
变声后,音频信号并没有发生明显变化,仅仅有一定程度的压缩。
5、男声变童声后信号频谱比照
从上图可以看出,变声后,在低频段〔即零频点附近〕的信号被明显削弱,而在中频段〔1000——25000〕信号得到明显加强,这也符合童声的频域特点。
五、结果分析与总结
本课题是语音伪装器的设计与实现,我们通过对不同性别的人的声音信号的特点不同的分析发现,男声、女声、童声所在的频段依次增加,因此假设要实现两种声音的相互转化,那么需要改变声音信号的基波频率。另外,在做变声之前,需要对采集到的信号进行消噪声处理,这样得到的信号才更干净。另外,滤波器的设计也是一大难题,我们采用的是常见的巴特沃斯低通滤波器,并进行了有效地信号处理。之后,我们进行了频谱搬移、信号复原与播放等一系列工作,最终成功完成了语音伪装器的实现。
通过本次课题,我们充分利用了本学期所学习的信号与系统课程,对信号的频率之间的关系、滤波器的设计与应用、信号的处理等知识有了更深刻地认识,同时对matlab也有了更多的了解,掌握了一些最根本的应用,让我们受益匪浅。
另外,在进行本次课题的过程中,我们小组成员都有明确的分工,每个人都很积极、努力,各尽其责,对课程的成功实现做出了很大的奉献,具体内容见附录。
最后,我想表示,虽然我们根本实现了语音伪装器,但是难免其中存在这样或那样的问题,缺乏之处还希望老师指出,我们会不断改正与完善。
10