单声道虚拟成立体声

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

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

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

即构ZEGO把单声道虚拟成立体声,获得沉浸式听声辩位的效果

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

当互动直播遇到立体声

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

即构ZEGO:采用立体声的手机做回声消除过分复杂

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

1)远端的左右两个麦克风分别采集左右声道的语音数据;

2)近端的左右两个扬声器分别播放左右声道的语音数据;

3)近端左边的扬声器发出的声音经过回声馈路会被近端左右的两个麦克风采集进去;

4)近端右边的扬声器和#3同理;

5)近端左边的麦克风采集进来的声音信号包括了左右两个扬声器产生的回声;

6)近端右边的麦克风和#5同理;

7)对左边麦克风采集的声音进行回声消除的时候,除了参考远端左声道声音信号消除左边扬声器产生的回声,还要参考远端右声道声音信号消除右边扬声器产生的回声;

8)对右边的麦克风采集的声音进行回声消除和#7同理。

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

结语

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

<本篇完>

实时语音视频通话SDK如何实现立体声(二)相关推荐

  1. 腾讯实时音视频通话sdk集成----小程序版本

    参考文章:实时音视频 小程序-无 UI 集成方案-文档中心-腾讯云 1.配置域名添加 2.npm集成 项目中引用trtc-wx包 在项目脚本中直接引入模块此处可引入静态文件构建npm import T ...

  2. 新增微信小程序和WebRTC连麦直播等多项能力,即构实时音视频SDK再升级!

    经过2018年小半年的闭关练功,即构ZEGO团队铸造了不少黑科技.本文将为你带来即构ZEGO实时语音视频SDK近半年新增能力和功能优化的最新进展. 更懂应用场景的语音视频云 作为全球领先的实时语音视频 ...

  3. 新增微信小程序、WebRTC连麦直播多项能力,即构实时音视频SDK再升级

    经过2018年小半年的闭关练功,即构ZEGO团队铸造了不少黑科技.本文将为你带来即构ZEGO实时语音视频SDK近半年新增能力和功能优化的最新进展. 更懂应用场景的语音视频云 作为全球领先的实时语音视频 ...

  4. html5 视频语音对讲,一种基于WebRTC的多人语音视频通话方法及系统与流程

    本发明涉及视频通话领域,特别涉及一种基于WebRTC的多人语音视频通话方法及系统. 背景技术: 随着互联网技术和通信技术的快速发展,人们的交流方式与交流内容得到了极大的丰富和发展.在节奏越来越快的信息 ...

  5. Unity 讯飞实时语音转写(二)—— 接收转写结果

    目录 Unity 讯飞实时语音转写(一)-- 使用WebSocket连接讯飞语音服务器 Unity 讯飞实时语音转写(二)-- 接收转写结果 Unity 讯飞实时语音转写(三)-- 分析转写结果 正文 ...

  6. ios开发 多人语音聊天_iOS语音通话功能实现流程(实时语音通话二)

    上一篇我们讲述了iOS语音通话SDK集成指引,今天就来看下iOS下实时语音通话功能实现的流程.实时语音场景的典型之一是同一会话中的成员进行实时语音对话. 以 2 人间的实时语音为例,主要流程如下: 请 ...

  7. iOS语音通话功能实现流程(实时语音通话二)

    上一篇我们讲述了iOS语音通话SDK集成指引,今天就来看下iOS下实时语音通话功能实现的流程.实时语音场景的典型之一是同一会话中的成员进行实时语音对话. 以 2 人间的实时语音为例,主要流程如下: 请 ...

  8. iOS语音通话SDK集成指引(实时语音通话一)

    语音通话是通过语音并借助传输媒介的沟通方式.本系列文章将会介绍如何从零开始用即构科技音视频SDK实现双人至百万人语音通话.第一篇讲述iOS语音通话SDK集成指引. 1.准备环境 请确保开发环境满足以下 ...

  9. 详解比较好的音视频通话SDK开发包的技术要点

    详解好的音视频通话SDK开发包的技术要点 云智真是一套跨平台的音视频解决方案,其技术领先性.成熟度.稳定性.可扩展性以及安全性等各方面均有优异的表现,同时支持跨平台通信,Windows.Web.And ...

  10. 腾讯会议突围背后:端到端实时语音技术是如何保障交流通畅的?

    腾讯会议去年推出,疫情期间两个月急速扩容,日活跃账户数已超过1000万,成为了当前中国最多人使用的视频会议应用.腾讯会议突围背后,是如何通过端到端实时语音技术保障交流通畅的?本文是腾讯多媒体实验室音频 ...

最新文章

  1. 55 岁中国芯片首富,捐出 200 亿:建一所理工大学
  2. centos安装cowboy过程
  3. 为什么要学习源码?学习源码对我们有用吗?
  4. 配置swagger2_Springboot(三十五)启用Swagger2
  5. 登录屏幕上不要显示上次登录的用户名 图文教程[server 2003/2008]
  6. 一名合格的电子工程师,不能逃避的“梗”
  7. 与狼共舞·美女与野兽
  8. linux块设备驱动中断程序,linux设备驱动归纳总结(六):1.中断的实现
  9. 为何加入了AddType就无法启动Apache
  10. 关于 SAP 访问关键字的说明
  11. SpringBoot+MyBatis启动报错java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
  12. 无法通过百度联盟申请的常见原因
  13. 电阻电容电感PCB封装真实尺寸大小
  14. MIUI刷Android原生,小米手机怎么刷安卓原生系统
  15. 域名交易的信息差,原来还可以这样赚钱
  16. animite cc html5项目,Animate CC HTML5/Canvas使用actionscript控制嵌套的MovieClip時間軸
  17. 雷顿学院与与河北各地高校签署战略合作伙伴关系
  18. 压力传感器行业调研报告 - 市场现状分析与发展前景预测
  19. Win10升级Win11必备的5款免费软件
  20. centos7解压.tar.bz2,.tar.gz,.tar.xz文件

热门文章

  1. 格式为[区号-座机号-分机号]的座机号校验正则
  2. C++——队列应用——显示二项式系数
  3. android解析json数据格式,Android编程解析Json格式数据的方法
  4. 类似京东商城客户端应用源码
  5. 设计模式学习之工厂方法模式
  6. 深度学习之数据标准化方法综述
  7. 通俗易懂奈奎斯特定理和香农定理
  8. python中断输入_在 Python 中接管键盘中断信号的实现方法
  9. 编辑器,编译器与集成开发环境(IDE)
  10. 数学基础知识(公式)不用学太深,了解基本公式即可,遇到问题再查吧。