作者:秋半仙,哼哼
上一篇文章一段声音的旅程(二)头疼的音频信号处理中讲到音频信号处理中有五大不安因素,今天咱不卖关子,就来八一八这五大刺头中的第一个——硬件。
和信号处理强相关的,主要是麦克风,如果只有一只耳朵,人可能就很难分辨出声音的位置。机器也一样,没有基友单打独斗的麦克风也很难定位出声音的位置。所以在这里,我们引入一个新的概念,叫“麦克风基友团”,啊不对,是“麦克风阵列”。顾名思义,麦克风阵列就是有多个麦克风组合在一起共同去完成声音采集。各位童鞋可以把这些麦克风想象成一群采蜜的蜜蜂,而采来的蜜呢,其实就是“信号处理”的“输入”。如果有只蜜蜂采来的蜂蜜杂质含量高,那势必会影响整批蜂蜜的纯度。同理,“每一个麦克风采集声音的质量”,会直接影响到“信号处理”的最终效果。“信号处理”就是将这些多路音频数据,处理成一路音频,输出给语音识别进行下一个环节的过程。
麦克风阵列的重要职责之一,是找到说话那丫是从哪个方位说话的,也就是“声源定向”。同样的,再精准一些,就是“声源定位”,也就是精准定位出说话那丫在哪旮沓。一般情况下,麦克风基友越多,定“向”的精准度越高,可以形象的理解为:两只小蜜蜂分别住在花园的东面和西面,他们的任务是找到花姑娘采蜜。花姑娘通过散发花香吸引两只蜜蜂分别从自己的方位往花姑娘的方向飞。假设花姑娘在东边,那么在西边的小蜜蜂哼哼往返的用时一定比在东边的小蜜蜂秋半仙长。由此养蜂人就可以判断出花姑娘所在的方向和位置。蜜蜂越多,将空间分割的越细,那么方位的准确率和精细度就会随之提升,如图示意(注意,真实的世界是一个三维空间,示意图描绘的是二维空间):
麦克风有单麦方案和阵列方案,麦克风阵列又分线性阵列和环形阵列,根据不同的行业和需求,有不同的选择,比如:
(1) 智能汽车、智能家居(比如空调、冰箱等)、有些高端后视镜,一般选用双麦方案。这些设备对空间感和降噪有一些要求,但不需要太精细,而且双麦成本不会太高;
(2) 智能电视、智能家居等这些设备,一般选用线性阵列方案(双麦、四麦线性等)。这些设备对空间感要求偏低,但对距离感和降噪的要求高;
(3) 有些后视镜、智能穿戴、低端的音箱这些,还会选用单麦方案,声源与麦克风距离一般都在一米以内,对于降噪要求偏低。当然,最主要还有对成本因素的考虑;
(4) 智能音箱、机器人这些行业,一般选用环形麦克风阵列,比如四麦环形阵列、6麦环形阵列等,对于空间感要求高。
那啥,后排做产品的同学注意听讲哈。对,说你呢,拿出小本本记住下面这段话:
想做好一款语音产品,首先要非常清晰的定位自己产品的使用场景、目标人群以及产品要求。因为对产品的不同定义和不同要求,会从源头上影响硬件的选型,成本的投入和管控。能雇一只小蜜蜂的就犯不着雇两只,当然,土豪请随意。如果你的公司也同时在做硬件,请务必将这个点牢记在心,多和硬件工程师沟通交流,不要到硬件定版甚至已经在小批次试生产的时候才发现,产品定义的需求和体验,当前硬件根本达不到,那就凉凉了,因为那个时候可能会让你的企业损失不小的一笔钱,而这些损失,很可能在初期硬件选型时,你多迈出一步,和工程师简单沟通和交流之后,就可以避免~
从原理上看,既然多麦方案可以分辨出声源的方向,那我们就可以在这基础之上,增加“定向抑制”的要求。
所谓“定向抑制”,顾名思义就是抑制某个特定方向的声源采集。举个例子:秋半仙在开车,哼哼在副驾打电话。如果没有定向抑制,画风可能是这样的——
秋半仙:你好二傻,我饿了,看看附近有没有——
哼哼:诶妈,我跟你说,上次我看中个包可好看了,就在连卡佛,我正要去连卡佛再逛逛呢~
语音助手二傻:好的,正为您导航去连卡佛的路线。
秋半仙:唉唉唉,什么导航去连卡佛,我是让你看看附近有没有吃——
哼哼:你说什么?要找我看电影?那看看最近都有什么电影上映吧。
语音助手二傻:好的,正在为您查找最近上映的电影。
秋半仙:……都什么玩意儿,我是让你给我找附近的饭——
哼哼: 哦你想看完电影去做美甲,好啊,那看看附近都有哪些美甲店。
语音助手二傻:好的,正在为您查找附近的美甲店。
秋半仙:……我就想吃个鸡米饭而已……
如果此时增加了定向抑制的要求,在主驾唤醒语音助手后抑制从副驾发出的声音的采集,那么画风应该是这样的——
秋半仙:你好二傻,我饿了,看看附近有没有吃的。
哼哼:诶妈,我跟你说,上次我看中个包可好看了,就在连卡佛,我正要去连卡佛再逛逛呢。你听我说啊,你要是下午没事,我们再看看最近有哪些新上映的电影,一起看场电影去。看完电影还可以看看附近有没有美甲店,再去做个美甲,侬说好不好?
语音助手二傻:(自动无视哼哼的哼哼唧唧)好的,正为您查找附近的饭店。已为您找到三家饭店,请说第几个——
秋半仙:(转向哼哼)什么包?多少钱?你不是有好多包了吗?家里放不下了,咱不买了好不好?
语音助手:对不起,我没有听清,请再说一遍,或说第几个——
哼哼:……
通过这样的定向抑制,麦克风阵列能在一个合理角度区域内采集的声音进行增益,对这个区域之外的声音进行抑制。这有什么好处呢?相当于,我们采集的声音区域变小,那么我们被其他区域的声音干扰的概率就能降低,从而能够提升“信号处理”的质量。示意图如下(注意,二维空间的扇形在三维空间中可能是锥形,左右区域不一定是相等且对称的。那啥,本半仙画图的功底不行,只能用文字示意):
咳咳,我们继续。对于区域的角度选择需要和算法同学反复沟通,不同的算法的真实效果不尽相同,在这里,充分沟通之后,请依据各自算法能力去定义产品的具体要求,这里就不奢述了。
特别注意:麦克风所采集的音频,如果质量不佳,是要找麦克风的供应商或者集成商去解决的,我们一般把这个归为“硬件质量问题”范畴。原则上,这个会和麦克风硬件生产线的良品率挂钩,也和设备组装的流水线的良品率有关。假如某一天,你取出了信号处理之后的音频发现质量不佳,千万不要以“问责”的态度,去找“信号处理”的同学,因为这里也可能是硬件质量问题导致的。
所以遇到这种情况,建议童鞋们先在不同设备上多采集几次,看是不是个例,如果有规律可循,初步估计一个出现的概率比例,从而评估出风险的等级,再找正确的人,去处理和推进~
由此,我们延伸出一个问题。上面提到了“良品率/次品率”,这是一个批次生产流水线上很重要的指标。但是,什么样的音频属于“良”?什么样的属于“次”呢?如果你今天已经在做一些和语音有关的硬件,但是从来没有想过或听过这个问题,建议你和你的工厂质检相关人员,详细确认一下这个点,有可能“质检”的范畴中就没有包含“音频质量”。音频质量很难文字描述,举个更简单的例子,如果麦克风有位置要求,比如必须是A在左B在右,如何保障装配的流水线过程中不装反呢?
现在很多语音公司,都在做自己的语音模组,一方面是卖硬件可以带来非常清晰的现金流水,比单纯软件好追溯好收费,而且企业确实需要一些实打实的流水,不能总是干炒概念吧。另一方面就是语音的硬件质量参差不齐严重影响语音产品的最终效果,而很多企业无法理解这里面的因果关系,就会简单粗暴地认为是“语音能力不行”。
其实大部分语音公司的“基础能力”对于商用已经够了,如果企业中没有对于音频硬件有足够经验的人,还是建议企业先统一采购语音公司的硬件模组,先保障这些坑都先绕过去。未来如果想逐步接手硬件部分,再慢慢填坑,慢慢渡劫~