语音伪装器的matlab实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
语音伪装器的matlab实现
MATLAB课程设计
课题代码课题编号指导老师
1
语音伪装器的设计与实现 31 8 邓磊语音伪装器的设计与实现
一、我们每个人的声音不同,源于我们的每个人的音色和音调不一样,例如所说的男中音、女高音就是音调的不同。
当然即便是音调一致,我们依然可以区分两个不同人的声音或者不同乐器的声音,这就是音色的不同。
而我们要实现的语音变音器正是借助对声音音色和音调的双重复合改变,实现输出声音的改变。
由表 1可知,在进行性别变音时,主要考虑基频和共振峰频率的变化。
当基频伸展,共振峰频率也同时伸展,可由男声变成女声,女声变成童声;反之基收缩共振峰频率也同时伸展,可由男声变成女童;反之,基频收缩,共振峰频率也同时收缩,则由童声变女声,女声变男声。
表一男声、女声和童声基频、共振峰频率关系表人群男声女声童声基频分布Hz 【50,180】【160,380】【400,1000】共振峰频率分布偏低中偏高二、实现步骤
1. 使用windows和matlab工具进行语音信号的录制与读入;
2. 对读入的语音信号进行频谱分析;
3. 设计数字滤波器并画出频响特性;
4. 对读入的语音信号进行滤波以滤除噪声;
5. 通过搬移、改变基波频率实现变声;
2
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=1*fs; T=1/Fs; f=n/N*Fs; figure(1);
subplot(2,1,1);plot(n,x1);%绘制原音频信号 title('原音频信号');
subplot(2,1,2);plot(f,abs(X));%绘制频谱图 title('音频的幅度谱');
%快速播放
sound(x,1.5*fs);%以1.5倍速度播放
3
%慢速播放
sound(x,0.5*fs);%以0.5倍速度播放
%巴特沃斯低通滤波器设计与描述 fc=9200; %设定滤波器各参数 fst=9600; rp=1;
rs=30;
wp=fc*2/fs;%将模拟指标转换为数字指标 ws=fst*2/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));%滤波后的频谱
4
subplot(2,1,1);
plot(x2); %绘制滤波后的信号 title('滤波后语音信号时域图') subplot(2,1,2); plot(y2); %绘制滤波后的音频频谱 title('滤波后语音信号频谱图')
%男声变为童声
p=fft(x2);%男声变童声信号处理 xaa=p; N=500;
pa=[0.1*xaa(1:1000),2.5*xaa(1:180000),0.1*xaa(1:1000)];
Y1=1*real(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');
5
感谢您的阅读,祝您生活愉快。