语音加密解密算法研究,仿真和实现-毕业论文 联系客服

发布时间 : 星期六 文章语音加密解密算法研究,仿真和实现-毕业论文更新完毕开始阅读defa696c866fb84ae55c8d0e

河北工业大学2013届本科毕业设计说明书

也可以是交叠的,一般帧的长度为 10ms~30ms,这一特点是语音信号数字处理的基础。[17]

用matlab可以对语音文档进行读取,写入和播放。声音文件大都以(.wav)的格式储存,matlab处理此类文件的格式为:

WAV文件的读取:[y,fs,nbits]=wavread(‘*.wav’) WAV文件的写入: wavwrite(y,fs,nbits,’*.wav’) WAV文件的播放:wavpla(y,fs)

y代表(.wav)格式的语音文件,有效取值为[-1.0,1.0],若y是N×2的矩阵,则为立体声;fs为取样频率;nbits是每个样本位数,通常取8或16。

例:读取并播放声音文件“tada.wav”,截取其左声道中第二秒钟的语音数据,将它重复三遍后再播放,然后显示比较这两组语音数据的波形图,最后将处理后的数据以单声道写入文档“al.wav”并保存。最后结果如图2.1。[8]

[y,fs]= wavread (‘c:\\windows\\media\\tada.wav’);%读取语音文档数据 wavplay (y,fs);%播放语音文档

x = y (22051:44100,1);%截取左声道中第二秒钟的语音数据 x = [x;x;x];%将语音数据段重复三遍 wavplay (x);%播放语音

subplot(2,1,1);%确定显示位置1 plot(y); %画原文件完整数据语音波形图 subplot(2,1,2);%确定显示位置2 plot(x); %画处理后数据语音波形图

wavwrite(x,fs,‘e:\\desktop\\al.wav’);%将处理后的数据写入文档

- 5 -

河北工业大学2013届本科毕业设计说明书

0.20.10-0.1-0.201234567x 100.10.050-0.05-0.10123456x 107484

图2.1 语音数据处理

分析:为了使图形简单且突出语音信号特点截取了单声道的声音波形,并将其重复三遍,以便于观察在进行混沌加密时对于相同的声音信号加密后的波形的变化。 事实上由于密钥的不同即使相同的明文信息得到的密文也不相同,这样的保密通信不会因为明文而泄露信息,保证了语音信号的通信安全。

2.2 语音信号的预处理

2.2.1 语音信号的频谱与倒频谱分析

(1)语音信号的频谱分析过程:傅里叶频谱分析是语音信号频域分析中广泛采用的一种方法。语音波是一个非平稳过程,因此适用于周期、瞬变或平稳随机信号的标准傅里叶变换不能直接表示语音信号,而应该用短时傅里叶变换对语音信号的频谱进行分析,相应的频谱称为“短时谱”。进行频谱分析时,在时域数据进行短时FFT处理之前都要进行加窗处理。

(2) 短时傅里叶变换(频谱分析):傅里叶频谱分析的基础是傅里叶变换,用傅里叶变换及其反变换可以求得傅里叶谱、自相关函数、功率谱、倒谱。由于语音信号的特性是随着时间缓慢变化的,由此引出语音信号的短时分析。如同在时域特征分析中用到的一样,这里的傅里叶频谱分析也采用相同的短时分析技术。

信号x(n)的短时傅里叶变换定义为

- 6 -

河北工业大学2013届本科毕业设计说明书

Xn(ej?)???x(m)?(n?m)e?j?m (2-1) m???j?k)(eXn式中,ω(n)为窗口函数。可以从两个角度理解函数的物理意义:第一种解释是,当n固定时,如n=n0,则

Xn0(ej?k)是将窗函数的起点移至n0处截取信

号x(n),再做傅里叶变换而得到的一个频谱函数。这是直接将频率轴方向来理解的。另一种解释是从时间轴方向来理解,当频率固定时,例如ω=ωk,则Xn(ej?k)可以

看作是信号经过一个中心频率为ωk的带通滤波器产生的输出。这是因为窗口函数

jω(n)通常具有低通频率响应,而指数e?k对语音信号x(n)有调制的作用,使频谱产生移位,即将x(n)频谱中对应于频率ωk的分量平移到零频。[13]

(3)短时傅里叶反变换(倒谱分析):傅里叶变换建立了信号从时域到频域的变换桥梁,而傅里叶反变换则建立了信号从频域到时域的变换桥梁这两个域之间的变换为一对一映射关系。倒频谱,就是对功率谱的对数值进行傅立叶逆变换,将复杂的卷积关系变为简单的线性叠加,从而在其倒频谱上可以较容易地识别信号的频率组成分量,便于提取所关心的频率成分,较准确地反映故障特性。在语音识别中中可采用倒谱变换来观察语音信号的各种特点如基频,从而来区别两种语音信号。倒频谱分析是一种二次分析技术,是对功率谱的对数值进行傅立叶逆变换的结果。其计算公式为:

Ca(t)?F?1?log??Sm(f)??? (2-2)

该分析方法受传感器的测点位置及传输途径的影响小,能将原来频谱图上成族的边频带谱线简化为单根谱线,以便提取、分析原频谱图上肉眼难以识别的周期性信号。但是进行多段平均的功率谱取对数后,功率谱中与调制边频带无关的噪声和其他信号也都得到较大的权系数而放大,降低了信噪比。

我们知道,Xn(ej?k)以看作是加窗后函数的傅里叶变换,为了实现反变换,将

Xn(ej?k)进行频率采样,即令ωk=2πk/L,则有

Xn(ej?k)???[x(m)?(n?m)]e?j?kmm??? (2-3)

其中,L为频率采样点数。将Xn(ej?k)在时域n上每隔R个样本采样,则可令

j?k)?X(ej?k),n?rR,r?1,2,...(eYrrR (2-4)

- 7 -

河北工业大学2013届本科毕业设计说明书

用这些Yr(ej?k)求出其离散傅里叶反变换yr(n)如下:

1L?1yr(n)??Yr(ej?k)ej?knLk?0 (2-5)

??y(n)??yr(n)r??? (2-6)

可以证明,x(n)和y(n)之间只相差一个比例因子,它们的关系如下:

y(n)?x(n)W(ej?)/R [13][14][15][16]

(2-7)

2.2.2 语音信号的matlab分析

根据以上分析及相应公式,用matlab进行数据分析和处理,画出语音信号的频谱图,倒谱图作为加密以后图形的对照,以及与解密后信号的频谱倒谱做比较,观察信号的恢复情况。如图2.2程序如下:

[y,fs]= wavread('e:\\ desktop\\al.wav',(65000)); %读入一段语音数据 t =(0:length(y)-1)/fs;%计算样本时刻 subplot(3,1,1); %确定显示位置 plot(t,y); %画波形图 legend('波形图'); xlabel('时间 (s)'); ylabel('幅度');

x = fft(y.*hamming(length(y)));%作加窗傅立叶变换 fm=5000*length(x)/fs; %限定频率范围 f =(0:fm)*fs/length(x);%确定频率刻度 subplot(3,1,2);

plot(f,20*log10(abs(x(1:length(f)))+eps)); %画频谱图 legend('频谱图'); xlabel('频率(Hz)'); ylabel('频谱幅度(dB)');

c = fft(log(abs(x)+eps));%倒频谱计算

- 8 -