如何创建具有环境噪声补偿的独特UrbanDenoiser播放器

在本文中,我想谈谈创建UrbanDenoiser Player媒体播放器的过程。除了所有的“魅力和美丽”(最好在几乎相同的官方网站上阅读)之外,播放器还提供创新的播放模式:

  • 去噪器-尽管存在外部噪声,但仍提高了音频信号的清晰度;
  • 周围的噪音-同时收听媒体内容和周围空间的声音;
  • 自然-播放器不仅使输出信号适应特定耳机的频率响应,而且还适应用户听力的个人特征。

图片

iPhone版本

当然,如果没有创新的信号处理算法,这些功能将无法实现。将讨论其创建。

从助听器到媒体播放器


2014年初,一个友好的开发团队致力于发布Petralex助听器应用程序,该应用程序实现了基于智能手机/平板电脑的数字助听器。最初,该应用程序是针对那些被迫(但害羞)佩戴助听器的人的。毕竟,任何人都不会接受用于助听器的智能手机的耳机。此外,智能手机/平板电脑具有所有硬件(例如真正的-而且非常昂贵!-数字助听器)。这仅是“软件”问题,能够根据用户的个人听力图实时进行音频信号处理(表征听力障碍),删除该问题也是“软件”问题。

因此,在Petralex上最繁忙的工作完成期间,开发团队中的两个人经过一天的辛苦工作,乘地铁。还有一个送给朋友一个听筒-听一首有趣的歌曲。的确,由于噪音(他知道是谁在地铁里旅行了!),一个朋友没说一个字!并迅速提出了一个想法:分析周围的噪声并以提高其清晰度的方式处理有用的信号(尽管存在外部噪声!)。

朋友的想法启发了。数学家参加了讨论,以创建所需的信号处理算法(除其他事项外,还利用了Petralex的经验)。

算法之战


主要问题是任务的怪癖性-找不到有关此主题的出版物!起初,开发人员根本不了解可用的类似物。也许这就是为什么他们以更原始的方式解决问题的原因。在申请我们自己的专利时,我们已经了解了类似的解决方案(基于西方会议的资料)。
但是那是后来的。最初,信号处理算法仍然非常粗糙。根本没有讨论实时性。但是,这对于初始调试是正常的-目标是使软件模块原则上可以工作以获得期望的结果。

Urbandenoiser飞溅

该应用程序的第一个原型已准备好在手机上安装,并于2014年6月问世5个月后问世。立即发现了它的缺点-数学信号处理算法非常“繁重”!
确实,实时处理声音的主要问题是需要一种简单有效的算法。这样手机就有时间处理相当快的数据流(在我们的例子中为44.1 kHz)。通常,语音处理被限制为8或16 kHz。但是由于音乐也在我们的应用程序中处理,因此频率应该更高。

因此,最终的算法拒绝在iPhone 4上运行。开发人员不得不再次袖手旁观,并优化C代码。结果,可以将iPhone 5上的处理器负载从55%降低到35%。当时,这已经足够了(尽管现在人们正在努力进一步降低CPU负载,以便该应用程序可以在任何“流行的Android”上运行)。

寻找“音乐爱好者”


使用更新后的算法测试播放器被证明是很棒的。第一种模式(称为Denoiser)已准备就绪。但是,又遇到了进一步的困难。例如,应该选择算法对环境噪声变化的响应速度的多少?如果您使算法非常“敏感”,则在更改外部噪声环境时,播放器的声音将快速变化。一方面,这很好-如果噪声急剧上升并且长时间保持不变。但是对于“突然”的声音(例如锤子敲打,剧烈的敲打,通常是任何单个“干扰”),播放器的高灵敏度是不合适的。另一方面,非常慢的反应也是不好的-收听者将不得不等待很长时间,直到播放器的算法适应新情况。在算法设置的黄金中途,开发人员不得不费力地手动选择-通过反复试验。

图片

另一个问题是需要考虑特定设备的细节(即,头戴式受话器麦克风的固有噪声水平)。处理算法完全不应对这种噪声!但是,麻烦在于每个电话都有自己的“个人”噪音水平。在应用程序的最终版本中,所有这些都必须考虑在内。 iPhone的声音系统具有相当低的噪音水平是很好的。

在开发的这个阶段,他们决定考虑所有“苹果”设备自身的噪声水平相同。尽管将来(现在这项工作仍在进行),任务是“教”玩家不要响应用户的声音(该声音也由电话的麦克风记录下来)以及外部噪声。

在此基础上,完成了数学上的声音处理算法。除了“降噪”模式(“无噪音”)外,开发人员还提出了同时收听音乐和环境声音的功能(例如,在地铁中-收听发送的电台的名称很有用)。

但是,自然模式(“自然听起来”)成为开发人员的特别骄傲。在这种模式下,通过再现设备的硬件以及用户听力的个体特征(明显的听力障碍除外),可以使引入音频信号的失真变得平滑。

图片 图片

通过处理音频信号的“狡猾”数学算法,也可以实现自然效果。其本质是评估相对于无声的主观可听性阈值的再现设备的频率响应(对于每个用户,此阈值是不同的)-并输入校正因子。实际上,这意味着在花了几分钟的时间设置了播放器(使用内置过程来确定可听阈值)之后,您才能欣赏到音乐的生动色彩。在真实的音乐厅中感受自己!

一些更多的彩虹色和...


播放器的数学算法已调试。但是要将其转变为成熟的移动应用程序,需要一个友好的界面。困难再次出现。动画绘制的同步(特别是Spectrum)使开发人员很长时间受到折磨(特别是Spectrum),以使它不会“抽动”并与移动屏幕的更新同时发生。没有在任何地方显式定义CADisplayLink类。也就是说,当然有文档。但是,请尝试查找“这非常重要且必要”的具体说明!

成功的下一个“垫脚石”是与界面的斗争。特别是在iOS中,当您打开麦克风(最小化您的应用程序)时,会显示一个红色条。可以通过调用一个功能来关闭麦克风,但该指示条不会消失。要删除它,您必须进行很多不必要的操作,并且常常会造成干扰(停止AudioGraph并再次重新启动,这不好-您可以听到这种声音)。好吧,常见的问题是缺少简单的应用程序(例如“ Hello world”,使用数据库,使用音频,视频等)。尽管总的来说,没有什么可以阻止应用程序取得胜利的胜利!

图片

这是创建UrbanDenoiser Player的简要历史-世界上第一个具有独特播放模式的播放器。现在,每个人都可以得到友好的专家团队几个月工作的结果-玩家可以自由分发!

PS:从最新消息开始,UrbanDenoiser Player应用程序成为Microsoft举办的欧洲开发人员杯B2C类别的获胜者http://appcup.eu

感谢您的关注!

All Articles