HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

实时语音视频通话 SDK 如何实现听声辨位

  • 2017-11-06
  • 本文字数:4337 字

    阅读完需:约 14 分钟

通过听声音可以辨别声源的位置,这是我们习以为常的生活认知。从技术的角度来说,听声辨位其实真的一点都不简单。我们人类应该感谢上天的造化,赋予我们一双巧夺天工的耳朵,让我们可以毫不费力地做到听声辨位。在语音视频实时通信的世界里,要实现听声辨位,却是要耗费一番心思的事情。

双耳效应

关于人耳听声辨位的原理,这里不再赘述。有需要了解的同学请自行搜索“双耳效应”问度娘。简单地来说,听声辨位的基础是左右耳朵从同一声源获得的声音信息有细微的差别:

  1. 到达左右耳朵的时间不一样
  2. 在左右耳朵空间上的相位不一样
  3. 音色(频率)不一样
  4. 音级(波幅)不一样

人脑和双耳就是根据这两组声音信息的细微区别,判断出声源的位置的。

人类的双耳在自然环境进行听声辨位,已经有过数百万年的实战经验,以至于我们认为这是理所当然的事情。然而,随着科技的发展,我们习以为常的认知遇到了突而其来的挑战。

二十世纪初遇到的第一个有代表性的挑战是留声机。立体声技术较好地为模拟声音解决了立体音效的问题。基础的立体声技术是采用两个麦克风进行拾音,获得两组波形独立的声音信号,然后进行独立的处理,在播放的时候采用两个扬声器独立地播放这两组声音信号。这样,从播放端的角度来说,用户听到的是声音本身的立体音效和用户周遭空间的立体音效的叠加,能够达到听声辨位的效果。

二十一世纪的前二十年,语音视频实时通信遇到了移动互联网,立体声技术也遇到技术限制。这些技术限制其实和应用场景有关系。

听声辨位的应用场景

第一个要提的是游戏场景,如果不是最重要,也是最重要之一。游戏可以分为竞技类的和休闲类的。两类游戏对听声辨位的要求也不尽相同。

竞技类的游戏,包括众多玩家耳熟能详的 MMORPG、MOBA 和 FPS。玩过 CS 的同学都知道,在虚拟场景中是能听到周遭其它玩家的脚步声的, 听声辨位很多时候比视野更加有效地帮助玩家判断其它玩家在哪里,这往往是杀敌制胜和脱险保命的关键手段。现在实时游戏语音技术可以让玩家在 CS 中和队友一边并肩作战一边对话沟通。如果玩家通过游戏语音通话判断出队友的位置和通过游戏系统声音判断出队友的位置不一致,以至于造成判断错误,在分秒必争的虚拟枪战中,这可是致命的误导。要让游戏系统声音反映的虚拟位置和游戏语音通话反映的虚拟位置一致,其实是蛮难的。游戏系统和游戏语音 SDK 是完全独立和解耦的,游戏系统的声音产生涉及到游戏服务器和客户端的协同,游戏语音 SDK 的语音是从远端用户传输过来,考虑到两个独立系统和网络传输,两个者之间的步调要保持一致是十分有挑战的任务。

休闲类的游戏包括棋牌等人数较少节奏较慢的游戏,通过游戏语音边玩边聊天是一个刚性的社交需求。请各位闭眼想象,你和其它三个好友在线上打麻将,同时通过语音唠叨家常。如果你能够通过听左、右和前方三个人的声音,分辨出他们就像是坐在你左、右和前方三个位置,音效体验一下子就爆表了。狼人杀游戏更加不在话下,这种完全依托语音会话建立起来的社交游戏,如果能够通过听声音就能辨别出讲话的人的方位,闭着眼睛去感觉,就像是一伙朋友围着圆桌面对面的玩狼人杀游戏呢。

第二个对听声辨位有需求的场景是在线教育的小班课堂。举一个比较具体的例子,在线少儿英语小班课,应该是对线上互动要求最高的一种在线课堂形态,没有之一。小朋友的注意力不容易集中,对课堂趣味性和互动性的要求特别高。如果小朋友能够通过听声感觉到老师就坐在正前方讲台的位置,其它小朋友坐在前后座位各个方位,由远而近多个距离层次都有小朋友,就像是在真实的摆满书桌的教室里面的声音效果一样,这样无疑是大大增强了小朋友的注意力集中程度。

