APP下载

基于Goertzel算法的亚音频识别方法

2014-02-09张育钊

通信技术 2014年2期
关键词:对讲机解码音频

刘 伟,张育钊

(华侨大学信息科学与工程学院,福建厦门361021)

基于Goertzel算法的亚音频识别方法

刘 伟,张育钊

(华侨大学信息科学与工程学院,福建厦门361021)

对讲机通信中,一般使用亚音频信号(CTCSS)作为识别信号,判断是否对接收到的信号进行解码。提出了Goertzel算法在对讲机的亚音频提取的应用。Goertzel是一种特殊的离散傅里叶变换的方法,对于检测单频率有很好的效果。大幅度降低了亚音频提取的计算量,通过降低算法开销来降低整个系统的成本。相对于传统的使用独立IC识别或者傅里叶变换法,本方法有很大的优势,在生产中得到良好的应用。

戈泽尔算法 连续语音控制静噪系统 对讲机

0 引 言

亚音频信号,即连续语音控制静噪信号(CTCSS)。是种将低于音频频率的频率(一般小于300 Hz)叠加在音频信号种进行传输的技术。其目的就是防止频率复用发生时,相互间的同频干扰。由于频谱资源受限,当某一地区的用户量大于一定数量时,不同用户群使用同一频谱资源的情形时有发生,为了防止不同用户群之间的相互干扰。在对讲机的客户量不断增加的今天,有限的频谱资源使得亚音频技术凸显其重要性。亚音频技术在国外的对讲机系统中已得到广泛的应用,美国和日本生产的对讲机都包含有亚音频功能。国内在近几年也开始大规模应用。文中在介绍Goertzel算法的基础上描述了算法在亚音频解码方面的应用,并在最后给出了仿真结果。该算法相对于传统的CTCSS识别方法,在对讲机的成本和效率上有着很大的优势,能很有效的应用对讲机系统中。

1 亚音频的检测

天线接受的射频信号在经过一系列处理后,由二次中频输出为音频信号。此时的音频信号是混叠有亚音频信号的语音信号。音频信号经过高通滤波器滤除亚音频信号,剩余的语音信号经功放放大后输出。音频信号的另一路由300Hz的低通滤波器滤除语音信号,剩余的便是亚音频信号。由CPU对亚音频信号进行频率识别,将其频率与本机设定的CTCSS值进行比较,决定是否开启静音。通信时,同一信道只有亚音频信号一致时,才能正常相互通信。值得注意的是,亚音频信号是叠加在原信号的低频段,并不对语音信号产生干扰,若接收端没有设置CTCSS,仍然可以接收到语音信号。所以亚音频信号并不是对语音信号进行加密,而是类似一种标示。

一种传统的CTCSS信号识别的方法是使用CTCSS编解码芯片(如MX165C)来识别信号。MX165C可产生多组亚音频信号,其单组解码最大响应时间不大于250 ms。使用时可根据情况选择单片或多片方案。增加芯片可降低多组亚音频信号的识别时间。由于成本限制,目前的对讲机方案为了降低成本大多已经不再使用专用的解码芯片。一种更加简单的,利用软件来进行解码的方案已经渐渐成为主流。

利用软件解码的系统框图如图1所示:由模数转换器采样,发送给MCU进行处理。比较典型的识别亚音频的方法是DFT法。利用DFT可以判断在指定亚音频出信号的幅度,将此幅度与背景噪声做比较,以此判断接收信号是否存在该亚音频信号。

图1 亚音频检测的硬件结构Fig.1 Hardware structure of sub audio detection

由于亚音频自身频率很低,周期很长的特点,准确检测频率需要较长的时延,而常用的DFT检测法需要一个完整的数据块作为输入,存储大量的采样数据,又加长了检测亚音频所需的时间,增大了通信的时延,降低了实时性。如果采用DFT的方法检测,算法所需要的开销非常大,占用了过多的资源,对于嵌入式系统来说非常的不合算。普通对讲机所使用的亚音频一般在67~250.3 Hz之间,最窄的频率间隔只有2.3 Hz。为了准确分辨亚音频需要的点数,在音频系统8 kHz的采样率下所需要的数据量超过3 kHz,采集数据所需要的时间就已经数百毫秒。而FFT需要大量的乘法计算,对于普通MCU来说乘法速度并不快。从而使检测亚音频的检测严重影响整机的工作性能。为了不使系统的性能下降,则需要更换跟高档的带有独立乘法器的MCU。致使成本上升数倍。整个方案虽能使用,但性能上并不出众,成本上也没有优势。使用Goertzel算法可以很好地解决使用FFT带来的资源消耗的问题。

2 使用Goertzel算法检测亚音频

2.1 Goertzel算法介绍

Goertzel算法是一种数字信号处理技术,提供了一种实际中非常有效的离散傅里叶变换。曾被应用于识别电话按键音的DTMF音调[1-2]。其思路和DFT的最大区别在于,DFT计算了整个频率段的信号幅度。而Goertzel算法通过对DFT进行变形化简,只去计算指定频点的信号幅度。对于CTCSS信号这种固定频点的信号检测而言,Goertzel算法能够以非常少量的计算得到与DFT算法相同的结果。

