在线音乐领域一直是各大资本巨头投资的热点,从抢占版权到现在的“云上之争”, 主流平台的战火从版权资源转向创新领域扩延。而如今,在线K歌正在成为抢占“云音乐”市场的重要砝码。

据统计,截至2019年,在线K歌用户规模已经接近3亿,网民渗透率达到了67.9%;在线音乐领域累计用户分布中,在线K歌用户比重逐渐增长。因为疫情的原因让人们积攒许久的线下消费需求迁移到了线上,为本就火热的在线K歌行业又添上了一把分量十足的干柴。

以往的几年中,在线K歌领域一直是唱吧与全民K歌的轮番较量的地盘。而这两年,它们将面临全新的挑战者。在阿里巴巴推出“唱鸭”和“鲸鸣”两款在线K歌App之后,网易云音乐终于也坐不住了,推出一款名为“音街”的全新App,同时其他互联网公司背靠雄厚资本的“音遇”、“咪哒”也相序推出在线 K 歌场景。资本的看重以及玩法的多样化,都加快了在线K歌行业的发展。

当下主流在线 K 歌场景技术方案

在介绍 anyRTC 在线实时 K 歌解决方案前,我们先来回顾下目前在线 K 歌行业常见的在线合唱玩法,以及真正的“实时合唱”面临了哪些技术难点?

体验过在线 K 歌的用户都了解,目前几乎所有的在线 K 歌都是通过录制合唱串行合唱两种方式实现,以主唱A、合唱B、听众C为例进行讲述:

录制合唱: 主唱 A 根据伴奏演唱-》完成后点击上传-》合唱B选择带有 A 歌声的伴奏再演唱-》录制完成后间接完成合唱-》完成后点击上传-》观众C进行在线点播合成的演唱。

串行合唱: 主唱 A 发起合唱(本地伴音混音) -》主唱 A 的歌声+伴奏发给合唱 B -》合唱 B 加入一起唱。

串行合唱 的技术架构在用户体验上有以下缺陷:

  • 对于主唱来说,听到合唱返回的歌声延迟很大。所以在主唱一般不拉取合唱者的音频流,主唱无法听到副唱的歌声,这样导致主唱不清楚合唱者歌唱的效果,在线 K 歌氛围因此很薄弱。
  • 难以支持三人及以上的合唱。多人实时合唱在串行方案中实现起来十分复杂,很难真正落地。
  • 听众听演唱的歌曲的时候也会觉得合唱者没有跟对节拍,从而对点评结果产生影响。

因此,anyRTC 推出了"真实时"在线多人合唱方案。

anyRTC 实时合唱解决方案

基于上述技术难题,anyRTC 推出一体化实时合唱解决方案,以超低延时、多端同步、多人合唱、出色音质等功能优势直击用户体验痛点。

anyRTC 实时合唱方案架构大致如下:

合唱各端在连麦的基础上同时播放歌曲伴奏,然后上麦进行合唱,双人模式下主唱和合唱可以互相听到对方声音,多人模式下合唱者之间都能听到彼此声音,几乎感受不到延迟,达到了真正意义上的实时合唱。

  • 主唱端与各个合唱端同时从本地获取 BGM,随着伴奏同时开启演唱
  • 主播端发送两路音频流,本地的 BGM 和 Mic
  • 合唱端不订阅主唱端的 BGM 音频流,只订阅其他端的 Mic 音频流
  • 观众订阅所有的音频流便可享受到演唱者们“0延时”的合唱效果

在实时合唱方案中,anyRTC 主要解决三个问题高音质、超低延迟同步伴奏人数限制

在实时方案的实现中,anyRTC 以保障音质为基础,对“采集、前处理、编码、传输、解码、渲染”全链路进行了延迟优化,将延迟降到了科学合理的 66ms 超低感官延迟。

高音质

