大数跨境

MATLAB 里的天籁之音——浅谈 MATLAB 语音与声学应用(一)

MATLAB 里的天籁之音——浅谈 MATLAB 语音与声学应用(一) 声学楼论坛
2025-09-12
0
遥想当年,从霹雳五号到星球大战,都有智能语音助理的身影
(年龄暴露 T-T)。而如今,智能语音设备早已从科幻小说电影,走进现实。2014 年 11 月亚马逊的 Echo 音箱首开先河,随后各大厂商争先恐后的发布自己的智能音箱。
音频和声学这个曾经比较小众的领域,一夜之间从门可罗雀,变得门庭若市。音频和声学领域的应用,也成了技术圈里的热门话题
主动降噪耳机耳麦,风靡各路达人,幸福感飙升神器;
智能音箱绘声绘色的给孩子们讲故事,给老人们念新闻读菜谱;
先进的新型人工耳蜗/助听器,帮听障患者“听见光明”;
家庭影院,给你足不出户,即可身临其境的震撼影音体验。
MATLAB 其实在音频和声学领域已深耕多年,您身边的众多音频设备,背后都有 MATLAB 的身影。
从顶级音响厂商 Bower & Wilkins 旗舰低音炮,飞利浦的 Ambisound Soundbar 家庭影院系统,到听力设备翘楚瑞士 Sonova 的助听器,以及国内和国外一些市占率很高的智能音箱,都受益于 MATLAB。
MATLAB 到底能为音频设备的研发,带来哪些助益?听我为您娓娓道来。
本文共分三期:
1)音频算法快速原型试音;
2)声源分离与提取;
3)深度学习语音识别

    ◆  

Part 1




音频算法快速原型

音频工程师可能都有体会,音频算法流程的独有特点,就是在做实际的硬件原型之前,需要首先把设计好的音频算法,进行基于听觉的测试。一般还会分为早期的算法音,后期的硬件原型试音。

    ◆  

音频算法原型 ——

1. 早期原型——试音(Listen Based Audition )

音频开发通常有一个独特的试音阶段,这个试音的过程(Listen Based Audition ),决定了这个算法是否值得进行产品化。
这个过程需要满足三个条件:
1)实时;必须是对实时的音频流进行处理,并实时的听到算法的效果;
2)参数可调:在音频算法的实时测试中,算法的很多参数,都需要是可以灵活调节的;
3)可视化:音频算法调节过程中,还需要实时对调整的效果,可视化。
让算法运行不难,难的是按照上面三条,实时试音。
专业试音环境
过去为了进行这种试音,通常有两种方法,
第一种,是将 MATLAB 算法挂到第三方的 API 上,比较流行的就是 PortAudio。
但这样的方式,仍然会涉及一些底层 C 代码的编写,而且还需要手工维护 PortAudio,比如初始化、打开、关闭音频流的一系列底层操作和维护。
另外,有没有小伙伴遇到过系统依赖性和兼容性的问题?嗯,那你不是一个人。(握爪 T-T)
第二种,是手工把 MATLAB 音频算法转成底层的 C/C++ 代码,然后再转成 exe、dll 形式,去使用。
手写 C 代码会很耗时,连一个数据包的访问,都得依靠 for 循环,而且很多时候音频算法,测试完这个 C 代码也就没用了。
小伙伴们,其实你们手里的 MATLAB 音频算法,就可以直接支持原型听音测试。
惊不惊喜意不意外?
而且有两种方式:
1. MATLAB 直接进行实时音频数据流的仿真

MATLAB 的 Audio Toolbox 可以提供了一个神奇的 APP——Audio TestBench。可以直接加载你的 MATLAB 音频算法,还可直接访问你的底层音频硬件作为音频的输入/输出,比如音频信号源、信号发生器、音频采集卡、MIDI Key、音频功放等等,你要的它都支持。
话不多说,给你看看这个小伙伴:
2. 另一种方式,就是利用 MATLAB 的 C 代码生成功能,直接把 MATLAB 音频算法自动转化成C代码,打包成各种插件(Plugin)。

这样很多音频工程师,就可以仍然在他们心爱的音频工作站上,方便的直接以插件形式,加载音频算法,实时完成算法的早期试音了。
加载自动生成的音频算法插件,可以实时调整算法参数,实时显示调解效果,还可以回传给MATLAB做时域和频域的分析和显示。元芳,你怎么看?
MATLAB 可远不只是用来纯算法仿真的吧?


    ◆  

音频算法原型 ——

2. 后期硬件原型

