留言板

尊敬的读者、作者、审稿人, 关于本刊的投稿、审稿、编辑和出版的任何问题, 您可以本页添加留言。我们将尽快给您答复。谢谢您的支持!

姓名
邮箱
手机号码
标题
留言内容
验证码

一种医用声觉报警信号输出算法及应用

袁越阳 陈宇清 孙建国 马小林

袁越阳, 陈宇清, 孙建国, 马小林. 一种医用声觉报警信号输出算法及应用[J]. 电子科技大学学报, 2020, 49(2): 235-239. doi: 10.12178/1001-0548.2018269
引用本文: 袁越阳, 陈宇清, 孙建国, 马小林. 一种医用声觉报警信号输出算法及应用[J]. 电子科技大学学报, 2020, 49(2): 235-239. doi: 10.12178/1001-0548.2018269
YUAN Yue-yang, CHEN Yu-qing, SUN Jian-guo, MA Xiao-lin. An Algorithm of Generating the Signals for Medical Audio Alarm[J]. Journal of University of Electronic Science and Technology of China, 2020, 49(2): 235-239. doi: 10.12178/1001-0548.2018269
Citation: YUAN Yue-yang, CHEN Yu-qing, SUN Jian-guo, MA Xiao-lin. An Algorithm of Generating the Signals for Medical Audio Alarm[J]. Journal of University of Electronic Science and Technology of China, 2020, 49(2): 235-239. doi: 10.12178/1001-0548.2018269

一种医用声觉报警信号输出算法及应用

doi: 10.12178/1001-0548.2018269
基金项目: 国家级大学生创新训练项目(S201911527026);湖南省教育厅重点研究项目(19A093)
详细信息
    作者简介:

    袁越阳,男,博士,高级工程师,主要从事嵌入式单片机应用、电子技术应用及医疗电子技术等方面的研究。E-mail:sunmoonanfen@163.com

  • 中图分类号: TP311.1,TH77

An Algorithm of Generating the Signals for Medical Audio Alarm

图(6) / 表(1)
计量
  • 文章访问数:  5551
  • HTML全文浏览量:  1924
  • PDF下载量:  40
  • 被引次数: 0
出版历程
  • 收稿日期:  2018-10-17
  • 修回日期:  2018-12-11
  • 网络出版日期:  2020-03-05
  • 刊出日期:  2020-03-01

一种医用声觉报警信号输出算法及应用

doi: 10.12178/1001-0548.2018269
    基金项目:  国家级大学生创新训练项目(S201911527026);湖南省教育厅重点研究项目(19A093)
    作者简介:

    袁越阳,男,博士,高级工程师,主要从事嵌入式单片机应用、电子技术应用及医疗电子技术等方面的研究。E-mail:sunmoonanfen@163.com

  • 中图分类号: TP311.1,TH77

摘要: 为了提高对音频报警发生源的空间定位,帮助操作者迅速准确的确定报警发生位置,医疗电子设备通常要求其声觉报警具有更加丰富的泛音。但目前主要采用音频录制或脉冲信号为驱动信号的方式,容易引入噪声,从而影响报警质量。为此,将复数领域的Goertzel算法简化为实数领域,以便于编写用于嵌入式单片机的应用程序。提出了一种多泛音声觉报警信号输出的算法,并以实现500 Hz基音及其2~5次泛音的音频信号发生器为例,开发设计了基于嵌入式单片机LM3S9B92的应用程序和硬件音频驱动电路,得到了低噪声、多泛音的声觉报警信号。

English Abstract

