-
声觉报警被广泛应用于医疗电子设备和仪器,且要求具有4次以上泛音,以保证音频信号的空间定位,方便操作人员迅速确定报警发生源头,提高服务效率[1-2]。但目前许多医用设备所提供的声觉报警存在诸多缺陷[3-4],如对音频信号的解码编码算法比较落后,通常只是采用简单的脉冲群或重放录音来完成;缺少泛音或含有诸多噪音,不能很好的反映报警信号之间的区别或所代表的患者需求。类似这类声觉报警容易引起患者易怒、紧张和不愉快,有时甚至导致病情恶化并威胁到患者的生命[5-7]。为了获得一种更加符合患者需求的声觉报警,本文对Goertzel算法进行简化,把它从复数领域简化到实数领域,并开发设计了基于嵌入式单片机的应用程序,以实现多泛音的正弦波声觉报警信号输出。
Goertzel算法的基本形式是一次只计算一个频点的傅里叶分量,目前主要用于数字信号的频谱分析[8-10],如应用于DTMF等只需有限频率点的场合。当系统只关注频带内部分频率的信号时,使用该算法会有较高的效率[11]。在以往的应用中,它也常被用于生成频率信号[12],如对于处理中低音频信号,利用Goertzel算法能达到有效结果。本文运用简化的Goertzel来实现医用声觉报警信号输出,并开发以嵌入式单片机LM3S9B92为控制器的算法应用程序,实现输出基音频率为500 Hz的正弦音频信号及其2~5次泛音信号。
-
Goertzel算法[9,13]常用于数字信号处理,属于离散傅里叶变换的范畴,目的是从给定的采样中求出某一特定频率信号。其形式如式(1)所示,n为步计数,每步输出长度为N的数据集合{X[n]0、X[n]1、X[n]N−1},N控制频率分辨率的大小。基于欧拉公式,展开式(1)得到式(2)。为了得到如式(3)所示的正弦信号,通过将X[n]及其共轭数X[−n]分别乘以基本虚数“j”相加的方法,即采用算式
$\dfrac{{{\rm j}\left( {X[n] - X[ - n]} \right)}}{2}$ ,消去式(2)中的余弦项(或实部),并将复数转换成实数。$$X[n] = \sum\limits_{k = 0}^{N - 1} {x[k]{{\rm e}^{ - {\rm j}2{\text π} n\frac{k}{N}}}} $$ (1) $$X[n] = \sum\limits_{k = 0}^{N - 1} {x[k]\left[ {\cos \left( {2{\text π} n\frac{k}{N}} \right) - j\sin \left( {2{\text π} n\frac{k}{N}} \right)} \right]} $$ (2) $$ Y[n] = \sum\limits_{k = 0}^{N - 1} {x[k]\sin \left( {2{\text π} n\frac{k}{N}} \right)} $$ (3) 为了实现式(3)中的正弦信号,基于二阶无限脉冲响应(IIR)[14]数字滤波器原理,建立如式(4)所示的正弦信号递归算式。式中第(n−1)和第(n−2)步的计算结果分别乘以系数“p”和“q”后作为第n步的输入。
$$\begin{split} & \sin \left(2{\text π} n\frac{k}{N}\right) = p \sin \left[ {2{\text π} \left( {n - 1} \right)\frac{k}{N}} \right] +\\ & \qquad q \sin \left[ {2{\text π} \left( {n - 2} \right)\frac{k}{N}} \right] \end{split} $$ (4) 根据sin(A±B)= sinAcosB±cosAsinB三角和差定理,将式(4)右边展开:
$$\begin{split} & p \sin \left[ {2{\text π} \left( {n - 1} \right)\frac{k}{N}} \right] + q \sin \left[ {2{\text π} \left( {n - 2} \right)\frac{k}{N}} \right] = \\ & \left[ {p \cos \left(\frac{{2k}}{N}{\text π} \right) + q \cos \left(\frac{{4k}}{N}{\text π}\right)} \right] \sin \left(2{\text π} n\frac{k}{N}\right) - \\ & \left[ {p \sin \left(\frac{{2k}}{N}{\text π} \right) + q \sin \left(\frac{{4k}}{N}{\text π} \right)} \right] \cos \left(2{\text π} n\frac{k}{N}\right) \end{split} $$ 将上式与式(4)左边
$\sin \left(2{\text π} n\dfrac{k}{N}\right)$ 比较得出:$$\left\{ \begin{aligned} & p \cos \left(\frac{{2k}}{N}{\text π} \right) + q \cos \left(\frac{{4k}}{N}{\text π} \right) = 1 \\ & p \sin \left(\frac{{2k}}{N}{\text π} \right) + q \sin \left(\frac{{4k}}{N}{\text π}\right) = 0 \\ \end{aligned} \right.$$ 即求得p =
$2\cos \left(\dfrac{{2k{\text π}}}{N}\right)$ 和q=−1。将所得结果代入式(2),得式(5)所示的递归算法:$$\begin{split} & \sin \left(2{\text π} n\frac{k}{N}\right) = 2\cos \left(\frac{{2k{\text π} }}{N}\right) \sin \left[ {\frac{{2\left( {n - 1} \right)k{\text π} }}{N}} \right] - \\ & \qquad\qquad \sin \left[ {\frac{{2\left( {n - 2} \right)k{\text π} }}{N}} \right] \end{split} $$ (5) 令a[n]、a[n−1]、a[n−2]满足:
$$\left\{ \begin{aligned} & a[n] = \sin \left(\frac{{2nk}}{N}{\text π} \right) \\ & a[n - 1] = 2\cos \left(\frac{{2k}}{N}{\text π} \right) {\rm{sin}}\left[ {\frac{{2\left( {n - 1} \right)k}}{N}{\text π} } \right] \\ & a[n - 2] = - {\rm{sin}}\left[ {\frac{{2\left( {n - 2} \right)k}}{N}{\text π} } \right] \\ \end{aligned} \right.$$ 得到:
$$a[n] = a[n - 1] + a[n - 2]$$ (6) 给定基音频率f0、信号采样频率fs,N为fs/f0的比,得到一组由基音频率为f0和2~N−1次泛音(k=0,1,2,···N−1)组成的声觉报警信号数学表达式:
$$\left\{ \begin{split} & a[n] = \sin \left(\frac{{2nk{f_0}}}{{{f_s}}}{\text π} \right) \\ & a[n - 1] = 2\cos\left (\frac{{2k{f_0}}}{{{f_s}}}{\text π} \right) {\rm{sin}}\left[ {\frac{{2\left( {n - 1} \right)k{f_0}}}{{{f_s}}}{\text π}} \right] \\ & a[n - 2] = - {\rm{sin}}\left[ {\frac{{2\left( {n - 2} \right)k{f_0}}}{{{f_s}}}{\text π} } \right] \\ & {{a[n] = a[n - 1] + a[n - 2]}} \\ & Y[n] = \sum\limits_{k = 0}^{N - 1} {x[k] a[n]} \end{split} \right.$$ (7) -
将编译后的程序代码烧写到数据处理器并且上电运行,得到图3所示信号。图3a为一个基音周期的信号波形(示波器为TDS2012C),其最大峰峰值达20 V。图3b为设置示波器工作在math分析模式下所得频率谱,其基音频率和2~5次泛音频率分别为0.5、1、1.5、2 和2.5 kHz,且具有相同的幅度。整个频谱曲线显示噪音幅度均低于基音幅度的5%。
为了验证本文设计,基于Matlab仿真,建立如图4所示的数学模型,该模型的信号输入输出可以用数学表达式
$f(t) =\displaystyle\sum\limits_{{{k = 1}}}^{\rm{5}} {{\rm{sin}}\left( {{{2{\text π} k}} \times {{500t}}} \right)} $ 来表示,也即基音频率和2~5次泛音频率分别为0.5、1、1.5、2 和2.5 kHz,且基音和泛音信号等幅度叠加。仿真模型输出信号波形及频谱分别显示在虚拟示波器(time scope)和虚拟频谱仪(spectrum scope)上。通过虚拟示波器和频谱仪观察仿真结果如图5所示。图5a和5b仿真所得波形和频谱与本文设计实验所得图3a和3b的结果相一致。
基于本文的设计和分析,每个频率点的计算量为只需把前两步结果相加后做一次乘以系数x[k]的运算。若式(7)中Y[n]再乘以一个在时域上按一定规律变化的系数A[n],则可以得到不同包络的信号群。如图6a所示A[n]满足纺锤形变化要求所得信号群波形。
改变式(7)中的基音频率f0便可得到不同的音调。表1为常用的中音对应的音频。利用表中不同音调的排列组合,可以得到丰富的报警用乐音。如通常采用的医用[1]声觉高级、中级和低级报警音调 “CCC-CC”、“CCC”和“EC”,只需依次将表1中对应的频率代入式(7)中的基音频率f0便可。如图6b所示波形为发出高级报警“CCC-CC”的音频信号波形。
表 1 常用中音C调所对应的频率
音调 C D E F G A B C# D# / F# G# A# / 频率f0 /Hz 523 587 659 698 784 880 988 554 622 / 740 831 932 / 注:/表示此处没有数据或忽略。
An Algorithm of Generating the Signals for Medical Audio Alarm
-
摘要: 为了提高对音频报警发生源的空间定位,帮助操作者迅速准确的确定报警发生位置,医疗电子设备通常要求其声觉报警具有更加丰富的泛音。但目前主要采用音频录制或脉冲信号为驱动信号的方式,容易引入噪声,从而影响报警质量。为此,将复数领域的Goertzel算法简化为实数领域,以便于编写用于嵌入式单片机的应用程序。提出了一种多泛音声觉报警信号输出的算法,并以实现500 Hz基音及其2~5次泛音的音频信号发生器为例,开发设计了基于嵌入式单片机LM3S9B92的应用程序和硬件音频驱动电路,得到了低噪声、多泛音的声觉报警信号。
-
关键词:
- 声觉报警 /
- 音频信号 /
- Goertzel算法 /
- 医疗电子
Abstract: An acoustical audible alarm is generally requested in the medical electronics devices to posit where an alarm happen. At present, the medical audio alarm signals are mainly generated by voice recording or pulse-based signals. With those methods, many shrill voices and sharp noises are easily produced to affect the quality of an alarm. Therefore, aim at a qualified medical audible alarm, the traditional Goertzel algorithm was simplified into the real number field from the complex number field. Based on this simplified Goertzel algorithm, a recursive algorithm was proposed to generate a serial of sinusoidal fundamental and its harmonic signals. The algorithm was programmed and tested with an audio processing circuit. The audio circuit was designed based on microcomputer LM3S9B92. According to the tested signal waveforms and the frequency spectrum, a group of low-noise and multi-overtone audible alarm signals were produced.-
Key words:
- audio alarm /
- audio signal /
- Goertzel /
- medical electronics
-
表 1 常用中音C调所对应的频率
音调 C D E F G A B C# D# / F# G# A# / 频率f0 /Hz 523 587 659 698 784 880 988 554 622 / 740 831 932 / 注:/表示此处没有数据或忽略。 -
[1] IEC 60601-1-8: 医用电气设备第1−8部分: 安全通用要求并列标准: 通用要求, 医用电气设备和医用电气系统中报警系统的测试和指南[S].日内瓦, 瑞士: 国际电工委员会, 2012. IEC 60601-1-8: Medical electrical equipment-Part 1−8: General requirements for safety-Collateral standard: General requirements, tests and guidance for alarm systems in medical electrical equipment and medical electrical systems[S].Geneva, Switzerland: International Electro Technical Commission, 2012. [2] EDWORTHY J, REID S, MCDOUGALL S, et al. The recognizability and localizability of auditory alarms: Setting global medical device standards[J]. Human Factors, 2017, 59(7): 1108-1127. doi: 10.1177/0018720817712004 [3] IMHOFF M, KUHLS S. Alarm algorithms in critical care monitoring[J]. Anesthesia & Analgesia, 2006, 102(5): 1525-537. [4] EDWORTHY J. Medical audible alarms: A review[J]. Journal of the American Medical Informatics Association, 2013, 20(3): 584-589. doi: 10.1136/amiajnl-2012-001061 [5] WHALEN D A, COVELLE P M, PIEPENBRINK J C, et al. Novel approach to cardiac alarm management on telemetry units[J]. Journal of Cardiovascular Nursing, 2014, 29(5): 13-22. doi: 10.1097/JCN.0000000000000114 [6] KHALED S A, MICHELLE G T, FAJARDO T A, et al. Changes in default alarm settings and standard in-service are insufficient to improve alarm fatigue in an intensive care unit: A pilot project[J]. Jmir Human Factors, 2016, 3(1): 1-13. doi: 10.2196/humanfactors.5098 [7] 王婧, 王建宁, 周松, 等. ICU护士医疗设备报警疲劳程度及其影响因素的研究[J]. 中华护理杂志, 2017, 52(2): 211-215. doi: 10.3761/j.issn.0254-1769.2017.02.019 WANG Jing, WANG Jian-ning, ZHOU Song, et al. The status and influencing factors of alarm fatigue towards medical devices among ICU nurses[J]. Chinese Journal of Nursing, 2017, 52(2): 211-215. doi: 10.3761/j.issn.0254-1769.2017.02.019 [8] KIM J H, KIM J G, JI Y H, et al. An islanding detection method for a grid-connected system based on the goertzel algorithm[J]. IEEE Transactions on Power Electronics, 2011, 26(4): 1049-1055. doi: 10.1109/TPEL.2011.2107751 [9] ONCHIS D M, RAJMIC P. Generalized Goertzel algorithm for computing the natural frequencies of cantilever beams[J]. Signal Processing, 2014, 96(2): 45-50. [10] KAISER Y, BOUER K. Method and system for checking an acoustic transducer: The Netherlands, WO/2013/153484[P]. 2013-10-17. [11] 王卫兵, 朱秋莲, 徐心毅. Goertzel算法的一种改进计算结构[J]. 武汉大学学报(理学版), 2007, 53(3): 375-378. doi: 10.3321/j.issn:1671-8836.2007.03.028 WANG Wei-bing, ZHU Qiu-lian, XU Xin-yi. An improved realization structure for Goertzel algorithm[J]. Journal of Wuhan University (Natural Science Edition), 2007, 53(3): 375-378. doi: 10.3321/j.issn:1671-8836.2007.03.028 [12] SYSEL P. Goertzel algorithm generalized to non-integer multiples of fundamental frequency[J]. EURASIP Journal on Advances in Signal Processing, 2012, 2012(1): 56-63. doi: 10.1186/1687-6180-2012-56 [13] SMOKTUNOWICZ A, WRÓBEL I. On improving the accuracy of Horner’s and Goertzel’s algorithms[J]. Numerical Algorithms, 2005, 38(4): 243-258. doi: 10.1007/s11075-004-4570-4 [14] 戴朝华, 陈维荣, 朱云芳, 等. ⅡR数字滤波器设计的搜寻者优化算法[J]. 西南交通大学学报, 2009, 44(6): 871-876. doi: 10.3969/j.issn.0258-2724.2009.06.013 DAI Chao-hua, CHEN Wei-rong, ZHU Yun-fang, et al. ⅡR digital filter design via seeker optimization algorithm[J]. Journal of Southwest Jiaotong University, 2009, 44(6): 871-876. doi: 10.3969/j.issn.0258-2724.2009.06.013 [15] 宋寿鹏, 邵勇华, 堵莹. 采样方法研究综述[J]. 数据采集与处理, 2016, 31(3): 452-463. SONG Shou-peng, SHAO Yong-hua, DU Ying. Survey of sampling methods[J]. Journal of Data Acquisition & Processing, 2016, 31(3): 452-463.