小小的安卓低延迟耳返功能,为什么你就是实现不了?

2,045 阅读7分钟

一、什么是耳返功能

耳返功能又称耳机返听、耳机采集监听,在设备上插入耳机(普通耳机或蓝牙耳机),能从耳机侧听到麦克风采集的声音。

现实中,耳返常见的使用者是歌手。在嘈杂的演唱环境里,通过耳返歌手能清楚地听到伴奏和自己的声音,来鉴定自己有没有走音。

而在线上,通过耳返也同样可以让主播在K歌直播、K歌歌曲录制、个人清唱,朗诵等场景下实时监听自己的声音,不断调整主播的声音状态,给观众呈现最佳的视听效果。

二、实现耳返功能有哪些技术难点

难点一:Android 系统自带的耳返功能较为单一,不能满足用户多样化的需求。

难点二:Android系统繁杂,型号多样,大部分手机设备厂商直接使用Android系统的接口,硬件支持程度的不同,导致耳返效果不同,一些机型耳返延迟(从系统采集到人声从耳机输出)较高。

即构对市面上多家Android机型做了系统的测试,发现一些机型的耳返数据甚至达到300ms以上,以下是部分Android机型耳返数据:

以上两个痛点,导致肉耳可辨别的延迟让耳返功能大打折扣。直播时,主播听到自己声音变调之后不能及时调整自己的音调,影响了观众的视听体验;在个人清唱、个人歌曲本地录制时,需要歌唱者频繁地停下来重新录制变调部分。另外,当歌唱者跟随伴唱一起唱的时候,会出现让歌唱者伴奏对不上的情况,导致录制出来的效果极差。

对于相同的K歌应用场景而言,iOS系统的表现比Andoid系统好很多,然而对App应用开发商来说,优化耳返效果依然是有心无力。因为无论iOS系统或是Android系统,都是调用系统接口进行音频的采集与输出,开发者从App层面优化的空间极为有限。

三、部分手机厂商针对耳返功能的特殊优化

针对以上提到的两大痛点,安卓手机厂商也做了努力。我们发现,华为、oppo、vivo等厂商新发布的机型,针对耳返功能从系统底层做了特殊的优化。通过底层芯片级优化,提供低时延音频数据通路和混音耳返的音效。

以华为新机型为例,华为K歌耳返方案提供双流的底回环通路,录音数据到达HAL层之后,一部分数据送给上层APP,另外一部分数据送给HIFI模块,HIFI模块混音特效加持后直接送给用户,而APP只要实现伴奏的播放即可。同时,在新平台对底层又进行深度优化,底层回环耳返延迟(见下图绿色箭头)可达到30ms以下。

这样从系统底层的优化,从根本上解决了耳返的延迟高问题,让App应用开发者可以无须再为耳返延迟高苦恼,只需在App层面进行复杂的算法优化,就可极大提升k歌场景的用户体验,让Android设备也能成为专业的歌曲生成、剪辑工具。

同时,为了对App应用开发者更友好,厂商在该方案也提供了一个界面提示用户进行相关的耳返和混音的设置,有了这样的设置,一般的App应用开发者只需很小的工作量就可以实现音频混响功能的设置。

如下图所示,当在支持的机型上成功使用此功能时,在APP上会提供一个悬浮按钮,点开后会有相应的设置界面。

四、App****开发者依然存在的问题

由于目前各厂商的耳返优化的功能都是使用其私有接口实现,各厂商的机型都需要通过调用一系列不同的私有接口,来判断具体机型是否支持耳返优化的功能,这给开发者带来了一定的工作量。App应用开发者需要与不同的手机厂商沟通对接,来实现该功能的效果。

另外,由于此耳返优化的功能目前并非通用功能,需要App应用开发者获取具体厂商系统的使用权限,即将自己应用的包名提交给具体的手机厂商,手机厂商会将App开发者的应用包名添加到其系统的白名单上,经过以上步骤,App应用才能在具体支持耳返优化功能的机型上使用此功能的能力。

**五、**ZEGO SDK 适配Android机型的耳返优化

针对当前普通机型耳返存在的痛点,以及厂商对最新机型进行耳返优化后App开发者依然存在的问题,ZEGO Android SDK 在支持耳返延迟优化功能的机型上,针对App应用开发者需要对不同厂商的系统进行不同私有接口调用的问题进行了适配,将开发者复杂的适配测试工作归结为使用ZEGO Android SDK时的一个接口的调用上,大大降低了开发者需要针对不同机型的适配工作量。

另外,ZEGO Android SDK针对APP开发商在对接过程中遇到的两大问题进行了逐一解决。

问题一:

开发者在与厂商对接过程中,需要具备一定较为专业的 Android 系统底层音频采集的知识,这对App应用开发者来说增加了一定的学习成本。另一方面,App开发商也需要储备在音频领域具备一定专业水平的开发者,人才成本增加。

不仅如此,开发者在开发过程中会花费较多的时间在调试工作上,不符合如今互联网行业需求快速迭代的场景。

ZEGO 解决方案:

ZEGO拥有一批专门从事数字音频领域的技术专家,也有配套的专业技术支持团队7*24小时指导,开发者不需要了解音频相关知识,在ZEGO技术团队的指导下,在自己的应用实现接入低延迟耳返的功能,极大降低了开发商的人才投入成本。

问题二:

由于 Android 系统机型众多,系统版本不一,ZEGO在适配低延迟耳返的功能中,发现部分机型存在鱼和熊掌不可兼得的情况,一种适配方案无法满足所有机型可能出现的异常情况,例如耳返完全变声的问题。该问题产生的原因是在应用层面上,对于部分本身就不支持的机型没有具体的系统接口来或者采集的音频声道数据,导致在优化过程中,出现音频数据采集异常的情况。

ZEGO 解决方案:

在此问题基础上,与其他厂商要求开发者自己来维护无法兼容的机型黑名单不同,ZEGO从开发者接入友好、开发过程更便捷的角度出发,由 ZEGO 侧来维护一份黑名单机型列表,从而避免了开发者需要更复杂的逻辑来处理无论如何都无法兼容的机型的问题。

问题分析清楚了,解决方案也有了,你不自己上手试试?

耳返适配优化示例Demo 源码下载地址:

github.com/zegodev/Ear…

ZEGO耳返及优化集成文档:

doc-zh.zego.im/zh/2151.htm…