其它的一些应用场景,比如说语音社交、视频社交和互动直播,听声辨位的效果也会让用户感到惊艳。如果你加入 houseparty 的视频聊天房间,能听到参加趴踢的朋友分布在你前后左右的各个位置,那种沉浸式的听音感觉会让你像是整个人一下子投入到趴踢的人群中去。

这些应用场景即构 ZEGO 都有丰富的客户案例,即构 ZEGO 的听声辨位技术能让用户在这些应用场景里获得 360 度空间感的听声体验。然而,客户越来越苛刻的需求,驱使着即构 ZEGO 不断的去打磨和升级其听声辨位技术,来给予用户最优的体验。

移动终端的处理能力分秒不停地飞速发展,5G 的推出如果不出意外也会在 2019 年到来,加上 VR/AR 技术的日渐成熟,沉浸式的语音视频实时互动通信将会成为一种生活方式。当你带着 VR 头显,环顾 360 度都看到远端的朋友的视频影像的时候,你是不是也期待他们的声音听起来也像是从他们看起来的那个位置传过来一样?到那时候,听声辨位技术也会成为这种生活方式的必备支柱。

硬件条件的限制

上面对应用场景的展望和抒情有点太超前了,我们稍微回到 2017 年下半年的现实中来。虽然梦想很美好,但是现实很残酷,现在手机硬件条件还存在诸多限制。

目前,绝大部分的手机采集声音的麦克风只有一个。当然有朋友反对说,iPhone 不是有好几个麦克风吗?其实采集语音的麦克风还是只有一个,其它的麦克风是用来做噪声抑制的。一个麦克风采集到的声音就是单声道的,不会产生立体声的效果,也就是不会让你听声音就能辨别出声源的位置。

目前,绝大部分的手机只有一个扬声器,只有少数的手机是支持立体声的。这里要区别分一下,打电话的时候听电话那个喇叭不是扬声器,点了免提键后手机不需要贴到耳朵边的时候发出声音的那个喇叭才是扬声器,播放音乐的时候发声音的喇叭也就是扬声器。既然只有一个扬声器,那么不管声音信号是不是立体声的,播放出来的声音效果都是单声道的。在渲染的时候,应用程序把声音数据放到一个缓冲区,操作系统把声音数据取出来播放,如果只有一个扬声器的话,巧妇难为无米之炊,臣妾也表示办不到,即使是立体声信号也会被降级为单声道播放。当然,耳机线有左右两个喇叭,插入耳机线以后,手机就支持立体声播放了。

单声道虚拟成立体声

如果发送端采用外部采集,采集的设备有两个麦克风,或者本身就是立体声麦克风,那么采集进来的声音信号就是立体声的。立体声信号包含两组独立的波形,由于这两组波形有相关性,可以一起编码传输,在接收端解码以后再独立地渲染,最终获得立体声的效果。

如果发送端采用手机的唯一麦克风,采集进来的声音信号就是单声道的。如果要在接收端获得立体声的效果,就要把单声道的声音信号虚拟成立体声的。不是说巧妇难为无米之炊吗?这里也不完全是“无米”,毕竟还是有一组单声道波形数据的。

具体的做法是,首先对声音传播路径进行建模,然后输入原始的波形数据,还有距离 d 和角度 a 两个参数,模型会输出两个独立的波形,代表左右声道的声音信号。这两个波形和原始的波形作比较,在相位,音色和音调都有所调整,尽量地逼近原始波形在自然环境中传播到用户的左右耳朵后形成的两个不同的波形。这两个波形有相关性,因此一起编码后的带宽是小于每一个波形带宽的两倍。虚拟立体声信号数据到达接收端以后,结果解码就可以得到两个独立的波形声音信号数据。如果是在手机扬声器播放出来,效果还是单声道的,如果通过耳机播放出来,就能呈现出立体声的效果,用户可以听出声音的空间感,并且依此进行听声辨位。