anyRTC 通过业内领先的语音引擎,实现从低比特率的窄带语音扩展到高质量的立体声音乐,并支持从8kHz(窄带)到48kHz(全频带)采样,最高支持 196K 的码率。领先自研的 3A算法(回声消除 AEC、自动噪声抑制 ANS、自动增益控制 AGC)则有效解决了anyRTC 在通信中可能出现的的回声、啸叫、噪音等问题。进一步保证了出色的音质。

anyRTC 内置实时美声功能。在原有低延时、高音质的基础上,针对歌唱场景采用链路式多模组联合算法框架,对人声的音调、音色、韵律、节奏、空间、氛围甚至艺术类型等不同维度进行调整,使歌声更动听、更契合伴奏,同时又能保留歌手声音原有的特点。

超低延迟

设备端上的延时包括采集端的采集、前处理、编码,播放端的接收、解码、渲染过程产生的延时,以及两端在编码后和解码前产生端网络延时。anyRTC 在编解码算法上进行调优,层层优化各个环节里延迟的因素。

网络的延迟也是实时合唱中必须要关注的环节,终端用户网络复杂、运营商参差不齐、容易产生网络抖动。anyRTC 全球部署服务节点,通过就近接入策略,让使用者就近接入质量最好的数据节点;加持拥塞控制算法、Qos/QoE最优化策略、多人通信流控算法等有效减少通信中的卡顿延迟问题。

同步伴奏

合唱同步: 精确服务时间,主唱和合唱约定好精确的唱歌时间点进行歌曲播放。

观众同步: 为了保证歌词在多端的同步及观看与合唱的同步,anyRTC 在方案上采用了SEI进行歌词同步,歌词信息和音视频信息在同一个媒体通道传输,这样可以保障歌词和音视频同步。歌词进度由主唱端发送,观众端接收到时间戳后,再根据时间戳把关键歌词行高亮。达到歌词同步展示的效果。

人数限制

传统的在线 K 歌最多人数为2人,人数越多,不可控的因素越多,导致体验效果极差。anyRTC 实时合唱解决方案,针对多人实时合唱落地难题,合唱用户采用本地伴音,强制时间差对其,多人实时合唱跟2人合唱的效果一样,目前 anyRTC 支持同时上麦人数最大为 50 人,观看用户不限制。

实时合唱解决方案支持多人实时合唱,能够在高音质的前提下,进行超低延迟通信,端到端延迟低至 66 ms,精准同步各端之间的伴奏与人声,不受合唱人数的限制,接入成本低且扩展容易。

结语

anyRTC 实时合唱作解决方案助力在线 KTV 玩出更多花样,让产品在众多产品中出类拔萃,提升用户活跃度与留存率,协助产品探索出更多商业价值,提升营收空间。未来,anyRTC 也将持续深耕技术,提供完善的解决方案,以技术创新助力客户增质提效。