袁越阳, 陈宇清, 孙建国, 马小林. 一种医用声觉报警信号输出算法及应用[J]. 电子科技大学学报, 2020, 49(2): 235-239. doi: 10.12178/1001-0548.2018269
引用本文: 袁越阳, 陈宇清, 孙建国, 马小林. 一种医用声觉报警信号输出算法及应用[J]. 电子科技大学学报, 2020, 49(2): 235-239. doi: 10.12178/1001-0548.2018269
YUAN Yue-yang, CHEN Yu-qing, SUN Jian-guo, MA Xiao-lin. An Algorithm of Generating the Signals for Medical Audio Alarm[J]. Journal of University of Electronic Science and Technology of China, 2020, 49(2): 235-239. doi: 10.12178/1001-0548.2018269
Citation: YUAN Yue-yang, CHEN Yu-qing, SUN Jian-guo, MA Xiao-lin. An Algorithm of Generating the Signals for Medical Audio Alarm[J]. Journal of University of Electronic Science and Technology of China, 2020, 49(2): 235-239. doi: 10.12178/1001-0548.2018269
  • 声觉报警被广泛应用于医疗电子设备和仪器,且要求具有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]0X[n]1X[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、信号采样频率fsNfs/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)
    • 鉴于IEC60601-1-8行业标准的要求[1-2],声觉报警信号的基音频率范围规定在150 Hz~1 kHz之内,且泛音数量不少于4个。根据式(7)的递归算法,设定基音频率f0为500 Hz,2~5次泛音频率分别为1、1.5、2 和2.5 kHz。据Nyquist-Shannon定律[15],设定采样频率fs=25 kHz(或采样周期为40 μs)。

      软件设计如图1所示,采用时间间隔为40 μs的定时中断程序。当时间中断发生后,系统首先清零泛音计数器k。然后累加每一步的计算结果到Y[n] 中,直到k>N(本设计N为6),把总和Y[n]输出。输出数据经数模转换(DAC)后以模拟信号输出。每次定时中断结束前,步计数器n增加1为下一步做准备。

      图  1  算法实现程序流程图

    • 设计硬件电路如图2所示。图中U1选用美国德州仪器公司生产的32位ARM Cortex-M3嵌入式单片机LM3S9B92为数据处理器,其系统时钟频率通过内部锁相环处理外部输入4 MHz时钟信号后高达80 MHz。U1的输出脚PA0、PA1和PA2分别作为信号输出端口连接U2数模转换器DAC7512(12 bit)的信号输入脚SYNC(同步信号输入)、SCLK(时钟信号输入)和DIN(数据输入)。从处理器U1端口输出的数字信号经U1数模转换成模拟信号,并输出给U3信号放大器(LM2904DR2G),最后经U4音频驱动集成电路(LM490TS)输出音频信号驱动扬声器发声。数据处理器U1和数码转换器U2的工作电源为3.3 V直流电源。信号放大器U3和音频驱动器U4的工作电源电压为12 V直流电源。采用分离数字地和模拟地的办法避免模拟信号和数字信号通过地线串扰。

      图  2  硬件电路方框图

    • 将编译后的程序代码烧写到数据处理器并且上电运行,得到图3所示信号。图3a为一个基音周期的信号波形(示波器为TDS2012C),其最大峰峰值达20 V。图3b为设置示波器工作在math分析模式下所得频率谱,其基音频率和2~5次泛音频率分别为0.5、1、1.5、2 和2.5 kHz,且具有相同的幅度。整个频谱曲线显示噪音幅度均低于基音幅度的5%。

      图  3  实验所得信号波形和频谱

      为了验证本文设计,基于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所示。图5a5b仿真所得波形和频谱与本文设计实验所得图3a3b的结果相一致。

      基于本文的设计和分析,每个频率点的计算量为只需把前两步结果相加后做一次乘以系数x[k]的运算。若式(7)中Y[n]再乘以一个在时域上按一定规律变化的系数A[n],则可以得到不同包络的信号群。如图6a所示A[n]满足纺锤形变化要求所得信号群波形。

      图  4  基于Matlab的仿真模型

      图  5  仿真所得信号波形和频谱

      图  6  报警信号波形

      改变式(7)中的基音频率f0便可得到不同的音调。表1为常用的中音对应的音频。利用表中不同音调的排列组合,可以得到丰富的报警用乐音。如通常采用的医用[1]声觉高级、中级和低级报警音调 “CCC-CC”、“CCC”和“EC”,只需依次将表1中对应的频率代入式(7)中的基音频率f0便可。如图6b所示波形为发出高级报警“CCC-CC”的音频信号波形。

      表 1  常用中音C调所对应的频率

      音调CDEFGAB
      C#D#/F#G#A#/
      频率f0 /Hz523587659698784880988
      554622/740831932/
        注:/表示此处没有数据或忽略。
    • 为便于嵌入式单片机应用程序编程,本文将复数领域的Goertzel算法简化实数领域的算法,并应用该简化的Goertzel算法推导建立了输出声觉报警信号的数学递归函数。本文所建函数输出具有基音及多倍频率泛音特征的正弦音频信号。

      本文开发设计了基于嵌入式单片机的应用程序和音频驱动电路,以实现输出基音频率为500 Hz和包括2~5次泛音在内的音频信号为例,应用本文所建递归算法进行试验,测试得到具有低噪声、丰富高次泛音的声觉报警信号。

参考文献 (15)

目录

    /

    返回文章
    返回