把单声道波形虚拟成两个独立的立体声波形,是在目前移动端硬件限制条件下的一个技术处理手段。虚拟立体声的处理可以在发送端进行,也可以在接收端进行。在哪里进行虚拟化,要看具体的场景需要。如果有混音的需求,也就是要把语音信号和背景音乐混合在一起的话,那么比较适合在发送端来做虚拟立体声;如果没有混音的需求,那么比较适合在接收端做虚拟立体声。背景音乐一般是立体声的,而且是在发送端输入的。如果需要进行混音,而混音必须要在发送端进行,那么背景音乐和语音信号都要是立体声才能对应得混合。因此,虚拟立体声必须要发送端完成,然后虚拟出来的语音立体声才能和背景音的立体声混合,混合好以后再把立体声信号进行编码传输,最后到了接收端解码以后就可以把立体声播放出来。如果不需要进行混音,那么可以把单声道声音信号直接编码发送,接收端收到后进行解码,再把单声道声音信号虚拟成立体声,这样传输的带宽就可以做到最低。

当互动直播遇到立体声

随着硬件的快速更新换代,在不远的将来,手机很可能会支持立体声,拥有双麦克风(考虑到手机的物理尺寸较小,笔者严重怀疑双麦克风的效果)和双扬声器。也许你会觉得这是普大喜奔的好事情,再也不用费脑去搞虚拟立体声了,然而有个现实要让你心碎:即使手机支持立体声,在进行互动直播或者互动语音视频通话的时候,手机依然只能采用单声道采集,因此,还是要继续搞虚拟立体声,这是跑不掉的事情。为什么在互动直播的时候只能采取单声道而不能采取立体声呢?下图展示了使用立体声手机进行回声消除的逻辑,大家看一下此图就理解互动直播不能采取立体声的缘由了。

(点击放大图像)

参照上图,我们看一下语音数据的是如何流动的:

  1. 远端的左右两个麦克风分别采集左右声道的语音数据;
  2. 近端的左右两个扬声器分别播放左右声道的语音数据;
  3. 近端左边的扬声器发出的声音经过回声馈路会被近端左右的两个麦克风采集进去;
  4. 近端右边的扬声器和#3 同理;
  5. 近端左边的麦克风采集进来的声音信号包括了左右两个扬声器产生的回声;
  6. 近端右边的麦克风和#5 同理;
  7. 对左边麦克风采集的声音进行回声消除的时候,除了参考远端左声道声音信号消除左边扬声器产生的回声,还要参考远端右声道声音信号消除右边扬声器产生的回声;
  8. 对右边的麦克风采集的声音进行回声消除和 7 同理。

也就是说,对左边麦克风采集进来的声音要消除左右两个扬声器产生的回声,对右边麦克风采集进来的声音进行回声消除也同理,总共要进行四次回声消除,并且要从每一个麦克风采集进来的声音信号里消除两个扬声器造成的回声,计算量一下子变成单声道情形的四倍,复杂度更是远超四倍。同等条件下,立体声回声消除的效果比起单声道回声消除的效果差。目前业界的实践表明,立体声回声消除的效果并不理想。因此,在涉及到互动直播或者互动语音视频实时通话的场景,还是要使用单声道采集和渲染比较能简单而且能保障效果。

结语

听声辨位是人们在自然环境中习以为常的事情,语音视频实时通信的愿景就是要在互联网上完美地还原自然环境的通话场景,这也是即构 ZEGO 孜孜不倦地追求的使命。随着 AR/VR 的发展,沉浸式的语音和视频消费方式成为常态,在进行语音视频实时通话的时候,人们也会要求能够做到听声辨位,在游戏语音、语音社交、视频社交、视频会议和在线教育等场景,会有广泛的需求和应用。

作者介绍

冼牛(微信 xianniu1216,邮箱 noahxian@zego.im,电话 13266561305),即构科技资深语音视频专家,北京邮电大学计算机硕士,香港大学工商管理硕士,多年从事语音视频云服务技术研究,专注互动直播技术、语音视频社交和实时游戏语音。

感谢徐川对本文的审校。

2017-11-06 16:551892

评论