anyRTC 重磅推出在线实时 K 歌解决方案的更多相关文章

  1. 在香港用什么软件可以唱歌?香港K歌app推荐

    KTV的源头来自于日本,KTV是Karaok TV的缩写.随着互联网时代越来越发达,手机K歌成了很多人会选择的方式,那么在香港有什么好用的K歌软件呢?这里qt6小编给大家推荐几款好用的,让你足不出户即 ...

  2. OSS上传图片无法在线预览的解决方案

    OSS上传图片无法在线预览的解决方案 最近在做的项目涉及到商品详情,由于前端用的flutter框架并且该详情为富文本,dart语言关于富文本的组件不是非常友好,当富文本中的图片无法在浏览器中直接预览的 ...

  3. 犀利的background-clip:text,实现K歌字幕效果

    今天学到了一个新的CSS3属性,更准确的说是属性值,那就是background-clip:text.利用此属性值可以制作出很神奇的效果.可惜只有chrome支持,不过今天可以先来玩玩这个属性. 先来介 ...

  4. TogetherJS – 酷!在网站中添加在线实时协作功能

    TogetherJS是一个免费.开源的 JavaScript 库,来自 Mozilla 实验室,可以实现基于 Web 的在线协作功能.把 TogetherJS 添加到您的网站中,您的用户可以在实时的互 ...

  5. 玩一玩nodejs--一个简单的在线实时填表应用

    学习nodejs三天,入了个门,感觉他和jsp.php还是存在较大的差别.本文首先复习这些天学的一些知识点,然后谈一下如何一步一步到做一个在线实时填表的小应用,进一步巩固一下这些个知识点.这里先简单介 ...

  6. python爬取全名k歌

    python3 爬取全名k歌 代码: import re import requests import ssl ssl._create_default_https_context=ssl._creat ...

  7. 【收藏】轻松导出全民K歌里任何人录制的短视频(MV)、歌曲的方法

    有一次想把她在全民K歌里唱过的所有歌下载到电脑上,然后合成一个视频.但不知道怎么导出全民K歌里的歌曲,经过各种百度Google终于找到了一个用起来很简单的工具.不仅可以下载保存任何人录制的歌曲,还可以 ...

  8. python3爬取全民K歌

    Python3爬取全民k歌 环境 python3.5 + requests 1.通过歌曲主页链接爬取 首先打开歌曲主页,打开开发者工具(F12). 选择Network,点击播放,会发现有一个请求返回的 ...

  9. 数据结构与算法实验题 9.1 K 歌 DFS+剪枝

    数据结构与算法实验题 K 歌 ★实验任务 3* n 个人(标号1~ 3 * n )分成 n 组 K 歌.有 m 个 3 人组合,每个组合都对应一个分数,你能算出最大能够得到的总分数么? ★数据输入 输 ...

随机推荐

  1. WPF中选择文件和选择文件夹的方法

    最近从winform转WPF,遇到了各种各样的问题.然而网上的关于WPF的资料少之又少,甚至连基本的文件选择操作,百度搜索的首页都没有一个比较好的方法.所以,踩了几个坑之后,我把我得到的方法分享给大家 ...

  2. 可编程网络DataPath 及XDP

    目录 可编程网络DataPath XDP 的基本架构 XDP 的软件要求 XDP 的硬件要求 XDP 的工作流程及使用 XDP 的工作模式 XDP 的工作流程 Hello World XDP 的应用 ...

  3. npm ERR! Unexpected end of JSON input while parsing near '...'解决方法

    npm install时出现npm err! Unexpected end of JSON input while parsing near'...'错误 输入  npm cache clean -- ...

  4. 【转】JAVA四种引用(强引用,弱引用,软引用,虚引用)

    转自:http://www.cnblogs.com/gudi/p/6403953.html 1.强引用(StrongReference) 强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器 ...

  5. 在使用XStream时没有processAnnotations方法

    https://stackoverflow.com/questions/28770909/xstream-processannotations 我遇到这个问题的原因是xstream.jar的版本问题 ...

  6. SpringCloud的Ribbon自定义负载均衡算法

    1.Ribbon默认使用RoundRobinRule策略轮询选择server 策略名 策略声明 策略描述 实现说明 BestAvailableRule public class BestAvailab ...

  7. hdu 1145(Sticks) DFS剪枝

    Sticks Problem Description George took sticks of the same length and cut them randomly until all par ...

  8. 记两道最近做的pwn题(ciscn_2019)

    这两题为什么要记录呢,一个是我发现网上很多教程没写清楚(也可能是我太菜了),二是细节点很多,不同的大佬方式不太一样,有很多细节需要注意 ciscn_2019_es_2 这题是栈迁移的题,先上exp 1 ...

  9. s3cmd的使用

    目录 1. 安装s3cmd 2. 配置s3cmd 3. 使用s3cmd [前言] s3cmd 是用于创建S3桶,上传,检索和管理数据到对象存储命令行实用程序. 本文将指导linux下安装s3cmd程序 ...

  10. GO系列-ioutil包

    ioutil包提供给外部使用的一共有1个变量,7个方法. // Discard 是一个 io.Writer 接口,调用它的 Write 方法将不做任何事情 // 并且始终成功返回. var Disca ...