手机 K 歌混音对齐问题的解决方案与探索方向

2024-08-04
来源:网络整理

人的大脑对声音的响应和敏感度很高,唱K时对人声轨和伴奏轨的时间对齐有很强的要求,唱吧高级研发总监王国腾在第八届大会的分享中做了详细介绍,介绍了手机K歌混音对齐存在的问题、解决方案和值得探索的方向。整理演讲内容。

文/王国腾

整齐的/

大家好,我是王国腾,在唱吧主要负责音视频技术研发和音频新技术的科研工作,这次主要给大家介绍一下移动卡拉OK混音时间对准存在的问题,以及常规的工程解决方案和值得探讨的方向。

1. 移动卡拉OK简介

手机K歌APP在演唱过程中模拟了演唱和试唱两个主要的界面场景,在演唱界面,用户跟着伴奏和提示的歌词一起演唱,主要生成一段干人声,试唱界面提供了很多音效的后期处理。这其中包括音高和节奏的校准、特效或者预先制作的混音需求、干人声和伴奏的合成试唱,甚至还有人声特征的分析、一些动态音效的添加、一键音频校正等。

2. 音质评价标准

我们如何评价声音后期处理的效果呢?比如有的混音师有时会说声音很高但是不够饱满。但是从工程和科学的角度来讲,我们从几个抽象的维度来描述声音效果:还原度、清晰度、区分度、掩盖瑕疵的能力、音乐和声音的融合度。

还原度是一个相对客观的量化标准,也就是声音还原品质能和原声媲美的程度;清晰度描述的是人声的“发音清晰”,比如说元音时瞬态是否良好。发辅音时音量是太大还是太小?辅音音量太大会听起来刺耳,音量太小会像绕口令一样。辨别力是我们增加的一个指标,希望用户能有很多不同的选择。比如80、90年代的大摇滚作品会有很多混响,但现在一般都会把声音弄得干干净净,希望更清晰地表达出歌手的原声。缺陷掩盖能力是指即使音高、节奏都正确,但因个人音色而导致的声音处理问题。比如鼻音重,我们在处理音效时该如何处理这个缺陷问题?有的人唇音、齿音比较重。 如何处理这个问题,就是能否掩盖缺陷。音乐与声音的融合程度。人声也是宽带信号,低频会有更多的谐波。一段音乐伴奏可以覆盖很宽的频带,那么如何才能把这两种声音融合在一起,还能听清人声呢?还有一个问题是节奏是音乐所特有的,要严格对接。音高和节奏都是融合的问题,如果音高和节奏不准确,听起来就会跑调。

假设人声的节奏没有问题,那么在人声和伴奏混合时,如果偏差超过35毫秒,人耳就会感觉到不正常,如果超过50毫秒,人耳就无法接受。另外,根据我们做的双盲测试,人声是超前伴奏10到15毫秒,还是落后伴奏25毫秒,内行的耳朵都能察觉到。一般来说,35毫秒以内的偏差,大概90%的人是感觉不到的。在音乐节奏方面,人的耳朵是非常灵敏的,唱歌的时候,听到音乐的人会有节奏感,会辨别出来,然后按照这个节奏唱出自己的声音。一般歌曲的速度都是稳定的,所以演唱者也会按照稳定的速度演唱。这说明人本身就是一个没有延迟的反馈系统。

3. 时间偏移的本质

唱歌时间偏移主要分为两类:一类是唱歌实时反馈的时间偏移,一类是混音对齐的时间偏移。

唱歌实时反馈的时间偏移主要关注唱歌时人声和耳机反馈回来的声音(实时耳返)之间的实时偏移,这个偏移一般控制在30毫秒以内,超过30毫秒,人唱歌会受到影响,超过50毫秒,唱歌就会变得很吃力,混音对齐关注人声和伴奏能否对齐地混合在一起。

这里介绍一种测试唱歌实时反馈的方法,找一个示波器,分别从麦克风和耳机采集声音信号,测试仪可以发出一些短暂的声音,比如敲击声或者脉冲声,此时示波器可以分别显示出麦克风和耳机的实时反馈,通过采集到的脉冲和从耳机得到的脉冲的时间差,可以了解唱歌实时反馈的时间偏移大小。

在设备系统中,各个厂商通常会添加一些标识,“tag”和“..pro”标签。这两个标签会告诉开发者手机唱歌的实时反馈偏移量的大小。声音从播放到真正播放的偏移量,通常小于45毫秒。.pro是行程时间,通常小于20毫秒。

造成歌唱实时反馈时间偏差的原因可以分为以下几种:计算性能、系统性能、处理缓冲等导致的时间偏差。

4.安卓手机优化

上图是 手机处理声音的示意图。从输入声音,经过 ADC、总线、应用程序,再返回的处理时间就是前面说的往返时间。在应用层,我们还会将声音信号写入单独的文件进行后期处理。我们希望将歌唱实时反馈的延迟时间控制在 30 毫秒以内,但上述过程中每个处理步骤都会花费一些时间,通常是 10-20 毫秒,或者 20-40 毫秒。当然实际耗时会根据设备不同而有所不同。

上图是我们做的一个通用的入耳式反馈延迟优化方案,把之前的上层sum改成使用Open SL来处理,因为Open SL本身是一个稍微底层的接口,这样可以避免很多延迟,相对比较稳定,同型号手机之间差别不是很大,不同录音之间的差别也比较小。