Goertzel算法的核心可以认为是一个二阶的滤波器,转移函数及传递函数(见图2)如下所示:

图2 传递函数框Fig.2 Transfer function block diagram

对输出采用递归方式计算,引入中间变量Qk可得:

其输出幅度平方值是

其算法流程图如图2所示,Goertzel算法依靠中间变量Qk,使用递归方式计算,拥有两个复数共轭极点。

首先,确定系统的采样率fs。对于普通的应用来讲,fs的值通常已经根据应用场合而确定,对于对讲机而言,音频采样率通常参考电话系统的PCM标准,选用8 kHz。在对讲机应用中,检测CTCSS信号的fs并不涉及双机通信,因而fs可自由选取。

其次,根据所需要的频率分辨率确定所需的采样点数N,根据待计算的目标频率f计算出k。调用算法对采样输入进行计算。经Goertzel算法输出的即为信号在指定频率的幅度信息。通过是否存在亚音频信号时的幅度信息对比,获得CTCSS信号的判断结果。

在嵌入式系统中,算法使用流程可描述为:

1)定义N,k。

2)获取系数:

3)开始迭代运算,其中

4)计算得出幅度信息:

由此可见,算法所消耗的资源并不多,for循环中每次仅计算一次乘法,这种算法结构,以损失相位信息为代价,降低了计算量,非常利于嵌入式处理单元的实现。

对于多组亚音频信号的识别,算法具有相当的优势。递归的机构特点使算法可以同时指定2个或者多个k值进行计算。调整循环内容,实现多个循环同时迭代,同时检测多个频率的的信号幅值,以此方法代替多片独立IC识别时的应用。考虑极端情况,CTCSS信号相邻最近时的2.3 Hz。Goertzel算法识别出多组亚音频信号所需要的总时间大约是500 ms,远小于独立IC所需要的1.5 s。可见此方案在成本和效率上都胜过传统的独立IC识别方法。

2.2 Goertzel算法计算量的讨论

应用中Goertzel算法的计算量的大小是由N值确定的。计算的N值越大,即采样序列越长,在fs已经确定的情况下,其信号的频率分辨能力就越强,同时带来的时延也越长。因此对于采样点数N的选择取决于系统所需要的频率分辨率。如果N的值过小,信号检测时,相邻的亚音频会落入同一检测窗口,无法分辨,引起误判。若N值过大,既增加了无用的计算量,又造成时延的加大。由于CTCSS信号相邻的最近的频率间隔是2.3 Hz,若在8 kHz的采样率的前提下,N的值至少需要3 489。

若按照常规方法使用DFT对信号进行频率分析,其计算量将会非常庞大。DFT需要对整块数据进行运算,故需等待3 489个采样点全部存储后再进行计算,这期间产生的延时已经达到数百个毫秒。而处理三千多个数据又需要大量的中间单元作为存储,这庞大的数据量不利于嵌入式系统的处理,会大幅度降低系统的实时性。另一个问题在于FFT算法需要采样点数需为2的整数次幂。所以在使用FFT时,N的值又会被迫选择4 096,无疑又进一步增大了计算量。

对FFT和Goertzel的计算量进行对比,若输入序列长度为N,结果如表1所示。

表1 算法的计算量Table 1 Computation of the algorithm

可以知道,N=4 096时,Goertzel算法虽由DFT变形推导得到,计算结果相同,但在计算量上远远小于FFT算法。

与FFT的不同之处在于,Goertzel算法的数据块不用是2的整数次幂,这为选择样点数N提供了很大的便利。另外,Goertzel算法的递归特点使它不用等待数据块完全存储后再开始计算,在采样过程中即可开始计算,节省了大量的存储单元,十分易于嵌入式系统的应用。在采样速率为8 kHz时,帧周期为125 μs,故需在每个采样周期内完成一次计算。对于常用的MCU而言,完全可以胜任。故当N点采样结束时,即可完成对信号指定频率的幅值判断,大大提高了系统的实时性。Goertzel算法一次只计算一个频点的傅里叶分量,所以很明显,在CTCSS检测领域,Goertzel算法比FFT拥有更高的计算效率[4]。

3 仿真结果

为了验证Goertzel算法在亚音频检测中的应用,采用了1 kHz的正弦波与67 Hz的亚音频信号的叠加作为输入信号。其输入可表示为:

由于Goertzel算法只计算指定频率的分量,为了使算法结果更为直观,图3列出了调用4 000次Goertzel算法计算出的0~4 kHz所有频率分量的结果。

由图3可以观察到,左边较低的信号,为67 Hz信号的频率分量,另一根则为1 kHz信号。使用Goertzel算法得到了与FFT算法相同的计算结果,对于指定的亚音频67 Hz,算法能够计算出其频率幅度[5]。另外可以发现,亚音频信号与背景噪声的功率差别比较大,这也是用阈值法判断亚音频是否存在的依据。

图3 Goertzel算法计算结果Fig.3 Calculation results of Goertzel algorithm

