2. 陕西省无线电监测站, 陕西 西安 710065
手机、卫星电话、对讲机、北斗短报文终端等通信技术装备各有其局限性。例如,手机无法在信号盲区使用,对讲机只限于短距离广播通信,这就很大程度上限制了它们在抗震救灾等应急环境下的使用[1]。通信卫星本身不能定位导航,在户外作业领域具有局限性,且难以负担昂贵资费。北斗短报文使用文字通信,需逐个字符输入,不便于推广使用,且交互时间长,耽搁救援[2]。因此,基于北斗实现语音和定位的同传,为户外通信、应急救援开辟了新的技术途径。
目前,低速率语音编码算法已有广泛的研究。基于混合编码的码激励线性预测(code excited linear prediction,CELP)[3]在1.2×103 bit/s及更低的语音编码速率下,合成语音质量不高,编码质量低[4]。文献[4-5]中,基于混合激励线性预测(mixed excitation linear prediction, MELP)算法的2.4×103 bit/s及更低语音编码速率采用单脉冲作为浊音激励源,使得语音单调,自然度不足。文献[6]中提出了混合MELP/CELP语音编码模型,在编码端利用MELP和CELP分别对强弱清浊音进行处理,解决了相位不同步问题,但是编码速率太高。为了适应复杂的低速率语音通信场合,文献[7]中设计了一种基于TMS320F28335 DSP的多速率声码器,但是几种速率之间的转换调用算法频繁,语音编解码实时性不高。随着语音处理技术的发展,结合波形编码与参数编码的正弦激励线性预测算法(sinusoidal excitation linear prediction,SELP)[8]带来了更大的优势。在工程上它采用正弦激励模型作为浊音激励源,有效地描述了语音的周期特性和幅度特性。SELP算法不仅解决了CELP算法在低速率下语音质量急剧下降和美国联邦标准MELP算法存在的语音自然度不足的问题,而且能够在低编码速率下使得合成语音保持极高的质量,且算法的复杂度较低[4, 8, 9-10]。
本文创新点如下:①基于SELP设计了600 bit/s声码器,将语音编码用北斗短报文协议封装,完成了双向加密语音对讲。②将北斗输出的17字节的经纬度数据压缩为6.5字节,然后通过北斗短报文和语音同时传输。本文研究实现了仅基于北斗导航卫星同时完成加密语音双向对讲和定位共享的功能,具有非常重要的理论研究与产业化价值。
1 声码器技术本文在2.4×103 bit/s SELP算法的基础上,采用多帧联合量化技术[4, 11]设计了600 bit/s SELP算法的声码器,拓展了低码率语音处理技术在语音通信领域的应用。
1.1 声码器的编码原理声码器的编码具体流程如图 1所示。
声码器压缩编码算法采用了4帧联合量化设计。因此, 在分帧长度为20 ms的2.4×103 bit/s SELP算法基础上, 通过时间窗截取帧长为80 ms的语音, 并将语音信号编码为每帧48 bit。这样在传输速率12.5帧/秒下得到声码器编码速率为600 bit/s。然后利用每帧48个比特进行量化编码, 对预处理的原始语音进行线性预测编码(linear predictive coding, LPC)分析、基音估计、能量及FFT变换分析, 经过LPC转换线谱对系数(LSP)后进行基音量化、LSP量化与能量量化。
1) 基音估计
对语音周期的提取有波形估计法、相关法和变化法3种, 在SELP算法中, 采用自相关法提取语音周期。
首先, 在语音信号中去除高频信号对基音提取的影响, 将语音信号通过带宽为800 Hz的低通滤波器来实现。滤波器的系统函数如公式(1)所示。
(1) |
SELP算法采用对线性预测逆滤波器所求出的残差信号计算自相关函数来提取语音周期, 利用线性预测逆滤波去除语音信号的谱包络, 阶数越高对声道滤波器的模拟越好, 但会使谱包络谷处的噪声提升, 降低信噪比, 影响基音周期的精度。综合以上因素, 在SELP算法中采用二阶线性预测逆滤波器的系数a1, a2, 其由输入语音信号的前3个自相关系数r(0), r(1), r(2)来表示, 如公式(2)所示。
(2) |
可得逆滤波器的传递函数如公式(3)所示。
(3) |
考虑到现实生活中有很多童音和女性的声音的基因周期低于20, 因此SELP算法中设置的基音周期范围为[18, 144], 比MELP算法的稍低, 这样降低语音基音周期的下限会提高合成语音的质量。我们把经过线性预测逆滤波之后的语音信号设为eLP(n), 那么对其计算归一化自相关函数, 即在[18, 144]区间内对基音周期进行估计。采用的归一化自相关函数计算如公式(4)所示。
(4) |
另外, 为了减少自相关分析过程中提取基音参数产生的倍频或半频错误, 算法采用了动态规划算法对基音周期的提取进行平滑, 从而选出最佳基音周期。SELP算法中, 每一帧选择5个最大的归一化自相关函数r(m)作为基音周期的候选值, 从而保证基音周期的命中率。
2) LPC分析
线性预测编码(LPC)分析技术[12]是现代语音信号处理的核心技术, 广泛应用于各种语音编码算法中。它的思想是借助线性预测误差滤波器, 利用语音信号的相关性, 将当前的语音信号用若干个过去信号的线性组合来表示或逼近, 通过使当前真实的语音信号与预测值之间的误差在某种准则下达到最小值来唯一确定一组预测系数, 而这组系数正是语音产生模型中声道模型的系数。
语音信号线性预测模型框图如图 2所示。
其中, A(z)为线性预测误差滤波器的传递函数, 表达式如公式(5)所示。
(5) |
式中:p为线性预测误差滤波器的阶数; ai为线性预测误差滤波器系数。
设当前语音信号为x(n), 过去p个信号为x(n-1), x(n-2), …, x(n-p), xe(n)为x(n)的线性预测值, e(n)为x(n)与xe(n)的误差, 则线性预测值、预测值与原始值之间的误差计算如公式(6)至(7)所示。
(6) |
(7) |
在某种准则下由已知的x(n)求出aj, 其中j=1, 2, …, p。理论上我们选择均方误差E[e2(n)]最小准则, 其中E为数学期望。为了使E[e2(n)]达到最小, {aj}必须满足
(8) |
将公式(6)至(7)代入公式(8), 可得公式(9)。
(9) |
即有
(10) |
得e(n)与x(n-k)相互正交。
我们令x(n)的自相关序列为r(k, j)=E[x(n-k)*x(n-j)], 则可得公式(11)
(11) |
其矩阵计算表达式如公式(12)所示。
(12) |
由公式(12)可知, 我们只需要求出r(k)就可以得出预测系数。本文采用Levinson-Durbin算法求解预测系数。
本文对声码器研究的核心思想是:基于编码产生的LSP参数、基音参数和能量参数等语音参数, 将语音信号看作一组正弦谐波的叠加总和, 如公式(13)所示。
(13) |
这样只需要找到每一个正弦波频率, 并提取其所对应的幅值和相位就可以利用正弦模型与编码端的语音参数对语音信号进行参数编码。本文采用高分辨率离散傅里叶变换(DFT)幅度谱选峰的方法来找到描述语音信号的最佳频率点。参数估计流程如图 3所示。
其中s(n)为原始语音信号, 非线性基音(non-linear pitch, NLP)估计实现基频值的提取。
1.2 声码器译码基本原理根据语音组成结构, 译码端使用正弦激励与噪声激励的混合激励方式对语音进行合成, 其中利用正弦谐波信号作为浊音激励源, 白噪声发生器产生清音部分的激励信号。整个过程摒弃了普通电话采用的发送语音波形的思想, 而是利用北斗信道将正弦参数传输到解码器, 最终重建语音。
译码基本流程如图 4所示。
2 北斗语音 & 定位同传系统本文搭建的北斗语音和定位同传系统的总体结构如图 5所示。
系统硬件结构关系图如图 6所示, 硬件系统主要包括声码器、STM32处理器、RNSS模块及其天线、RDSS模块及其天线、蓝牙模块。STM32处理器用于控制各模块协调工作; 声码器用于语音编解码; RNSS主要用于BD2/GPS双模定位、授时; RDSS完成北斗短报文收发; 蓝牙模块实现与手机APP间通信。软件主要包括串口通信、经纬度处理、语音编解码、蓝牙串口通信和辅助功能。
2.1 硬件结构 2.1.1 关键模块微处理器采用STM32F103RBT6。该芯片属于STM32F103系列, 采用ARM Cortex-M3内核, 片内FLASH容量为128 k。RNSS模块为ATGM336H, RDSS模块为FB3514, 蓝牙模块为RF-BM-S02A。
2.1.2 声码器模块基于开发声码器的正弦激励线性预测算法, 自主研发的低码率声码器芯片可以在600 bit/s速率下合成较高质量的语音。芯片采用UART接口与MCU连接通信, UART波特率为9 600 bit/s, 数据格式为8N1, 用户可以通过UART接口实现语音编码数据读写, 且该过程是异步、全双工的。并与处理器之间以定长帧进行通信, 帧长为8字节。每75 ms, 输出和接收1帧数据。帧结构字段定义如下:
Header_1(B1): 1 byte, 帧头, 固定为0x4C
Header_2(B2): 1 byte, 帧头, 固定为0x4E
Data(B3-B8):语音数据
2.2 程序设计 2.2.1 语音编码转换程序设计此程序的设计是本系统至关重要的一部分, 用来将语音编码数据转化为北斗短报文数据格式, 并将短报文发送给RDSS模块。在北斗短报文通信中, 发送方是以通信申请语句的形式发送短报文的, 通信申请语句格式如表 1所示。
$CCTXA, <1>, <2>, <3>, <4>*hh<CR><LF> | |
<1> | 接收号码:接收信息的北斗终端卡号 |
<2> | 通信类别:0=特快通信, 1=普通通信 |
<3> | 传输方式:0=汉字, 1=代码, 2=混编 |
<4> | 通信内容, 参见注1 |
注1:通信电文内容:
·传输方式为“0”时, 每个汉字以16 bit表示, 占用2个ASCII码长, 以计算机内码传输;
·传输方式为“1”时, 每个代码以一个ASCII码表示;
·传输方式为“2”时, 电文内容首字母固定为“A4”, 按先后顺序每4bit截取一次, 转换成16进制数, 每个16进制数以ASCII的形式表示。如数据长度不是4bit的整数倍, 高位补0, 凑成整数倍。
例如:
ASCII码:$CCTXA, 0011504, 1, 0, 美丽的中国欢迎您*7A
含义:向北斗终端号为11504的用户通过汉字格式发送普通北斗短报文, 报文内容为“美丽的中国欢迎您”。
在本设计中, 通信申请语句帧头“$CCTXA”是固定的, 接收卡号可以自行设定, 通信类别选“1=普通通信”, 传输方式固定采用“1=代码”。因为RDSS语句采用ASCII码方式传输, 所以需要将16进制语音编码中的每一位用ASCII码表示, 如语音编码0xA5用‘A’和‘5’2个字符来表示, 然后放入通信申请语句中的通信内容字段。
2.2.2 语音编码解析程序该程序的设计也是本系统中至关重要的部分, 对从接收的北斗短报文中的语音编码信息进行提取, 并将其转化为16进制编码, 然后每隔6字节加入帧头0x4C和0x4E。在北斗短报文通信中, 接收方接收到的北斗短报文是以通信信息语句的形式呈现的。通信信息语句数据格式如表 2所示。
$BDTXR, <1>, <2>, <3>, <4>, <5>*hh<CR><LF> | |
<1> | 信息类别:1=普通通信, 2=特快通信, 3=通播通信, 4=按最新存入电文查询获得通信, 5=按发信方地址查询得的通信 |
<2> | 发送号码:发送通信信息的北斗终端卡号 |
<3> | 传输方式, 0=汉字, 1=代码, 2=混编 |
<4> | 发信时间:信息类别为1、2或3时, 此项为空; 信息类别为4或5时, 发信时间为被查询的通信电文在中心控制系统注记的发生时间 |
<5> | 通信内容, 参见注1 |
注1:通信电文内容:
·传输方式为“0”时, 每个汉字以16 bit表示, 占用2个ASCII码长, 以计算机内码传输;
·传输方式为“1”时, 每个代码以一个ASCII码表示;
·传输方式为“2”时, 电文内容首字母固定为“A4”, 按先后顺序每4bit截取一次, 转换成16进制数, 每个16进制数以ASCII的形式表示。如数据长度不是4bit的整数倍, 高位补0, 凑成整数倍。
例如:
ASCII码:$BDTXR, 1, 0011504, 2, none, A4C4 E3BAC3C4E3BAC34142434445464748313233343536 37383930*3D
含义:接收到北斗终端号为11504的用户通过混编格式发送的普通北斗短报文, 报文内容为“你好你好ABCDEFGH1234567890”。
从通信信息语句的格式可以看出, 通信内容位于第五个逗号和第一个星号之间。因此, 只要获取这2个符号的位置, 便可提取语音编码数据。由于接收到的语音编码数据使用ASCII码表示, 所以还需要将每两个字符转化为一字节16进制数, 如将字符‘A’和‘5’转化为0xA5。最后每隔6字节加入帧头0x4C和0x4E即可发送给声码器。
2.2.3 经纬度压缩程序设计为了实现位置共享, 本设计将系统的经纬度信息压缩为6.5字节, 然后和语音编码一同转换成北斗短报文, 并发送给RDSS模块。另一方接收到北斗短报文后, 提取出经纬度信息并进行解析, 然后通过蓝牙发送给手机端, 用户便可在手机端看到通信方的经纬度。另外, 北斗卡有通信容量和通信频度的限制, 例如, “北斗一号”民用三级北斗卡每次只能发送78.5字节的数据, “北斗三号”民用三级北斗卡每次可发送2 000字节的数据, 通信频度都为1分钟一次。因此, 对于一次通信, 为使语音编码数据有更大的传输空间, 必须对经纬度信息进行压缩[13]。
传统的GPS压缩算法把经纬度信息当做字符串来处理。本设计则将预处理后的经纬度当作整数来处理, 虽然压缩率与Huffman编码算法及Golomb-Rice编码算法相近, 但代码简单, 只需要自定义一个简单且可以将字符串转化为整数的函数, 并做简单的位操作即可, 而且解析起来十分简单, 对系统的实时性几乎无影响[14]。下面进行详细说明。
假设经过预处理后, 纬度数据为字符串“bbmmmmm”, 经度数据为字符串“cccnnnnn”。经过计算发现, 如果将纬度中表示度的字符“bb”放在经度数据字符之后, 即变成“cccnnnnnbb”和“mmmmm”, 然后将二者转化为整数, 那么将可以将经纬度数据压缩为6.5字节。原因如下:因为纬度取值范围为0°~90°, 经度取值范围为0°~180°, 所以cccnnnnnbb最大值为1800000090, 用16进制可表示为0x6B49D25A, 即cccnnnnnbb在内存中最多占用4个字节; mmmmm最大值为59 999, 用16进制可表示为0xEA5F, 即在内存中最多占用2个字节。再用半个字节表示半球标识符, 如用0001表示(N, E), 0010表示(N, W), 0100表示(S, E), 1000表示(S, W)。于是就可完整地用6.5字节表示经纬度数据, 压缩率为(17-6.5)/17≈61.8%。
经纬度压缩程序的设计思想如下:
·首先经过预处理, 将纬度“bbmmmmm”和经度“cccnnnnn”转化为字符串“cccnnnnnbb”和“mmmmm”;
·然后调用自定义的字符串转整数函数分别将以上2个字符串转化为整数, 即得到cccnnnnnbb和mmmmm。其中, cccnnnnnbb在内存中占4个字节, 假设用0x98ABCDEF表示; mmmmm在内存中占2个字节, 假设用0xDCBA表示;
·再然后分别从这2个整数的高四位开始, 通过不断向左移动4位, 将整数的每四位转化为一个ASCII码, 最终cccnnnnnbb转变成字符串“98ABCDEF”, mmmmm转变成字符串“DCBA”;
·接着, 用对应的4位二进制数表示半球标识符, 并将其转换为ASCII码, 假设为“8”;
·最后, 将所有ASCII码按照一定顺序存放在同一个数组中, 如“98ABCDEFDCBA8”即可完成压缩编码操作。
3 实验及系统测试结果本次研究的实验与测试从两方面展开, 首先是邀请10位同学对语音对讲过程的合成语音质量进行MOS评分。然后, 利用串口助手分别对核心的语音通信功能和系统的位置共享功能进行了测试。
3.1 语音质量评估MOS(mean opinion score)评分是一种国际标准下用来评价系统接收到的经过压缩后的话音质量的评估方法, 分为5个不同的等级:5优; 4良; 3一般; 2差; 1劣。本次实验邀请了10名同学在相同安静的环境下收听了原始语音与经过北斗语音通信系统合成的语音, 并进行了评分, 结果如表 4所示。
从表中可以得出600 bit/s SELP算法的MOS得分为2.9, 说明语音具有较高的可懂度, 但是语音的清晰度需要进一步优化。
3.2 北斗语音通信功能测试在进行语音通信功能测试时, 为了直观地看到收发的数据, 结合声码器发送数据的特点, 我们利用串口调试助手每隔75 ms发送一帧数据。因为本系统北斗卡的通信容量只有78.5字节, 而经纬度信息占用了6.5字节, 所以本系统一次最多发送12帧语音编码数据, 也即最多发送1秒语音。如图 7所示, 串口调试助手每隔75 ms向STM32处理器发送一帧数据“4C 4E 80 1F 8C 18 0A 40”, 表明本系统能正常收发语音。
在本次测试中, 共进行了8次语音通信功能测试, 通信频率为60 s。最后, 8次测试都能正常地收发语音, 而且接收的语音听起来清晰。因此, 测试结果表明北斗语音通信功能正常。
3.3 位置共享功能测试首先测试系统的经纬度压缩功能。测试时, 本系统处于东经108°45′33.78″、北纬34°02′16.26″。根据程序的设计思想, 经纬度的压缩编码应为0xE2405A04FD801。如图 8a)所示, 进行语音通信时, 系统接收到的北斗短报文后13个字符为E2405A04FD801, 表明系统的经纬度压缩功能正常。
然后测试系统的经纬度解析功能。测试时, 在接收到RMC语句中, 经纬度信息为“3 402.274 6, N, 10 845.557 1, E”。根据程序设计思想, 解析出来的经纬度应为“N3402274 E1084557”。如图 8b)所示, 可知系统的经纬度解析功能正常。
4 结论区别于GPS等其他导航系统, 中国北斗独有的短报文信道能够实现双向通信功能, 为此, 本文研发了适配北斗短报文信道的600 bit/s声码器, 实现了双向保密语音和定位同传的通信系统。首先, 围绕整个系统的硬件结构阐述了各个模块工作原理及功能; 其次, 从程序设计上把语音编码与北斗短报文传输协议对接, 实现通过北斗卫星进行语音通信与位置传输的功能; 最后, 利用串口调试助手打印了语音编码数据及北斗收发信息, 并进行了语音对讲实验。实验测试结果的定位信息准确, 语音质量达到MOS 2.9评分, 可懂度较高。本文工作对于户外通信和应急搜救等领域具有非常重要的理论研究价值和市场应用前景。
致谢
感谢宁波海网信息技术有限公司对本文工作进行多轮次指导, 并为本文工作提供测试与验证平台。
[1] |
吕雪峰. 北斗卫星导航系统与防灾减灾救灾[J]. 中国减灾, 2018(23): 14-17.
LYU Xuefeng. Beidou Satellite Navigation System and Disaster Prevention and Mitigation[J]. Disaster Reduction in China, 2018(23): 14-17. (in Chinese) |
[2] |
王海涛. 应急通信发展现状和技术手段分析[J]. 电力系统通信, 2011, 32(2): 1-6.
WANG Haitao. Analysis on Current Status of Emergency Communication and Its Technical Means[J]. Telecommunications for Electric Power System, 2011, 32(2): 1-6. (in Chinese) |
[3] | TANDEL M, SHAH V, PATEL B. Implementation of CELP Coder and to Evaluate the Performance in Terms of Bit Rate, Coding Delay and Quality of Speech[C]//International Conference on Electronics Computer Technology, 2011 |
[4] | 苏日娇, 李绍胜. SELP低速率语音编码算法优化及实现[EB/OL]. (2012-12-31)[2019-12-01]. http://www.paper.edu.cn/releasepaper/content/201212-1200 |
[5] |
石乔林, 韦凯, 吴辉. 一种基于MELP模型600bps声码器的设计[J]. 电子与封装, 2012(10): 28-30.
SHI Qiaolin, WEI Kai, WU Hui. A 600bps Speech Coder Based on MELP[J]. Electronics & Packaging, 2012(10): 28-30. (in Chinese) |
[6] |
李强, 舒勤军, 谢虹恩, 等. 一种基于混合MELP/CELP的4kbit/s声码器[J]. 重庆邮电大学学报, 2017, 29(2): 143-148.
LI Qiang, SHU Qinjun, XIE Hongen, et al. A 4 kbit/s Vocoder Based on Hybrid MELP/CELP[J]. Journal of Chongqing University of Posts & Telecommunications, 2017, 29(2): 143-148. (in Chinese) |
[7] |
孙凤梅, 薛颜, 李克靖. 基于TMS320F28335的声码器设计与实现[J]. 电子设计工程, 2018, 26(20): 189-193.
SUN Fengmei, XUE Yan, LI Kejing. Design and Implementation of a Vocoder Based on TMS320F28335[J]. Electronic Design Engineering, 2018, 26(20): 189-193. (in Chinese) |
[8] | ROWE D G. Techniques for Harmonic Sinusoidal Coding[D]. Adelaide: University of South Australia, 1997 |
[9] | LU T, ZHAO X. An MELP Vocoder Based on UVS and MVF[C]//International Conference on Machine Learning & Intelligent Communications, 2016 |
[10] |
何丹丹. 600bps语音编码算法研究和实现[D].西安: 西安电子科技大学, 2015 HE Dandan. Research and Implementation on 600bps Speech Coding Algorithm[D]. Xi'an: Xidian University, 2015(in Chinese) |
[11] |
李强, 张玲, 朱兰. 一种甚低码率声码器的设计[J]. 重庆邮电大学学报, 2018, 30(6): 776-782.
LI Qiang, ZHANG Ling, ZHU Lan. Design of an Ultra-low Bit Rate Vocoder[J]. Journal of Chongqing University of Posts & Telecommunications, 2018, 30(6): 776-782. (in Chinese) |
[12] |
刘可文, 彭文振, 熊红霞, 等. 线性预测(LPC)技术及其实现方法[J]. 凉山大学学报, 2001, 3(1): 5-8.
LIU Kewen, PENG Wenzhen, XIONG Hongxia, et al. The Fundamental of LPC Technology and Its Realization Methods[J]. Journal of Liangshan University, 2001, 3(1): 5-8. (in Chinese) |
[13] |
谭鹏源.基于嵌入式C语言的北斗语音对讲系统开发[D].西安: 西北工业大学, 2019 TAN Pengyuan. Development of Beidou Voice Intercom System Based on Embedded C language[D]. Xi'an: Northwestern Polytechnical University, 2019(in Chinese) |
[14] |
陈耀立. GPS数据压缩算法的研究与应用[D].长沙: 湖南大学, 2015 CHEN Yaoli. Research and Application of GPS Data Compression Algorithm[D]. Changsha: Hunan University, 2015(in Chinese) |
2. Shaanxi Radio Monitoring Station, Xi'an 710065, China