没有合适的资源?快使用搜索试试~ 我知道了~
软件X 17(2022)100953原始软件出版物助听器算法研究的开放社区平台:开放大师助听器(openMHA)Hendrik Kaysera,b,c,C.D.,Tobias Herzkeb,c,Paul Maanenb,c,Max Zimmermannb,c,Giso Grimma,b,c,Volker Hohmanna,b,caCarl von Ossietzky Universität Oldenburg,Department of Medical Physics and Acoustics - Auditory Signal Processing and HearingDevices,D-26111 Oldenburg,GermanybHörzentrum Oldenburg gGmbH,Marie-Curie-Str. 2,26129 Oldenburg,Germanyc德国“Hearing4all”卓越集群ar t i cl e i nf o文章历史记录:收到2021年收到修订版,2021年10月30日接受,2021年保留字:助听器实时音频信号处理a b st ra ct开发了开放式主助听器(openMHA),并将其作为开放源代码软件平台提供给助听器研究团体,目的是支持可持续和可重复的研究,以改进和开发不受专有软件限制的新型辅助听力系统。该软件提供了一个灵活的框架,允许用户使用软件提供的工具和一些信号处理插件进行助听器openMHA软件独立于特定硬件,支持Linux、macOS和Windows操作系统,以及基于ARM的32位和64位架构,例如用于小型便携式集成系统。www.openmha.org版权所有©2021作者。由爱思唯尔公司出版这是CC BY-NC-ND下的开放获取文章许可证(http://creativecommons.org/licenses/by-nc-nd/4.0/)。代码元数据当前代码版本4.16.1用于此代码版本的代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX-D-21-00049法律代码许可证AGPL-3.0使用git的代码版本控制系统使用C++、C、Matlab/Octave、TeX、Node-RED、Python、Java的软件代码语言、工具和服务编译要求,操作环境&依赖性参见https://github. Com/HoerTech-gGmbH/openMHA/blob/master/COMPILATION.md开发人员文档/手册链接http://www.openmha.org/documentation/问题支持电子邮件info@openmha.org软件元数据当前软件版本4.16.1此版本的永久链接https://github.com/HoerTech-gGmbH/openMHA/releases/tag/v4.16.1法律软件许可证AGPL-3.0计算平台/操作系统Linux,macOS,Microsoft Windows,Armv7,AArch 64安装要求&依赖项请参阅https://github. com/HoerTech-gGmbH/openMHA/blob/master/INSTALLATION. Md用户手册链接http://www.openmha.org/documentation/问题支持电子邮件info@openmha.org通讯作者:Carl von Ossietzky Universität Oldenburg,Department of MedicalPhysics and Acoustics - Auditory Signal Processing and Hearing Devices , D-26111 Oldenburg,Germany.电子邮件地址:hendrik. uni-oldenburg.de(Hendrik Kayser).https://doi.org/10.1016/j.softx.2021.1009531. 动机和意义助听器信号处理方法和辅助听音设备新算法的开发旨在为用户在现实世界场景中的通信能力提供益处。在今天的助听器中2352-7110/©2021作者。由爱思唯尔公司出版。这是一篇开放获取的文章,使用CC BY-NC-ND许可证(http://creativecommons.org/licenses/by-nc-nd/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softxHendrik Kayser,Tobias Herzke,Paul Maanen等.软件X 17(2022)1009532这些设备都能满足[1]。从听力学的角度来看,听力损失补偿和相关的招募现象是需要解决的重要项目,以提高听力障碍患者的语言清晰度。 各种算法,特别是自动增益控制,动态范围压缩,降噪以及空间滤波,如声学波束形成器的定向麦克风,被用来解决这个任务。此外,声反馈的抑制与算法一样起着重要作用用于声学场景分析和分类,以调整处理参数或选择助听器中的程序,从而根据通信场景提供最佳处理。这一领域的研究由大学以及助听器公司和音频设备制造商进行。后两组提供的最终用户设备是在专利系统上开发的,研究界无法使用,而且受到商业限制。 助听器研究的开放工具是一种促进研究成果转移到助听器、人工耳蜗和消费设备设计中以造福目标群体的方法。此外,开放式工具可以用新的算法加速相关研究,降低研究环境中硬件和软件开发的障碍,促进协作研究工作,并使听力研究具有更高的可重复性。助听器算法研究的开放社区平台开放式主助听器(openMHA,[2,3])就是这样一种工具,它已经达到成熟的水平,可以在广泛的研究社区中用于听力设备研究和听力受损受试者的研究[4开发新方法的一个重要部分是对其进行评价。评估新方法的第一步通常是以离线方式进行的模拟,即,所有的音频数据被成批处理,并且因果关系不一定满足。第一步通常测试性能与作为实际设备中的信号处理链的一部分的其他操作隔离的方法。这种模拟的结果在方法本身的能力和潜在性能方面是一个重要的结果。然而,它不是该方法在现实生活条件下可以为用户提供的益处的良好预测器。为此,需要考虑一些重要的进一步方面:需要将系统作为一个整体来考虑,即,信号处理算法需要与系统的所有其它组件结合工作,以提供对实际使用场景中的益处的估计这种用于最小化由助听器扬声器和麦克风之间的声学反馈回路引起的啸叫的反馈抑制技术也起到允许输入音频信号的足够高的放大的作用助听器与耳朵的耦合影响听力的较低水平。在助听器麦克风处的输入信号和助听器扬声器处的回放之间。这是为了避免回声效应,并提供用户自己的语音的自然感知10 ms的延迟通常被定义为延迟的上限[32]。目前为止列出的所有方面都应该在助听器处理链的高级模拟中加以考虑。这意味着,处理链需要在合适的硬件上实时运行。此外,为了使不同技能的目标群体能够使用软件工具进行研究,需要几种方法来实现和修改助听器处理。这些包括使用已建立的编程语言实现新的信号处理算法,基于可用组件设置和配置助听器处理链而无需编程语言的知识的可能性,以及使用高级用户界面和工具控制可用设置而无需软件本身的详细知识的可能性。openMHA是一个全面的软件包,满足这些要求,并提供了一个模块化的框架,以建立一个听力系统与所有必要的处理步骤。它源于商业闭源软件Master Hearing Aid[31],该软件已上市并得到进一步开发under下the open开放source源license许可.它具有确保实时安全音频信号处理的机制,3运行时的实时安全转换,4以及处理过程中的变量监控,以便可以轻松监控和验证正在开发和测试的助听器算法链。此外,除了提供基本的听力结构外,作为辅助处理,该软件包包括大量且不断增长的信号处理插件,可用于创建多种配置,而无需C/C++编程语言的知识。新的开发可以使用C/C++或Matlab Coder [ 33 ]使用openMHA的算法开发框架进行集成openMHA解决的一个科学问题是在助听器研究的背景下实现更具生态有效性的研究,旨在提高基于实验室的研究结果反映现实生活中听力相关功能的程度。关键的方面是,研究人员能够使用真实的声学信号场景在真实的助听器处理链中调查,实施和测试他们的发展。1.1. openMHA在研究社区中的使用自2017年首次发布以来,openMHA被用于与助听器相关的研究,信号处理方法的评估以及实时系统中助听器处理的设置。鼓膜处可能存在的声级限值,还确定直接到达的未处理的声音信号与由听力装置处理的声音之间的比率。此外,信号增强方法用于增加语音可懂度,例如,定向麦克风、单通道和多通道降噪算法。所有这些处理步骤都存在两个重要的技术限制:它们必须(a)实时1和(b)低延迟2完成1 在openMHA中的音频信号处理的上下文中,实时处理意味着可以在相应片段的持续时间2 延迟时间是指在输入一个音频 样品 和的 输出 的的 样品 后 处理.延迟是受音频硬件的属性、用于处理的信号片段的大小以及所需的信号缓冲的影响,例如, 在STFT框架中,更多细节参见[31]。注意,算法延迟,例如,信号处理链中的滤波器的群延迟增加了这里定义的等待时间。3 音频 信号处理 可以被 执行 在 专用线程与高优先级设置。 此外,在openMHA中实现的音频信号处理避免了可能引入不可预测的延迟(例如,存储器分配、文件系统访问)。4 信号处理算法配置参数的变化,信号处理持续进行不会引起信号处理线程内的额外自适应操作,因此不会增加信号处理所需的计算时间。这是通过在实时信号处理线程之外执行参数更改所需的所有准备工作来实现的,通常具有较低的优先级设置。Hendrik Kayser,Tobias Herzke,Paul Maanen等.软件X 17(2022)1009533该软件已被用于各种目的,例如将多频带动态范围压缩器适配到听力受损受试者的听力损失a)以模拟人工耳蜗植入用户的语音可理 解 性 [4] , 预 测 辅 助 受 试 者 的 语 音 识 别 性 能 [5] , 还 包 括openMHA提供的定向麦克风,以及通过个体听力损失补偿评估近端听力增强[6在这种情况下,openMHA拟合工具(见图1)。2),并采用其中实现的增益规定规则来实现助听器验配过程。评价了使用助听器听音乐和说话的感知音质以及首选增益设置[7一项关于人类受试者的运动行为对不同助听器处理方法提供的潜在益处的影响的研究[10,11]使用了一组openMHA可用算法的参考实现进行后分析,该后分析将动态虚拟声学场景中头部和眼睛的运动轨迹纳入其中。这项工作导致了一个开放访问的数据库[12],其中包含场景的测量轨迹和参数。用于渲染声学场景的软件[13]支持从软件内部集成和控制openMHA,与openMHA一起使用,以使用户能够再现这些虚拟场景openMHA用于实现助听器研究耳级设备的实时信号处理[14],并在技术[15]和感知[16]评估方面与市售设备进行了一些研究使用openMHA中实现的信号处理算法作为评估新开发或补充其他处理方法的参考使用递归神经网络(RNN)进行降噪和去噪,并与可用的单通道降噪(SCNR,[34])算法[17]进行比较。此外,作者将基于RNN的处理实现为openMHA插件,以便在便携式硬件上使用它。在另一项研究中,发现相同的SCNR算法对于静态背景噪声和在较差SNR下优于基于概率模型的降噪算法[18]。此外,我们的SCNR方法与额外的包络增强的组合被证明是有益的。在使用正常听力和单侧植入CI收听者的受试者实验中,评估了定向麦克风算法在这些目标人群中的语音增强[19],openMHA用于进行听力损失补偿和空间滤波。与我们的软件一起提供的多频带动态压缩器和滤波器组被集成在骨导助听器中[20]。Clarity Challenge项目[21]使用openMHA配置作为基线助听器,该项目组织了助听器信号处理和语音清晰度感知模型语音增强的机器它具有自适应差分麦克风[35],并根据Camfit压缩增益规定规则提供听力损失补偿[36]。openMHA与Julia编程语言[22]集成,以实现用于实时助听器处理的贝叶斯机器学习技术openMHA的实时功能也用于计算机视觉应用程序中,用于实时特征提取和姿势和手势分类[23]。openMHA还适合于在便携式集成系统上进行助听器信号处理,所述便携式集成系统通过具有足够计算能力的小型硬件(例如单板计算机(SBC)或片上系统(SoC))的可用性来实现。这种硬件平台对于在实验室之外进行助听器研究特别有意义。为此,openMHA被移植到开源SoC现场可编程门阵列(FPGA)平台[24集成具有诸如耳后设备的耳级设备的便携式平台是特别感兴趣的。结合提供信号处理能力以及用于听力研究的测量应用程序的软件套件,例如openMHA,可提供完整的现场测试系统参见第3节,了解使用openMHA [27]进行助听器研究的现场测试设置示例据发现,它“在在最近的一项研究[29]中,该便携式平台扩展了移动EEG采集系统,旨在利用大脑信号进行助听器处理。另一种便携式助听器研究平台[30]已被证明能够运行openMHA,该平台包含在其处理板的软件套件中[37]。总之,不同背景的研究人员在不同研究机构使用openMHA针对不同研究问题进行的大量研究表明,当前版本的openMHA软件包完全合适。1.2. 用户组为了最佳地支持社区,我们将用户组分为三个不同的级别,我们在软件包提供的文档和工具中解决了这些问题听力学研究员。该用户组对听力受损和听力正常受试者进行听力学 研 究 。 为 此 , 配 置 和 图 形 用 户 界 面 ( GUI ) 作 为 工 具 与openMHA软件一起提供这些工具的示例是在Matlab和Octave下运行的助听器验配GUI以及基于Web服务器的GUI。应用工程师。应用工程师小组为音频逻辑研究人员进行的实验和研究建立了设置。该小组使用openMHA软件包提供的功能和工具。 它包含许多信号处理插件,可以使用基于文本的配置语言组合以完成助听 器 信 号 处 理 链 。 GUI 或 其 他 控 制 应 用 程 序 可 以 在 Matlab 或Octave,Python或Node-RED中创建。插件开发人员。如果特定设置所需的功能在其当前版本中不可用,例如新开发的信号处理算法,则可以使用自己的插件扩展开发人员使用C/C++编程语言将新功能实现到框架中。openMHA软件开发框架中包含一个可供借鉴的大型信号处理方法库。此外,Matlab Coder [33]可用于实现新的openMHA插件或编译可由openMHA中的特定包装器插件加载的信号处理库。在后一种情况下,可以在没有任何C++知识和没有可用于编译的提供了文档化源代码的手册和示例,更多详细信息请参见第2.3.3节末尾1.3. 可用算法该软件包包括用于基本操作的插件,例如校准、滤波、重采样、放大以及用于谱域中信号处理的二次加傅立叶分析和合成框架。此外,还包括一些插件,涵盖以下类型的处理方法:多波段动态范围压缩[39],自适应Hendrik Kayser,Tobias Herzke,Paul Maanen等.软件X 17(2022)1009534Fig. 1. openMHA软件架构可视化。黑色箭头:对象所有权。黑色虚线箭头:某些插件本身包含另一个Processing_Plugin_Loader实例,通过该实例可以加载子插件。绿色箭头:音频信号路径.音频信号可以有任意数量的音频通道.箭头方向表示输入信号,处理后的输出信号沿相同路径反向传播。紫色箭头:配置命令执行路径。对配置命令的响应沿相同路径反向传播。矩形对象使用配置语言解析器来解释或传播配置命令。(For对本图图例中所指颜色的解释,读者可参考本文的网络版反馈消除[40]、定向麦克风[35]、双耳噪声和反馈减少[41]、双耳波束形成[42-在某些情况下([34,35,41,42],自适应波束形成[44],以及延迟和相减波束形成器),提供了参考配置,这些参考配置已经以相同的方式在一项旨在使其他研究人员能够重复实验设置的研究。2. 软件描述本节介绍openMHA(2.1)的功能、软件架构(2.2)、不同用户场景的代码示例(2.3)以及我们用于软件开发(2.4)的实践和工具。2.1. 软件功能openMHA使用作为插件实现的助听器信号处理算法来处理音频信号使用配置语言,可以组合和配置不同的插件,以形成所需的完整信号处理链。openMHA可以处理来自声卡的实时音频信号,也可以处理来自输入声音文件的音频输入信号并产生输出声音文件。在处理实时音频信号时,可以在不中断音频处理的情况下更改各个插件的配置,从而可以主观地比较不同的算法配置。不同的信号处理插件可以通过网络导入和导出不同格式的文件数据(开放声音控制( OSC,[46]),实验室流层(LSL,[47]))。后者对于在音频信号处理方法中考虑来自其他传感器的信息(例如头部和眼睛运动以及EEG数据)是有用的为此,可以实现分析这些数据的插件,以便以某种方式控制信号处理。例如,利用头部和眼睛的运动来引导方向性滤波,EEG数据用于听觉注意解码或听力努力。2.2. 软件构架整体软件架构如图所示。1.一、在下文中,详细描述单个部件。2.2.1. openMHA服务器openMHA 主要在 C++ 中作为 命令行应用程 序mha (图 1 中的MHA_Server)实现。1)没有图形用户界面。命令行应用程序处理其命令行参数,然后打开TCP端口(TCP_Port)并侦听传入的配置命令。MHA_Servermha创建openMHA框架(MHA_Framework)类的一个实例,该实例充当openMHA的主事件调度器。openMHA框架通过以下方式对配置命令事件作出反应:(1) 在MHA配置语言解析器的帮助下解释框架配置命令本身,或(2) 如果加载了一个IO插件,则将影响音频IO插件的配置命令转发到相应的IO插件,或者(3) 将影响所述信号处理命令之一的配置命令转发到所述处理插件加载器。openMHA 框 架 可 以 在 相 应 的 插 件 加 载 器 、 IO 插 件 加 载 器(IO_Plugin_Loader)或信号处理插件加载器( Processing_Plugin_Loader ) 的 帮 助 下 加 载 单 个 IO 插 件(IO_Plugin)和单个信号处理插件(Processing_ Plugin)。2.2.2. 插件_加载器和插件插件加载器在可配置的文件系统目录集中搜索MHA插件,并将第一个匹配的openMHA插件加载到进程中。新加载的插件将其可配置设置插入到配置设置树中,并且它们也被插入到信号处理路径中IO插件以及信号处理插件被编译成共享库,该共享库导出一个简短的函数列表,即,他们的界面。各个接口在MHA_Server应用程序之间共享的类和函数阳 离 子mha 和 插 件被 编 译 成一 个 共 享 库, openMHA 可 扩 展库libopenmha。IO插件。IO插件将openMHA连接到音频数据源/接收器,如声卡或声音文件。openMHA不对音频采样率、音频通道数量等施加任何限制信号处理插件。信号处理插件实现助听器信号处理算法。一些现有的信号处理插件本身包含处理插件加载器,并且可以加载其他信号处理插件,从而创建处理插件树。2.2.3. 组态语言解释器OpenMHA框架、IO插件、信号处理插件加载器和信号处理插件使用MHA配置语言解释器。包含该openMHA插件库,一个由MHA服务器和各个插件链接的共享库。它为不同数据类型的配置变量树提供了一个基于文本的接口。配置变量由框架、插件等声明。在它们各自的初始化期间,Hendrik Kayser,Tobias Herzke,Paul Maanen等.软件X 17(2022)1009535图二、 openMHA Octave/Matlab拟合工具的图形用户界面。在配置语言树中注册,并由openMHA服务器mha访问命令行参数和TCP端口上接收的命令。配置语言解释器可以在读取或写入配置变量时调用注册的C++回调,从而在信号处理之前和期间实现配置更改开发自定义配置语言的设计决策是为了允许轻量级语言解释器,这是最小可移植实现所需的,它仍然允许通过预分配和后分配挂钩进行扩展的灵活性,以实现配置过程和无丢失实时信号处理之间的无缝交互。5MHA组态语言类似于Matlab/Octave语言。详细描述可见于[31],并且在上文中,示例在第2.3.2节中提供。2.2.4. 配置工具可以使用独立的软件工具通过TCP接口与openMHA进行交互。我们提供Matlab/Octave工具,用于通过TCP 连接与正在运行的openMHA服务器进行交互,从检索和设置MHA配置变量的功能到用于不同任务的图形用户界面(GUI),例如校准或使动态压缩机适应个人听力损失。这些工具可以在与openMHA服务器mha相同的计算机上执行,也可以在不同的计算机上执行,并通过有线或无线网络与openMHA服务器通信。对于嵌入式系统和智能手机,Matlab或Octave不是一个可行的解决方案,5高级语言,如Python,lua或ruby被认为是配置语言。然而,由于openMHA中主要只需要低级配置功能,因此它们远远超过了openMHA的要求。控制同一设备或远程设备上的openMHA实例在这种情况下,在处理平台本身上运行并为任何连接的浏览器启用设备提供GUI的嵌入式Web服务器是一种通用方法。使用Node-RED[38]的示例如图所示。第3节中的4。2.3. 示例代码段分析在下文中,针对第1.2节中描述的每个用户组示出了一个示例性代码样本。第2.3.1节描述了如何启动一个可用的openMHA配置文件,它不需要与配置语言或源代码本身进行任何交互。在第2.3.2节中,详细描述了第2.3.1理解这样的配置文件使用户能够修改可用配置中的插件和参数,并使用openMHA可用的插件创建自己的配置。第2.3.3节描述了一个简单的信号处理插件在源代码级的开发。这些示例和更多示例可以在openMHA软件包中找到结合openMHAdocumentation提供的手册和教程,此处提供的示例可用作用户自己开发的基础2.3.1. 调用和控制听力学家可以使用现有配置调用openMHA来执行实验。以下小节中的示例配置-多频带动态范围压缩器的实现-可以从命令行调用,例如,作为嗯?读取:examples/14-dc-simple/example_dc_simple_live.cfg cmd=startHendrik Kayser,Tobias Herzke,Paul Maanen等.软件X 17(2022)1009536要从Matlab或Octave控制实验,openMHA也可以从Octave使用相同的配置启动mha = mha_start();%start openMHA进程mha_query(mhamhacontrol(mha);%start控制和装配 GUI最后一个命令将打开一个图形用户界面,可以访问液位计、校准对话框和分析工具作为听力图数据库和适配用户界面在图2中,应用不同的增益规定规则,并在openMHA的运行实例中修改增益参数。有关此工具的详细说明,请参阅FittingGUImal。它提供了许多增益规定规则,还提供了基于软件提供的模板在Octave/Matlab中实现自己的增益规则的可能性openMHA还可用于对特定听力损失的助听器动态压缩的offline_fitting_tool();%启动一个向导来引导用户上面的命令打开一个基于GUI的Matlab/Octave工具,用于处理大量音频文件,其中助听器信号增强适用于自定义听力损失。该工具通过相同的界面引导用户选择声音文件、听力图和拟合规则2.3.2. 配置文件示例应用工程师可以使用简单的基于文本的配置语言来描述要加载哪些插件,以及如何安排和配置它们。以下示例-第2.3.1节中调用的1 #输入音频通道2 nchannels_in= 2个3 #样本中的信号片段大小4 fragsize =645 #采样率6srate= 441007 # MHA库名称8 姆哈利卜=传感器9 # IO插件库名称10 iolib= MHAIOJack11 #选择音频输入和输出端口12 io.con_in = [system:capture_1 system:capture_2]13 io.con_out = [system:playback_1 system:playback_2]14 #加载STFT框架插件15 mha.plugin_name =插件添加16 #校准设置17 mha.calib_in.peaklevel = [116 116]18 mha.calib_out.peaklevel = [114 114]19 # STFT参数20 mha.overlapadd.fftlen= 25621 mha.overlapadd.wnd.len= 12822 #加载mhachain进行spectraldomain处理23 mha. plugin_name = mhachain24 #加载插件。dc_simple执行动态压缩。25 mha. mhachain.algos =[fftfilter- bankdc_simple combinechannels]26 #频段27 mha. mhachain.fftfilterbank.f=[2501000 4000]28 #噪声门阈值(dB SPL)29 mha. mhachain.dc_simple.expansion_threshold2019 - 02 - 20 00:00:0030 #噪声门31 mha. mhachain.dc_simple.expansion_slope= [4 4 4 4 4 4]32 #50 dB SPL时的增益33 [10 25 40 11 31 55][10 25 40 11 31 55]34 #80 dB SPL时的增益35 [5 15 10 5 21 19]36 #限制器阈值,即最大可能输出电平,单位为dB SPL37 mha. mhachain.dc_simple.limiter_threshold[120 120 120 120 120]38 #攻击时间常数(单位:s)39 mha. mhachain.dc_simple.tau_attack=[0.02]40 #衰减时间常数(单位:s)41 mha. mhachain.dc_simple.tau_decay=[0.1]42 #fftfilterbank插件的名称。用于提取频率信息。43 mha. mhachain.dc_simple.filterbank= fft滤波器组44 #滤波器组后重新组合的音频通道数45 mha.overlapadd.mhachain.combinechannels.outchannels=2此配置在openMHA示例14“dc_simple”中可用。它实现了一个简单的多波段动态范围压缩方案。在第1-13行中,设置基本参数,例如音频通道数量、样本块大小、采样率和硬件相关连接。JackAudio Connection Kit(JACK)[48]用于音频输入和输出,并加载相应的库。作为第一个插件(mhalib),加载了处理校准的传感器插件。第14-21行在第22-45行中更多细节请参见上面代码中的注释。有 关 配 置 语 言 的 一 般 信 息 , 请 参 见 《 手 册 》 中 的openMHAAplicationManual。2.3.3. 插件开发示例算 法 开 发 人 员 可 以 通 过 继 承 openMHA 类 MHAPlugin : :plugin_t<>并实现一些方法来开发新的插件。下面的代码实现了一个将声音衰减20 dB的插件:#include“mha_plugin.hh”class attenuate20_t: public MHAPlugin::plugin_tint>{ public:衰减20_t(算法_衰减_t AC,&conststd::string chain_name,conststd::string algo_name)&&:MHAPlugin::plugin_t int>(“此插件衰减20dB”,ac){}void release(void)override{}空隙准备(mhaconfig_t& signal_info)override{if(signal_info.domain!=MHA_WAVEFORM)throw MHA_Error(FILE,LINE,”只能处理波形”);}mha_wave_t * 过程(mha_wave_t * 信号){//-20dB =因子0.1 MHASignal::for_each(signal,[](mha_real_t sample){return sam-return signal;return signal;}};MHAPLUGIN_CALLBOYS(attenuate20,attenuate20_t,wave,wave)MHAPLUGIN_DOCUMENTATION(attenuate20,“示例级别修改”,“Plugin attenuate20将输入信号衰减20dB。“的情况)新的插件类需要实现构造函数和方法prepare(),process(),和release()。本手册包含一个编程工具集以及openMHA的类和方法的参考Hendrik Kayser,Tobias Herzke,Paul Maanen等.软件X 17(2022)1009537图三. The ‘‘Portable Hearing Laboratory’’ (PHL,一个工具箱库,可以在使用openMHA开发信号处理算法时使用。此示例插件在openMHA中以“attenuate20”的形式提供或者,OpenMHA支持Matlab Coder [33]软件。此功能可将材料转换为实验室代码转换为OpenMHA兼容的C/C++代码或库,这些代码或库可以使用包装器插件加载到处理链中,使得如果用户想要在OpenMHA中实现自己的基于Matlab的信号处理方法,则不需要C/C++的知识。研究人员可以遵循和调整一个复杂的实施方案,以用于从MHAplumMatlabcode中进行准备和操作,M atlabc o d e ri n teg ratinm a n u a l a l aC o d e r I n t e g r a t i n m a n a u a l a l a e中提供了通用文档。当遵循此过程时,也可以通过在不同的计算机上执行Matlab到C++的转换(使用Matlab Coder)而不是将生成的C++代码编译成MHA插件(使用所需目标平台的编译器)来拆分该过程。2.4. 开发程序和实践用户可以通过openMHA GitHub存储库提交问题,功能请求和 拉 取 请 求 [49] 。 用 户 可 以 在 openMHA 论 坛 上 发 布 有 关openMHA 使 用 的 问 题 [50] , 通 常 在 几 天 内 由 其 他 用 户 或openMHA开发团队回答openMHA开发团队使用一个非公开的Phabri- cator [51]实例来进行内部问题跟踪、功能请求、同行代码审查、民主决策和开发过程的文档编制。我们使用git [52]进行版本控制。 特性和bug修复在专门的分支中开发,只有在同行代码审查之后才合并到公共开发分支中。我们使用Googletest/Googlemock编写的单元测试来测试openMHA应用程序、工具箱库或单个 openMHA 插件的细节。此外,我们使用Matlab/Octave编写的系统测试来设置openMHA处理配置的完整实例,并测试单个openMHA插件或多个openMHA插件组合对预期信号处理的影响。这些测试被集成到我们使用GNU Make的构建过程中[54],分别使用"make unit-tests“(单元测试)或" make test”(系统测试)调用此外,我们使用Jenkins [55]服务器来自动重新编译和执行在开发分支的每次更新之后,以及针对每个建议的代码审查请求,在所有openMHA目标平台(Windows、macOS、Linux forPC、Linux for代码审查请求将仅在所有openMHA目标平台上成功完成所有构建和测试后,发送给评审人员。我们使用Linux [56]和Windows [57]上的GNU GCC编译器和macOS [58]上的Clang编译器来编译openMHA,并将这些编译器配置为将所有警告视为错误(-Wall -Werror),以强制我们修复现代C++编译器检测到的所有代码气味。OpenMHA支持的最低C++标准是C++17。为 了 发 布 新 的 openMHA 版 本 , git 上 的 openMHAdevelopment分支被合并到git上的master分支中,但是只有在openMHA开发团队已经执行了附加的现场音频处理测试并且该测试不能自动化之后。3. 说明性示例openMHA如何在该领域使用的一个例子是“便携式听力测试仪”(PHL,[27]),见图。3.第三章。PHL由BeagleBone Black无线单板计算机组成,该计算机扩展了基于开源音频接口Cape4all的多通道音频板 [59]。除了处理板和音频接口之外,集成系统还包括电池和一组双耳耳后式(BTE)助听器,其包括每侧上的两个麦克风以捕获声场和耳道中的接收器(RIC)以用于回放经处理的音频信号。使用者可使用颈带佩戴该轻质系统,BTE-RIC设备通过柔 性 电 缆 与 处 理 箱 连 接 。 一 个 优 化 的 Linux 操 作 系 统 -MAHALIA[60]-可用于在处理板上执行低延迟信号处理。PHL的一个典型用例是新听证会的现场测试辅助拟合策略或增益处方规则。由于不可能在重听受试者的助听器上实施新的验配规则,因此可以用PHL代替他们的设备进行实验。依赖于输入水平的增益值可以根据测试中的处方规则考虑到诸如听力阈值和响度感知的听力测量来预先计算,或者使用图2所示的拟合工具在设备上在运行时直接修改。结果值在openMHA中可用的多频带动态范围压缩器插件中有效这样,受试者就有了一个个性化的助听器,可以在每天的情况下佩戴和测试。对于评估,例如,可以使用问卷调查,也可以在与参与者的此外,受试者可以访问处理的某些参数,以在不同情况下调整设备或比较不同的处理模式。因此,智能手机Hendrik Kayser,Tobias Herzke,Paul Maanen等.软件X 17(2022)1009538见图4。在 便携式听力实验室(PHL)上运行的GUI,包含三个不同的选项卡。该界面可以通过智能手机的网络浏览器访问,通过WiFi连接到PHL的平板电脑或电脑。左面板系统控制提供访问耳机,麦克风和增益设置。中心小组听证会助 听 器处理用于控制助听器处理-单个处理阶段的激活/停用和压缩比的修改。 由此产生的宽带输出电平在底部监控。右面板信号发生器允许在助听器中产生具有可控水平和频率的噪声和纯音信号。图五、便携式听力实验室(PHL)系统软件MAHALIA提供的助听器信号处理链。(or具有无线网络功能的任何其他浏览器使能设备)可以通过无线网络连接连接到PHL设备。运行在PHL上的Web服务器可用于提供如图所示的GUI。 四、该特定GUI提供对基本助听器配置的控制,该基本助听器配置与MAHALIA操作系统sd卡图像(可从https://mahalia.openmha.org/ 获 得 ) 一 起 提 供 , 并 且 也 可 在openMHA配置示例中获得,如示例17 该配置提供了如图1所示的助听器处理链。五、
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- SSM Java项目:StudentInfo 数据管理与可视化分析
- pyedgar:Python库简化EDGAR数据交互与文档下载
- Node.js环境下wfdb文件解码与实时数据处理
- phpcms v2.2企业级网站管理系统发布
- 美团饿了么优惠券推广工具-uniapp源码
- 基于红外传感器的会议室实时占用率测量系统
- DenseNet-201预训练模型:图像分类的深度学习工具箱
- Java实现和弦移调工具:Transposer-java
- phpMyFAQ 2.5.1 Beta多国语言版:技术项目源码共享平台
- Python自动化源码实现便捷自动下单功能
- Android天气预报应用:查看多城市详细天气信息
- PHPTML类:简化HTML页面创建的PHP开源工具
- Biovec在蛋白质分析中的应用:预测、结构和可视化
- EfficientNet-b0深度学习工具箱模型在MATLAB中的应用
- 2024年河北省技能大赛数字化设计开发样题解析
- 笔记本USB加湿器:便携式设计解决方案
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功