刚才我们介绍的是,音频算法早期的试音阶段,MATLAB 能够支持的两种快速原型,而到了项目开发的后期,我们还需要将算法变成嵌入式代码,实时运行在嵌入式硬件上,这时就是非常接近最后实际产品的硬件原型了。
此时考察的除了有我们的音频算法,还有在特定嵌入式处理器、操作系统以及麦克风阵列的的平台中,联合在一起运行的实际效果了。
你是不是以为,要心事重重的开始手写底层 C/C++ 代码了?且慢。
项目后期的硬件原型固然重要,但是到了这个阶段,其实产品的很多细节还有待完善,甚至还有可能出现算法的反复调整和迭代,如果每次都需要手工完成全套算法的底层C代码的编写和调试,那项目周期一定会变得漫长,调试过程一定会变得痛苦(别问我怎么知道的T_T)
其实近些年很多领先的声学厂商,都在采用另一种新方式,来快速得到实际的硬件原型了。比如飞利浦快速开发高保真家庭影院环绕立体声系统(点击https://ww2.mathworks.cn/company/user_stories/philips-consumer-lifestyle-philips-develops-one-piece-surround-sound-system.html?s_eid=PSM_wechat,查看用户案例),比如顶级音响厂商 Bower & Wilkins 的旗舰级重低音扬声器 DB1D、DB2D、DB3D。
这是借助 MATLAB 的嵌入式 C 代码生成功能,直接将您的算法生成嵌入式的 C 代码,实时运行在嵌入式硬件上。
直接所见即所得的,得到您算法的硬件原型,在实际硬件运行对实际效果进行测试和评估。
而只有在快速反复尝试各种算法和配置,得到最优方案后,才会在嵌入式硬件上进行底层代码实现。
这是不是效率高了很多?难道不香吗?
飞利浦的开发团队,一天内即完成快速原型试音演示,可以在几天内完成新算法的验证而非几周。
iLab DSP 工程师 Jan Tielen 表示:“没有 Simulink,我们可能需要两到三周的时间来编写新算法并对其进行测试,以测试其是否具有所需的声学效果。” “使用 Simulink,我们可以非常快速地测试评估创新想法,有时甚至只需要几个小时。”。嗯~Nice!

再举一个例子,关于主动降噪的。
主动降噪的应用既有普通消费品耳机耳麦,也有很多车辆把静谧性作为卖点,比如 JVC 公司意大利团队,就是基于 MATLAB 进行从原始音频算法开发、到前期算法仿真,一直到后期的硬件原型实车测试、验证的。
实车测试,不必再急三火四、挥汗如雨;工程师们可以气定神闲的调好算法,自动生成底层代码,实时进行算法优化迭代效果测评。生活可以更美好!

这样您就可以测试和评估,您的创新算法在实际硬件环境中的真实效果。

您也可以借助 MATLAB Support Package For Android 或 Simulink Support Package For Android,将算法部署在您的 Android 设备上进行运行,算法执行中可以直接访问设备上的摄像头、麦克风以及加速计等等传感器。


    ◆  

简要总结
对于音频研发过程中至关重要的前期算法试音和后期硬件原型试音,您都可以将手中的 MATLAB 算法,自如的进行实时试音,对您创新性的奇思妙想,所见即所得的进行原型测试评估。
开发工作不再是眼里带着红血丝,披星戴月做冗长繁琐的底层代码编写和调试,而是将主要精力用在那创造性的奇思妙想、灵光一闪的算法设计中。996 未必是福报,用你喜欢的方式做你喜欢的事,才是福报!
免费名额速抢!声学楼智能音频工程师专业课(在线课程):基于MATLAB的声学设计+蓝牙音频开发,驱动智能音频产品创新!



【声明】内容源于网络
0
0
声学楼论坛
“声学楼”创办于2005年,致力于促进声学领域技术交流与应用。历经多年发展,声学楼已从一个单纯声学工程师交流平台,成长为音频企业上下游多方参与音频技术专业论坛之一,每年还通过举办技术研讨会、年会等活动,搭建起与会的行业供需双方沟通的桥梁。
内容 3422
粉丝 0
声学楼论坛 “声学楼”创办于2005年,致力于促进声学领域技术交流与应用。历经多年发展,声学楼已从一个单纯声学工程师交流平台,成长为音频企业上下游多方参与音频技术专业论坛之一,每年还通过举办技术研讨会、年会等活动,搭建起与会的行业供需双方沟通的桥梁。
总阅读2.6k
粉丝0
内容3.4k