上图是现有国产手机的延时解决方案,因为他们的手机延时性能指标达不到要求,所以他们又找到了另一种绕过这个问题的方法,将耳机的声音直接由旁路芯片加到手机麦克风输出,这种方法的延时可以控制的很小,但是芯片处理过的耳机音效甚至音量等因素就很难控制了。而且每个厂商都有自己不同的解决方案,处理不同的情况,这大大增加了应用上的控制难度。另外由于安卓手机机型碎片化,我们需要一个整体的方案,目前进展还是比较缓慢的。但是我们还是可以提供一些经验,比如我们用Open SL来处理IO,但不处理音效,在旁路中加入C++代码来完成。如果我们需要在入耳反馈处理中加入实时的效果,那么就要保证效果是实时的,并且处理本身的固定缓冲延时要尽可能的小。 当效果处理对计算性能要求较高的时候,我们应该考虑让它经过一个旁路,完成异步处理,这样只有湿声去效果,干声还是直接沿着原来的路径回来,这样就可以让这个延迟量控制只是干声的延迟。在上,可以使用一些NEON指令进行计算优化,在iOS上,会使用DSP进行计算优化。

5. 混合对齐的重要性

混音对齐延迟又分为4种场景:录音播放首帧延迟、演唱中断偏移、效果处理延迟和歌手演唱误差。歌手演唱误差比较容易理解,就是因为歌手的演唱不准确。延迟指的是录音文件首帧和伴奏时间之间的时间差,如果现实中这两者不一致,那么播放首帧就会有延迟。效果处理延迟指的是我们在做信号处理的时候,可能出现的延迟,有算法导致的延迟,也有计算性能导致的延迟。演唱中断偏移是一种特殊的功能导致的,就是说我们在用手机APP唱歌的时候,是可以暂停的,比如要打电话、回复微信,或者录了一句不满意的话,都可以反复播放,暂停之后再切回来。 这时候如果录播已经出现延迟,那么打断一次就会导致录播第一帧又出现延迟,延迟越积越多会成为更严重的问题,有可能一开始延迟还在可控范围内,但之后会越来越大,就没办法了。

那么我们该如何解决这四个问题呢?我们先来分析一下首帧延迟的原因。一般在设备初始化IO调用的时候都会有延迟,最直接的解决办法就是提前初始化录音设备和播放设备,当我们真正开始写文件、播放的时候,首帧延迟问题不仅在和IOS中存在,在小程序中也同样存在,如果初始化时间不够提前,最终混音出来的伴奏和人声的时间差可能会达到1~2秒。第二是减少系统开销,系统开销主要造成首帧延迟的抖动,形成不稳定的延迟,这种情况我们可以通过做一些白名单来解决,目前国内一些旗舰机的首帧延迟基本是稳定的,有的甚至可以满足30毫秒以内的要求,而终端机型的延迟比较大,可以达到100~200毫秒,另外现在安卓手机的KTV APP都预留了人声对齐的酒吧。

效果延迟的问题比较容易解决,因为混音对齐是后处理,不受计算性能影响。我们只要保证它不掉帧就行,因为每一帧的人声都会和每一帧的伴奏一一对应。所以不管计算性能好坏,混音对齐从第一帧到最后一帧都要对齐。我们需要考虑的是算法延迟是多少,如果算法的延迟比较稳定,理论上可以计算出来,这个事情就比较简单了,最后把人声和伴奏混合在一起的时候,把这个延迟还原就可以了。设备可能是一个不稳定的偏移,只能从算法上去优化,比如我刚才说的实时反馈的延迟,也可以这样解决。我们对湿声和干声分别进行优化,有些效果器偏移不稳定,不能发出湿声,只能从算法的角度去尽量降低。

我们单独说一下唱歌中断偏移,比如暂停或者重复上一句,都会造成一些唱歌中断偏移,解决办法跟上面的录音播放首帧偏移类似,需要注意的一点是,用户需要暂停这件事情,并不是完全停止录音,只是暂停一下,所以我们可以用静音来弥补播放,如果录音需要快进的话,我们可以进行剪辑。

我们在唱歌的时候,如果需要暂停,不需要停止伴奏,而是插入一个静音帧。人声也是一样,因为一旦停止再开始,就会产生新的声音。录制和播放第一帧的延迟。如果选择了静音,我们只需要在最后的混音过程中严格减去相同的静音数据,就可以完成同步。

在唱卡拉OK的时候,人声是处于一个贴近唱的过程。贴近唱就是我们已经有伴奏了,人声按照伴奏一句一句的唱。人声唱法包括以下几个特点:辅音先进,元音对齐;伴奏速度基本稳定;节奏类型错误少,速度类型错误多。那么针对这些特点我们该如何解决混音对齐的问题呢?我们可以对人声的节奏特点进行分析识别,比如我们可以找出所有元音的时间和 找出伴奏的速度,然后做宏偏移,这个宏偏移就是我们整首歌的宏编排,也可以是一句一句的宏偏移,对每一句进行拉伸、压缩、偏移,然后通过歌曲和伴奏的速度对比,这样就比较容易解决演唱者唱法错误造成的时间偏差。 例如在唱吧的预览界面就展现了一键调音功能。

还有一些跟卡拉OK对齐相关的问题,比如丢帧偏移,当运算性能出现问题的时候,丢帧必然会造成偏移;还有原唱和伴奏切换的时候也会有偏移,声音是按照伴奏来播放的,但是由于原曲和伴奏有时间差,所以在人声伴奏混录的时候会有一些偏移,比如歌词和伴奏同步,一般在差别比较大的时候才需要同步,但是会有问题,因为人的眼睛相对来说没有那么敏感;再有就是合唱不同步,我唱完一部分歌之后,再去找另外一个人来加一部分,很多时候可能会造成偏差;当然还有现场合唱,清唱伴奏跟唱,DJ无缝切换歌,节奏修正等我们在K歌中可能遇到的人声伴奏对齐问题。

分享