简单语音信号的加密
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简单语音信号的加密
摘要:本实验实现的是语音信号的加密与解密。
将语音信号用幅度调制的方式进行加密。
然后在接受端用与调制的载波同频率的解调波进行解密,可以恢复原语音信号。
如果所用解调波与载波的频率不同,则不能有效恢复原信号。
一.实验原理:
模拟信号的幅度调制就是正弦型载波的幅度随调制信号变化的过程。
设正弦载波为:e(t)=A cos(w c t) (1)
式中w c为载波角频率,A为载波的幅度。
那么,幅度调制信号一般可以表示为:
a(t)=[A0 + e(t)] cos(w c t) (2)
其中,e(t)是待传输的信号,A0是加在传输信号上的直流分量,作用是能够让AM信号的包络保持传输信号的形状。
解调是调制的逆过程,也就是从已调制的信号中恢复或提取出调制信号的过程。
解调的方式有多种,目前在很多通信系统中使用的是同步解调。
同步解调在解调端产生与调制端同频率同相位的正弦信号cos(w c t)(也被称为本地振荡信号,简称本振),将AM信号与之相乘,实现频谱搬移
b(t)=a(t) cos(w c t) (3)
频谱搬移后的信号b(t)通过低通滤波器后,就可以恢复原来的传输信号e(t)了(幅度上会有一些变化)。
前面介绍的公式2中的直流A0,其作用是保证AM波的包络保持传输信号e(t)的形状,在老式的AM收音机正使用简单的包络检测电路,它通过跟踪AM波的包络解调出信号,这时A0是必须的。
但是对于对于同步解调方式则完全不受A0的影响,可以令A0=0以节省发射机的功率,此时的AM调制也被称为抑制载波AM调制。
在语音通信中,最简单的加密器就是通过频移完成语音的加密。
所谓的加密器就是将语音信号变换到不同的频率段,再接受端解密。
二.实验步骤:
1.首先完成声音的录制,编写rec_sound()函数实现,m脚本文件代码如下:
function x=rec_sound(time,fs)%time为录音时间,fs为取样频率
R=audiorecorder(fs,16,1);%构造声音对象
record(R);
pause(time); %控制录音时间
pause(R);
x=getaudiodata(R); %将声音保存为数组
stop(R);
再编写播放声音的函数play_sound()如下:
function play_sound(x,fs) %x为声音数组,fs为播放频率
P=audioplayer(x,fs); %构造播放对象
[M,N]=size(x);
T=max(M,N)/fs; %计算播放时间
play(P); %播放
pause(T);
可以用此函数播放音频数组,来检验处理效果。
在命令窗口输入
>>y=rec_sound(5,22050);
接着播放音频,完成声音的录制。
录制的声音以列向量y保存到工作空间。
2.接下来构造截止频率为4000Hz的巴特沃斯低通滤波器,将录制的声音y用该滤波器处理,将
音频的频率限制在4000Hz以内。
代码如下:
[na,nb]=butter(4,4000,'s');
sys=tf(na,nb); %构造滤波器
t=0:1/22050:(length(y)-1)/22050;
y1=lsim(sys,y,t);%滤波,将频带限制在4000Hz以内
y1=y1*10;%提高音量,方便听到。
得到调制信号
disp('播放调制信号');
play_sound(y1,22050); %试听调制信号
disp('播放结束');
plot(y); %画出滤波后的波形
音频信号波形某一片段如下:
3.采用幅度调制的方式对信号进行加密,直流分量A0=1,载波为f=8000Hz的正弦信号。
代码如下:
f=8000; %载波频率
s=sin(f*2*pi*t);%构造载波序列
s=s';
A0=1;
[M,N]=size(y1);
A=A0*ones(M,N);%构造直流分量
y2=(y1+A).*s;%同步调制,给信号加密
plot(y2); %画出加密后的信号波形
调制后AM信号波形某一片段如下:
4.用同步解调方式进行解调,用低通滤波的方式进行解密,输出语音信号,并减去直流分量。
播放输出信号。
代码如下:
%同步解调
y3=(y2.*s);%解调
y4=lsim(sys,y3,t);%低通滤波
y4=(y4-A/2)*50;%减去直流分量,并且将音量放大,得到解密后的输出信号
disp('播放同步解调后的输出信号');%试听解密后的信号
play_sound(y4,22050);%播放声音
disp('播放结束');
plot(y4); %画出解密后的波形
播放的声音与原来调制信号相同,能够听到原来的语音。
说明同步解调成功。
同步解密后的波形某一片段如下:
可以看到,这个波形的形状与原信号的波形片段是一样的,说明同步解调恢复了原信号。
5.在解调端用f=12000Hz频率的正弦波进行不同步解调,并将输出信号播放。
代码如下:
%不同步解调
f1=12000; %解调波频率
s1=sin(f1*2*pi*t);% 构造不同步解调波¨
s1=s1';
y5=(y2.*s1); %解调
y6=lsim(sys,y5,t);%低通滤波
y6=(y6-A/2)*50;%减去直流分量,并放大音量,获得解密后音频
disp('播放不同步解调后的信号');
play_sound(y6,22050);
disp('播放结束');
plot(y6);
播放声音时,无法听到原信号的语音,说明解密失败。
不同步解调后的信号波形某一片段如下:
可以看到,这个输出的波形与原波形片段差别很大,即没有完成对原信号的恢复,解密失败。
三.实验结论:
将音频文件用幅度调制的方式进行加密后,必须用与载波同频率的解调信号进行解密,如果不知道调制端载波的频率,即不能实现同步解调,则无法恢复原语音信号。
当语音信号经处理后响度降低,以致无法听到时,可以采用对声音数组乘一个系数的方式加大音量。