语聊房高质量音乐伴奏的实现
看恐怖片关掉声音,再吓人的画面效果也会大打折扣;一片和谐温馨的画面中突然出现急促的转场音乐,观众会立即领会这是要“大事不妙”了。
如果说每个人都有一首属于自己的 BGM,那不同场景、情景也都有能调动情绪、引起人们共鸣的音乐。
在近期大势的语聊房业务中,热门场景也都少了音乐的“陪伴”。在语音电台中,它可以烘托主题氛围,让用户更沉浸;在多人社交中,它可以消灭尬聊,让交流更自在;在 K 歌房中,伴奏更是不可或缺的刚需。
而且,音乐是人类共通的语言,即便是出海业务中面对不同文化背景的用户,音乐也可以唤起多种关键情绪,是语音社交应用必备“技能”。
融云语聊房 SDK,以高扩展性覆盖全部热门语聊房场景,自然也在音乐管理方面下足了功夫,提供在线音乐、歌单管理能力;支持加载播放本地音乐,支持大部分文件类型;提供入场欢迎、鼓掌、笑声等氛围音效;混音控制,支持人声音量、本端音乐音量、远端音乐音量、耳返开关。
如此丰富的音乐管理能力,如何在技术侧保证优质音乐体验呢?本文将分享融云语聊房 SDK 的高质量音乐播放实现方案。
语聊房音乐播放的主要形式及处理难点
语聊房业务场景中,音乐播放的形式主要有以下几种:
通过第三方设备播放音乐,经过外接声卡和主播声音混音,然后从主播端发送。
通过语聊房应用播放伴奏,在应用内部和主播的声音进行混音。
通过手机设备播放音乐伴奏,在设备采集时将主播的声音和设备的声音块采集到麦中。
通过 PC 端 Android 模拟器实现直播,PC 端播放伴奏,然后通过 PC 的内录方式采集音乐并和主播声音完成混音。
不同的实现方式,对音乐的处理流程存在着一定差异。处理失当可能造成观众端音乐声音小、音乐高低音部分缺失、吞音等严重影响用户体验的现象。
一般而言,音频信号被移动终端采集模块采集后,会经过回声消除、降噪、自动增益控制等预处理过程,再由音频编码器进行编码。
预处理过程包含 Acoustic Echo Cancelling(AEC,回声消除)、Automatic Gain Control(AGC,自动增益)、Active Noise Control(ANC,降噪),俗称 3A。
3A 预处理算法对设备采集的声音也会有不同程度的损伤。而且,相比语音通话场景,音频预处理会对音乐产生比较明显的影响。比如,降噪、回声消除算法可能在主播唱歌时将伴奏音乐当成背景噪声处理掉,从而导致伴奏音乐缺失,音质严重降低等结果。
(回声消除原理)
所以,在有背景音乐这种相对复杂,对声音要求比较高的场景,更需要精细化的预处理策略。
融云语聊房高质量音乐实现方式
经过大量的技术和市场调研,我们将语聊房音乐采集方式归纳为以下几种:
设备 Mic 采集的音源已经是歌声和伴奏的混合声音,这种场景的混音主要有:
设备播放伴奏和主播歌声在空气传播中进行混音
设备播放伴奏通过外接声卡和主播歌声进行混音
通过 PC 内录环境将伴奏和主播歌声进行混音
设备通过 Mic 采集主播歌声,然后在应用内与应用播放的声音进行混音。根据主播的习惯又可将该应用场景分为主播有耳机和无耳机的音乐使用环境。
经过大量测试和理论验证,我们采取的方案为:应用外音乐混音尽可能还原音源,应用内音乐混音则放在 3A 预处理之后混音的策略,在保证音质的基础上提高用户体验。
这是因为,应用内音乐和声音混音若在声音 3A 前进行的话,3A 预处理就会对音乐产生损伤,导致处理后的音乐出现音量不稳定、部分音质丢失等问题,而且也会对回声消除中的参考信号量产生影响,而导致聊天过程中出现回声问题。这种情况下,将声音混音放在 3A 处理之后,不仅解决了聊天过程中的降噪问题而且可以保证音乐的音质,进一步确保用户获得高质量音质体验。
(应用内音乐和声音混音流程)
在应用外部音乐和声音混音的情景中,分为主播使用耳麦和不使用耳麦两种情景。
主播使用耳麦时,通过耳麦采集音源可以屏蔽掉背景噪声,而且不会存在回声问题。针对这种情况,对 Mic 采集到的伴奏和声音的混音不做降噪和回声处理,从而保证了混音音源的完整性。
针对主播不使用耳麦的情况,经过大量多型号设备测试,我们调优了 3A 处理参数,最大限度保证音乐伴奏混音和通话流程的质量,做到音乐高音质播放,提高用户体验。
(应用外音乐和声音混音流程)
在语聊房音乐的高质量播放之外,融云语聊房 SDK 还支持声音预处理的美声扩展,用以美化主播声音的磁性和丰富度,满足 K 歌、演唱会等多样场景的应用切换。
评论