声网推出首个完整实时合唱解决方案 即将上线“咪哒”全国线下K歌房
4月20日,声网Agora宣布对实时合唱技术方案全面升级,帮助国内知名迷你KTV品牌“咪哒”实现国内首个支持多终端、多人合唱、高音质的完整实时合唱解决方案的落地,结束了国内K歌行业长期探索“实时合唱”场景,却一直未能上线的现状。
在介绍声网完整的实时合唱解决方案前,我们先来回顾下目前在线K歌行业常见的两种在线合唱玩法,以及真正的“实时合唱”面临了哪些技术难点?
体验过在线KTV合唱玩法的用户都了解,目前几乎所有的在线合唱都是通过录制合唱与单通合唱两种方式实现,以主唱A、用户B为例:
录制合唱:主唱A根据伴奏演唱——完成后点击上传——用户B选择带有A歌声的伴奏再演唱——录制完成后间接完成合唱。
单通合唱:主唱A发起合唱——伴奏发给主唱A——主唱A的歌声+伴奏发给用户B——用户B加入一起唱。
第二种方案,看似是实时的,其实从体验来讲并非是合唱,其原因在于:用户B与听众可以听到主唱A的歌声,而主唱A听不到B的歌声。此外,主唱A出现问题,用户B就无法继续,这种方案还不支持两人以上合唱。
而我们想要的真正的“实时合唱”应该就像是将线下K歌房的合唱情景照搬到线上一样,双方同时听到伴奏后一起合唱,彼此都能实时听到对方的声音。
实时合唱面临合唱同步、高音质两大技术难点
早在2018年,声网就曾提出实时合唱的技术设想,但由于整体网络基础设施不够成熟等原因一直未能真正集成上线,此后声网针对实时合唱场景进行了长期的技术打磨,并与“咪哒”以及国内多个在线K歌平台、智能电视厂商反复集成测试,最终推出了高成熟度、超低延时、可落地的、完整的实时合唱解决方案。声网在与客户共同打磨的过程中总结了该场景的两个核心技术难点:
01 合唱同步
这里的同步指的是两个用户的歌声与伴奏三者之间的同步。我们先假设唱歌的两位用户都是专业级的,踩不准节奏的问题完全不存在。如上述场景描述,由于伴奏是同时发送给两个用户,那么关键就在于两者的歌声是否能同步。影响合唱同步的主要因素就是延时。
不考虑伴奏的情况下,假设用户A和B之间的端到端延时为100ms。从声音传输流程上来说,会出现以下这种情况:
A先唱,B听到A的歌声。此时产生100ms延时;
B在听到A的歌声后开始加入合唱,歌声传到A端。此时又产生100ms延时;那么 A听到B的歌声永远延时200ms;
假设在线KTV中200-300ms唱一个字,那么用户在听感上会至少慢半个字,会有错位感。
02 实时合唱的高音质
唱歌的人都有一个共同的心理需求,就是希望别人夸自己唱得好听。音质在合唱场景下就显得尤为重要。而影响实时合唱音质的因素主要包括:音频采样率、码率、延时。
采样率:是每秒从连续信号中提取并组成离散信号的采样个数。采样率越高,音频听起来越接近真实声音。
码率:它是指经过编码(压缩)后的音频数据每秒钟传输所表示的数据量(比特)。码率越高,意味着每个采样的信息量就越大,对这个采样的描述就越精确,音质越好。
假设网络状态稳定不变,那么采样率越高、码率越高,音质就越好,但是相应单个采样信息量就越大,传输时间可能会相对更长。也就是说,高音质也可能会影响延时。
此外,实时合唱还会面临音频传输过程中产生的延时、与手机端、电视端、KTV端等一系列硬件设备的适配、兼容性的问题,多重技术难点让很多想推出实时合唱玩法的K歌平台、社交平台、电视厂商等很是“头疼”。
声网发布行业首个完整的实时合唱解决方案
针对这些技术难点,声网推出了行业首个完整的实时合唱解决方案,不仅有效解决合唱超低延时、伴奏同步对齐、合唱人数灵活性、高音质保障等一系列问题,声网还提供50ms超低延时耳返、歌词同步、歌唱美声、音浪频谱等一系列功能,形成了一套业内高完整度的实时合唱解决方案。
声网实时合唱方案架构大致如下:
主唱端与各个合唱端同时从本地获取BGM,随着伴奏同时开启演唱;
通过SD-RTN传输和调度,主唱与合唱们可以实时听到其他人的歌声,达成合唱。同时观众可以享受到演唱者们“0延时”的合唱效果。
图:声网实时合唱技术方案架构
在声网的实时合唱方案中,围绕超低延时处理、高音质体验、伴奏精准同步、合唱人数灵活等形成了六个维度的核心优势。
实现端到端64ms超低延时
在声网实时合唱解决方案中,主唱和合唱端同时听到伴奏,同时演唱,各方可以实时听到其他演唱者的声音,消除了接唱前产生的延时。合唱延时要解决的问题就是降低各自歌声传输到对方的这段端到端延时了。
针对音频在传输过程中的延时问题,声网在技术打磨的过程中发现在实时合唱场景中延时并不是越低越好,一味的追求更低的延时,可能会“牺牲”音质等其他环节的质量。通过我们长期实践来看,实时合唱的延时达到50ms是完美值,但想要实现50ms需要攻克这几个技术难点:
01 音频在采集端、播放端的延时
设备端上的延时包括采集端的采集、前处理、编码,播放端的接收、解码、后处理过程产生的延时,以及两端在编码后和解码前产生端网络延时。
端上的延时主要与硬件性能、采用的编解码算法、音视频数据量相关,设备端上的延时可达到 30~200ms,甚至更高。
02 网络传输的延时
在实时合唱的场景中,要解决网络不佳、网络抖动,需要在采集设备端、服务器、播放端增设缓冲策略。一旦触发缓冲策略就会产生延时。如果卡顿情况多,延时会慢慢积累。要解决卡顿、积累延时,就需要优化整个网络状况。
声网社交泛娱乐产品负责人王奇表示,“50ms端到端延时是我们一直在追求的目标,而目前声网的实时合唱解决方案已经可以实现64ms端到端延时,背后的核心是声网对音频在设备端的延时、弱网传输、音频引擎消耗的延时等一系列技术难点的优化,在实时合唱场景中,64ms延时已经无限接近50ms的最佳理想状态,在这样的延时情况下,用户的实时合唱体验几乎从线下‘无感知’的搬到线上,场景体验实现了高可用性,让用户真正能实现高稳定性、高音质、超低延时的实时合唱体验。”
高音质歌唱体验+实时美声
在实时合唱中,声网的解决方案还能提供高音质的歌唱体验。声网通过业内领先的语音引擎,实现从低比特率的窄带语音扩展到高质量的立体声音乐,并支持从8kHz(窄带)到 48kHz (全频带)采样,声网还拥有业界领先的 3A 算法,在不损伤音质的情况下有效消除各类噪声。
此外,声网Agora 首创了实时美声功能。在原有低延时、高音质的基础上,针对歌唱场景采用链路式多模组联合算法框架,对人声的音调、音色、韵律、节奏、空间、氛围甚至艺术类型等不同维度进行调整,使歌声更动听、更契合伴奏,同时又能保留歌手声音原有的特点。
支持多人实时合唱
在单通合唱的方案中只能支持两个人,而声网的实时合唱解决方案中每一个合唱端相互独立,互不影响,合唱人数可支持两人以上。同时若是在合唱过程中其中一个端出现问题,也不会影响到其他合唱端和观众端的体验与效果。
伴奏精准同步
为了实现最好实时合唱的效果,让各端可以在各自BGM的伴奏下一同歌唱。我们在主唱发起播放BGM请求后,会让主播端等待一个与合唱端之间的延时,以此实现各方伴奏的精准同步。
50ms超低延时耳返优化
不管是直播唱歌还是在线K歌,低延时的耳返功能对于唱歌体验都有着很关键的作用,可帮助用户通过耳机实时听到麦克风采集到的声音和播放的伴奏,来判断自己的声音是不是走音,这个对延时要求特别高。
对此,Agora SDK提供统一接口的低延时K歌耳返功能,通过与手机厂商的深度技术合作,可为K歌、直播类App提供适配不同手机品牌、不同手机机型的耳返应用,我们将传统耳返100-300ms的延时降低至50ms以内,结合实时合唱整体解决方案,实现超低延时、超低噪声、极致音效的耳返体验,全面提升K歌的体验。
歌词同步+音浪频谱
歌词同步可以实现音频与歌词在播放端同步展示,并且音频与歌词逐字对齐,企业开发者无需在进行额外同步处理。而音浪频谱可以帮助歌唱者及时调整自己的音调,系统也能根据音浪频谱的完成度对歌唱者进行打分。专业的在线K歌应用自身已经具备成熟的歌词同步、音浪频谱等功能,但对于想在已有应用中加入在线KTV功能的创业公司或者开发者而言,声网的实时合唱解决方案自带歌词同步、音浪频谱等功能,将帮助开发者节省开发成本、保证体验。
实时合唱覆盖线上线下 为企业带来多重价值
在线社交实时合唱,**用户、营收双增长:**1、用户拉新、提升活跃度与留存:实时合唱作为最新的在线KTV玩法,无疑可以作为产品新玩法卖点,带来更多想要体验的新用户。同时,实时合唱的创新玩法解决了传统录制合唱、单通道合唱的痛点,也会激发很多喜欢合唱的老用户积极参与,提升用户活跃度与留存率。2、带来更多营收空间:在线K歌与社交平台也可以基于实时合唱的功能,探索出更多商业价值,提升营收空间。
智能电视K歌合唱,娱乐互动升级:经过与电视厂商的技术打磨,声网的实时合唱解决方案还支持电视端,用户可在家中通过智能电视大屏与好友进行线上的实时合唱。对于电视厂商而言,实时合唱的加入也让智能电视的娱乐互动玩法更丰富。
线下KTV异地合唱,打破空间限制:实时合唱还可以助力线下传统KTV或商场迷你KTV的互通联动,让多地的好友可以在线下不同地点一起K歌合唱,提升消费者K歌娱乐体验,推动线下KTV娱乐创新发展。
“咪哒”技术负责人表示:可落地的实时合唱技术方案此前在行业一直处于空白,声网凭借深厚的技术底蕴以及对创新场景的洞察力,与咪哒一起打磨出了行业首个完整的实时合唱解决方案,低失真,超低延时的技术保障为用户带来最佳的实时音频体验,咪哒在全国线下的迷你KTV中即将率先上线实时合唱的新玩法,实时合唱未来将给线上、线下K歌行业带来新的活力。
Demo开源
目前声网实时合唱iOS端Demo已率先上线,如果您想进一步体验声网实时合唱Demo,点击「阅读原文」留下您的信息,我们将提供实时合唱Demo的下载地址。
在本文中我们分析了实时合唱面临的技术难点,并介绍了声网实时合唱解决方案的架构以及核心技术优势,如果您想进一步了解声网是如何优化音频传输过程中的延时、编解码、丢包、抖动等一系列技术难点,可点击下方的相关阅读,查阅我们此前发布的音频技术系列文章。
相关阅读
详解低延时高音质:丢包、抖动与 last mile 优化那些事儿
声网推出首个完整实时合唱解决方案 即将上线“咪哒”全国线下K歌房的更多相关文章
- anyRTC 重磅推出在线实时 K 歌解决方案
在线音乐领域一直是各大资本巨头投资的热点,从抢占版权到现在的"云上之争", 主流平台的战火从版权资源转向创新领域扩延.而如今,在线K歌正在成为抢占"云音乐"市场 ...
- 【征文活动】为自己发“声” —— 声网RTC征文大赛在园子里征稿
2020年8月20日,声网Agora入驻园子的新楼盘--博客园品牌专区.9月,我们与声网Agora再度合作,「为自己发"声"- RTC 征文大赛」在园子里征稿. RTC(Real- ...
- BAT线下战争:巨额投资或培养出自己最大对手(包括美团、58、饿了么在内的公司都在计划推出自己的支付工具和金融产品,腾讯只做2不做O)
BAT线下战争:巨额投资或培养出自己最大对手 2015年10月12日09:49 <财经>杂志 我有话说(18人参与) 收藏本文 BAT大举投资线下公司,看似咄咄逼人 ...
- 完整的定时任务解决方案Spring集成+定时任务本身管理+DB持久化+集群
完整的定时任务解决方案Spring集成+定时任务本身管理+DB持久化+集群 maven依赖 <dependency> <groupId>org.quartz-scheduler ...
- 基于Flink和规则引擎的实时风控解决方案
案例与解决方案汇总页:阿里云实时计算产品案例&解决方案汇总 对一个互联网产品来说,典型的风控场景包括:注册风控.登陆风控.交易风控.活动风控等,而风控的最佳效果是防患于未然,所以事前事中和事后 ...
- 红领的短板:线下“O”瓶颈_财经频道_一财网
红领的短板:线下"O"瓶颈_财经频道_一财网 红领的短板:线下"O"瓶颈
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的运行状况? 有什么办法可以监控到JVM的实时运行状态?
https://alibaba.github.io/arthas/ Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决 ...
- SPA应用部署时首屏启动慢问题解决方案
SPA应用部署时首屏启动慢问题解决方案 使用vuejs开发的单页应用,打包部署上线后,发现首屏启动时间达到了惊人的10s左右,于是开始优化,目前使用到的总结如下: 巧用webpack插件 1.抽取cs ...
- 电脑上不了网,但是能登录QQ 问题解决方案
电脑上不了网,但是能登录QQ 问题解决方案 问题现象 个人电脑连上Wifi,打不开百度等网页,但是能登录QQ. 解决方案 1.打开命令提示对话框(Win+R) 2.输入ipconfig/display ...
- C#序列化json属性名首字母变成小写的解决方案
原文:C#序列化json属性名首字母变成小写的解决方案 //接口返回自动转小写,容易造成前后端不一致,获取不到数据,切换成转驼峰(首字母大写)如Code/Result //在ConfigureServ ...
随机推荐
- PostScript语言教程(七、条件语句)
POSTSCRIPT语言中有许多操作符用于制定程序内流的控制.我们在前一章使用了一个repeat运算.所有的控制操作符都使用了之前简要提到的对象类型,即函数,用于我们调用. 7.1.函数 函数(既过程 ...
- python菜鸟学习: 3.浅copy使用场景
# -*- coding: utf-8 -*-import copy# 浅copy# 使用场景,比如A,B夫妻共有一个银行账户,存取马宁的数据username = ["name", ...
- win10下 pytorch 跑模型 gpu利用率低
查阅资料后发现 Dataloader中的num_workers参数(线程数)设置为0,该为4后,nvidia-smi查看GPU占用率变为高(不要用任务管理器查看)
- C# WPF 自学 MVVM简单介绍
一.MVVM介绍 MVVM是Model-View-ViewModel(模型-视图-视图模型)的缩写形式 1.View就是用xaml实现的界面,负责与用户交互,接收用户输入,把数据展现给用户. 2.Vi ...
- 【摘】python和它的装饰器
python和它的装饰器 即使你没听过装饰器,你也一定知道@staticmethod 作为函数的装饰器,你可以这样写 def mydecorator(function): def wrapped(*a ...
- Core_DataCollect BacNet说明
/* * BACnet_AI 0 模拟输入.定义一个标准对象,其属性表示模拟输入的外部可见特征. BACnet_AO 1 模拟输出.定义一个标准对象,其属性表示模拟输出的外部可见特征. BACnet_ ...
- XML_DTD_20200415
<!-- xml的注释写法 --> 格式良好的xml语言必须具备的几个条件 1.必须有xml声明语句,声明版本号与编码字符集 2.必须有且仅有一个根元素 3.标签大小写敏感 4.属性值 ...
- php json_encode使用中文不转码
PHP转JSON,中文会被转码成unicode,使用常量JSON_UNESCAPED_UNICODE可以使中文原样输入 echo json_encode("中文"); //Outp ...
- JAVA 学习打卡 day1
2022-04-21 21:03:26 1.java程序的注释 (1)单行注释,就是在注释内容前面加双斜线(//) (2)多行注释,就是在注释内容前面以单斜线加一个星形标记(/*)开头,并在注释内容末 ...
- linux 获取文件名
https://blog.csdn.net/liuyuedechuchu/article/details/123778605