发布
暂无评论
发现更多内容

芯片制造企业必备的7种项目管理系统

爱吃小舅的鱼

项目管理 项目管理软件

Networking with IPQ6018 IPQ6010 and IPQ4019|Elevating Industrial Connectivity: Upgrading from Wi-Fi 5 to Wi-Fi 6

wallyslilly

IPQ4019 IPQ6010 ipq6018

性能优化必读 | AntDB-M高性能设计之线程池协程模型

亚信AntDB数据库

AntDB数据库

AntDB-M的扩展功能,性能提升和热更新轻松搞定

亚信AntDB数据库

AntDB数据库

大模型问答助手前端实现打字机效果 | 京东云技术团队

京东科技开发者

前端 ChatGPT 企业号10月PK榜 流式回答

Topaz Video AI for mac(视频增强和修复软件) 4.0.1永久激活版

mac

苹果mac 视频增强修复软件 Windows软件 Topaz Video AI

京东科技埋点数据治理和平台建设实践 | 京东云技术团队

京东科技开发者

数据埋点 平台建设 埋点治理 企业号10月PK榜

CPU智能控制管理 App Tamer免激活最新版

mac大玩家j

Mac软件 系统管理软件

简单聊聊远程协同运维定义以及优势-行云管家

行云管家

运维 远程系统 远程协同 协同运维

HDD上海站:HarmonyOS地图与位置服务,赋能开发者共促生态繁荣

新消费日报

MatrixOne Meetup回顾 | 上海站

MatrixOrigin

数据库 云原生 HTAP MatrixOrigin MatrixOne

精彩合集丨全“猿”出击!浪潮海岳inBuilder亮相1024程序员节

inBuilder低代码平台

1024程序员节

AntDB数据库荣获 “2023年信创物联网优秀服务商”

亚信AntDB数据库

AntDB数据库

Notability for Mac(笔记软件) v4.4.4永久激活版

mac

苹果mac Windows软件 笔记软件 Notability

百舸争流,奋楫笃行 国产数据库排行榜前10改写,AntDB数据库将继续前行

亚信AntDB数据库

AntDB数据库

“创新深化 数实融合”,AntDB数据库邀您参与“2023世界数字经济大会暨第十三届智慧城市与智能经济博览会”

亚信AntDB数据库

AntDB数据库

实用的命令行终端增强软件:Tabby | 京东云技术团队

京东科技开发者

ios windows 终端工具 Tabby

TiDB x 汉口银行丨分布式数据库应用实践

编程猫

机器狗装上 ChatGPT 大脑当导游;AI 正在学习「超人的说服力」丨 RTE 开发者日报 Vol.73

声网

LP/DAPP代币合约流动性质押挖矿分红系统开发(逻辑及方案)丨LP/DAPP流动性挖矿源码

V\TG【ch3nguang】

浅析SpringBoot加载配置的6种方式 | 京东云技术团队

京东科技开发者

配置文件 spring-boot 企业号10月PK榜

Mac电脑UI/UX设计必备:Sketch 98.3中文激活版

胖墩儿不胖y

UI Mac软件 ui设计 矢量设计工具

数字先锋| 出版行业如何破圈出彩?“一朵云”让文化铸魂与数智发展并行!

天翼云开发者社区

云计算

Nginx工作原理

天翼云开发者社区

nginx 服务器

一种动态实现核隔离的方法

天翼云开发者社区

云计算 运维

亚信科技AntDB数据库荣膺“2023世界计算大会专题展优秀成果”

亚信AntDB数据库

AntDB数据库

数据泄露定义以及危害简单讲解

行云管家

大数据 数据安全 数据泄露 数据运维 数据安全运维

国家数据局正式揭牌,隐私计算助力数据要素流通共享

郑州埃文科技

隐私计算

科技快讯丨超级“码”力!浪潮海岳inBuilder精彩亮相开放原子1024程序员节

inBuilder低代码平台

1024程序员节

数据库性能优化必读,AntDB-M全局统计信息

亚信AntDB数据库

AntDB数据库

实时语音视频通话SDK如何实现听声辨位_语言 & 开发_冼牛_InfoQ精选文章