实际使用中,Goertzel算法在采集输入的音频数据的同时读取本机所设定的亚音频的值计算指定的频率分量,然后将计算结果与预设的亚音频信号的阈值进行比较。若结果大于所设定的阈值,则判定存在该亚音频分量。

有关阈值选取需按以下步骤进行,定义待检测的亚音频频率为fa:

1)关闭亚音频功能,发送一段测试语音信号,并利用Goertzel算法计算,其中k=N*。

2)打开亚音频功能,即在测试信号中加入亚音频信号。再次重复以上计算,得到。

3)设定阈值P为:

工程上为减小误差常采用多次测量求平均的方法。根据不同批次的对讲机使用软件进行自动测试并求值。

4 结 语

Goertzel算法采用离散信号分析一个可选的频谱分量,但与DFT不同的是,Goertzel算法只计算单一频率对应的频谱分量,在检测CTCSS信号时化简掉了相位的计算,因而计算量得到精简。对覆盖全部频谱而言,Goertzel比DFT有着更高的复杂度,但对单一频率而言,它的效率更高,适合各种小型处理器和嵌入式设备。对于亚音频检测,Goertzel算法可以使用递归的方式在存储数据的同时开始计算,节省了DFT所需的大量存储单元,很好的消除了采集数据所需要的时延,提高了通信的实时性。无论在硬件成本上,还是在计算效率上,Goertzel算法不但优于传统的独立IC的识别方法,也明显优于使用DFT的软件解码方案,此方案已最新出品的对讲机中得到稳定的应用。

[1] 夏斌,于永学,李小瑞.戈泽尔算法在DTMF信号检测中的应用与改进[J].电子测量与仪器学报:增刊, 2008(S2):53-56.

XIA Bin,YU Yong-xue,LI Xiao-rui.Application and Improvement of Goertzel Algorithm on DTMF Signal Detection[J].Journal of Electronic Measurement and Instrument:Suppl,2008(S2):53-56.

[2] 薛曼芳.基于改进的Goertzel算法的双音多频检测器的设计[J].兰州工业高等专科学校学报,2008, 15(03):27-30.

XUE Man-fang.A New Gertzel Algorithm Based DTMF Signal Detector[J].Joumal of Lanzhou Polytechnic College,2008,15(03):27-30.

[3] 李尚柏,钟睿.Goertzel算法在实时电力参数测量中的应用[J].四川大学学报:自然科学版,2008,45(05): 1125-1128.

LI Shang-bo,ZHONG Rui.Application of Goertzel Algorithm Used in Real-Time Eclectic Parameter Measurement[J].Journal of Sichuan University:Natural Science Edition,2008,45(05):1125-1128.

[4] 王卫兵,朱秋萍,徐心毅,等.Goertzel算法的一种改进计算结构[J].武汉大学学报:理学版,2007,53(03): 375-378.

WANG Wei-bing,ZHU Qiu-ping,XU Xin-yi,et al.An Improved Algorithm for Goertzel Algorithm[J].Journal of Wuhan University:Natural Science Edition,2007,53 (03):375-378.

[5] 弋今朝,张禄林,钱玉美.一种新的基于Goertzel算法的DTMF信号检测方法[J].通信技术,2002(09):16-18.

YI Jin-zhao,ZHANG Lu-lin,QIAN Yu-mei.A New Goertzel Algorithm-based DTMF Signal Detector[J]. Communications Technology,2002(09):16-18.

LIU Wei(1989-),male,M.Sci.,majoring in communication engineering.

张育钊(1963—),男,学士,副教授,硕士生导师,主要研究方向为通信工程。

ZHANG Yu-zhao(1963—),male,bachelor,associate professor,postgraduate tutor,mainly engaged in communication engineering.

CTCSS Recognition Method based on Goertzel Algorithm

LIU Wei,ZHANG Yu-zhao
(Faculty of Information Science and Engineering,Huaqiao University,Xiamen Fujian 361008,China)

CTCSS is used as an identification signal to adjust whether the received signal need decode in the field of Radio communication.This paper introduces the application of Goertzel algorithm in extracting the CTCSS from the signal of interphones.Goertzel,with good effect in detecting single frequency,is a special DFT method.It could effectively reduce the cost of the whole system by greatly decreasing the calculation amount of CTCSS extraction.Compared with the traditional methods by using individual IC Identification or FFT,the method proposed in this paper is of fairly higher superiority,and thus is widely applied in production.

Goertzel algorithm;CTCSS;Walkie-talkie

TN99

A

1002-0802(2014)02-0159-04

10.3969/j.issn.1002-0802.2014.02.008

刘 伟(1989—),男,硕士,主要研究方向为通信工程;

猜你喜欢

对讲机解码音频
《解码万吨站》
帮助聋哑人士交流的“对讲机”
家用对讲机的概述
解码eUCP2.0
必须了解的音频基础知识 家庭影院入门攻略:音频认证与推荐标准篇
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
基于Daubechies(dbN)的飞行器音频特征提取
音频分析仪中低失真音频信号的发生方法
Pro Tools音频剪辑及修正