0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Smule采用Oboe音频库提升录制率

谷歌开发者 ? 来源:Android 开发者 ? 作者:Android ? 2022-08-15 11:18 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者 / Smule 工程团队: David Gayle、Chris Manchester、Mark Gills、Trayko Traykov、Randal Leistikow、Mariya Ivanova。

Smule 采用 Oboe 音频库提升录制率

作为目前下载量排名前列的唱歌类应用,Smule Inc. 一直致力于投入大量资源来提升其应用的 Android 体验,以提高整体音频质量。具体而言就是减少延迟时间,让歌手在表演时能够通过耳机听到自己的声音。擅长音频和视频技术的团队在 2021 年很大一部分时间都忙于必需的提升工作,将逾千万 Android 用户使用的 Smule 应用从使用 OpenSL 音频 API 转换为使用 Oboe 音频库,从而使录制完成率提高了约 10% 以上。

简介

Smule Inc. 是卡拉 OK 应用的潮流企业,旗下的应用每天帮助数百万用户演唱最爱的歌曲,并分享表演。Smule 应用超越了传统的卡拉 OK,专注于共同创作,为用户创造了独一无二的机会,可以与朋友、平台上的其他歌手及其最喜欢的音乐人分享音乐和合作。而音频质量至关重要,Smule 团队在 2020 年看到了在 Android 平台提升体验的潜力。

Smule 使用的旧版 OpenSL 虽然支持全球市场的各种设备,但不太适合利用新设备的高速硬件。Smule 开发团队认为,升级音频系统是必要且合乎逻辑的改进。

Oboe 发布策略

Smule 曾面对两种可行的改进途径,第一种是针对 AAudio 进行改进,这是 Android O 中引入的高性能 Android C 音频 API,专为需要低延迟的应用而设计。第二种是采用在内部同时封装了 AAudio 和 OpenSL 的 Oboe。经过细致评估,Smule 开发团队选择了 Oboe,此方案具有易用的代码库、广泛的设备兼容性和强大的社区支持,可最大限度减少延迟时间,并充分利用可用的原生音频。

改用 Oboe 意味着在应用架构和技术上将发生重大的变化。因此,Smule 在更新过程中采取了谨慎的做法,有计划地逐步发布,首先面向少数的特定设备型号以验证质量;然后逐渐地面向更多设备 (将少数使用 Oboe 时出现问题的设备恢复到 OpenSL)。这种循序渐进、有条不紊的方法可以最大限度地降低风险,并让开发团队能够在出现设备特定问题时及时处理。

改善音频质量体验

Smule 改用 Oboe 来帮助改善应用体验。他们希望大幅降低音频播放崩溃率,消除录制时的回响和噼啪声等问题,以及减少音频延迟。在之前的推文《关于 Android 音频延迟的最新动态》中曾介绍过,二十种最热门的设备使用 Oboe 后,平均延迟时间从 2017 年的 109 毫秒减少到现在的 39 毫秒。109 毫秒的监听延迟会听到干扰现场演唱的明显回响,而延迟 39 毫秒则低于实时应用可接受的阈值。当下高端设备的延迟时间都在 22 毫秒以内,这种一致性是一大优势。

Smule 使用 Oboe 后,或许是因为延迟时间更短,歌手借助 Smule 首屈一指的音频效果演唱时能通过耳机听到自己的声音,同时又没有回响,录制完成率因此得以提升。

利用 Oboe 专用的高效协作式 GitHub 门户,Google 团队发挥了重要作用,不但帮助 Smule 实现 Oboe 集成,还为其提供重要的数据洞察和支持。两家团队通力合作,完成了迄今最大的 Oboe 部署,数百万活跃用户受益匪浅。Smule 团队解决了某些 Oboe 代码问题,而 Google 团队与部分移动设备制造商一起进一步增强了 Oboe 的兼容性。

对于歌手社区而言,音频质量至关重要,我们一起致力于帮助 Smule 提供最佳体验,并助力音乐创作,我们为此深感欣慰。

Smule 首席技术官 Eric Dumas

既然是大规模部署,自然会面临设备特定问题。例如,操作系统内置功能会导致原始音频流中出现回响声效,造成 Smule 不能正常应用自己的专利 DSP 算法和音频滤波器。Google 团队立即施以援手,迅速为开发库提供更新和补丁。Oboe 问题反馈的流程简单,描述明确,便于 Google 团队及时解决。

Smule 还克服了其他设备特定障碍,其中包括特定芯片组错误。比如,Oboe 需要单声道麦克风输入时,一些设备提供的是引入一个模拟单声道麦克风输入的立体声输入。Smule 在 Oboe 的 GitHub 中创建工单,以提供示例并使用 Oboe 测试应用重现此问题。

Google 开发的 Oboe 测试器应用工具可帮助用户在实现过程中解决和标识问题。事实证明,此工具在测试 Oboe、AAudio 和 OpenSL ES 的许多功能、测试 Android 设备,以及衡量延迟时间和故障等方面特别有用。此应用可提供大量有助于模拟绝大部分音频设置的功能。Oboe 测试器还可用于自动化测试,方法是使用 Android Intent 从 Shell 脚本启动。由于集成涉及大量设备,Smule 非常依赖自动化测试。

在 Smule 确信已解决设备特定问题,并且 Oboe 音频相当稳定后,Smule 改用大范围的对比测试发布方式。短短几周内,Smule 将使用 Oboe 的人群从目标设备的 10% 增加到 100%,这得益于 Oboe 在发布期间不断收到积极反馈和绿色 KPI 指标。

结果不言而喻,使用 Oboe 的 Smule 用户会唱更多歌,就这么简单。不重复的卡拉 OK 录制量以及合唱 (或二重奏) 增加了高达 8.07%,不重复的上传量增加了 3.84%,而演唱完成率则增加了 4.10% 以上。Smule 观察到,在 2021 年第三季度和第四季度,录制完成率增加了 10% 以上。

使用 Google 提供的 Firebase Crashlytics 工具,Smule 发现自 Oboe 全面应用以来,与音频相关的崩溃减少,应用更稳定,即便使用低端设备也如此。Smule 敬业的客服团队发现,与音频相关的投诉减少了 33%,其中包括 (非预期的) 机器人音效和回响等问题的投诉。

改用 Oboe 的决策已颇有成效。此应用不同以往,更稳定更出类拔萃,Smule 完全能够采用更新技术,进一步提升音频和硬件质量。最重要的是,Smule 用户可以更得心应手地制作音乐,这才是我们的使命。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android
    +关注

    关注

    12

    文章

    3974

    浏览量

    130492
  • Google
    +关注

    关注

    5

    文章

    1791

    浏览量

    59151
  • 音频
    +关注

    关注

    30

    文章

    3052

    浏览量

    83599

原文标题:Smule 借助 Oboe 音频库提升用户体验,助力音乐创作 | Android 开发者故事

文章出处:【微信号:Google_Developers,微信公众号:谷歌开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Arm精锐超级分辨技术助力提升游戏性能

    去年夏天,Arm 推出了 Arm 精锐超级分辨技术 (Arm Accuracy Super Resolution, Arm ASR) 的早期采用计划,这是一项从 AMD 超级分辨锐画技术 2
    的头像 发表于 04-21 13:52 ?513次阅读
    Arm精锐超级分辨<b class='flag-5'>率</b>技术助力<b class='flag-5'>提升</b>游戏性能

    蓝牙音频模组中模拟音频和数字音频如何选择?

    蓝牙模块中我们常说的模拟音频和数字音频,是指两种不同的信号处理技术,它们都可以实现声音的录制、存储、编辑、压缩或播放,但也有一些区别和特点。本文将为您深入解析蓝牙数字音频和模拟
    的头像 发表于 04-17 15:55 ?391次阅读
    蓝牙<b class='flag-5'>音频</b>模组中模拟<b class='flag-5'>音频</b>和数字<b class='flag-5'>音频</b>如何选择?

    支持多台机统一管控可同时录制6间会议室的录播主机

    其最为突出的优势在于具备6通道视频输入功能,不仅每一路皆支持内嵌音频输入录制,更特别的是,还支持对每一路分别进行配音,能够录制为6个不同音频各自独立的音视频文件,这一特性完美实现了同时
    的头像 发表于 02-22 09:32 ?659次阅读
    支持多台机统一管控可同时<b class='flag-5'>录制</b>6间会议室的录播主机

    如何提升音频音质?比特和采样是关键!

    在挑选音响、声卡、耳机等音频设备时,我们都会特别关注其音质表现——这关乎到我们聆听音乐、观看电影等娱乐体验的质量。实际上,我们可以在音频设备中看到一些名词标注:比特、采样……这两个
    的头像 发表于 02-05 17:26 ?3313次阅读
    如何<b class='flag-5'>提升</b><b class='flag-5'>音频</b>音质?比特<b class='flag-5'>率</b>和采样<b class='flag-5'>率</b>是关键!

    谷歌Pixel Recorder应用用户参与度显著提升

    Google Pixel 的 Recorder 应用允许用户录制、转录、保存和共享音频。为了让用户更轻松地管理和回顾自己的录音,Recorder 的开发者将目光锁定在功能强大的设备端大语言模型
    的头像 发表于 11-15 13:46 ?740次阅读

    《DNK210使用指南 -CanMV版 V1.0》第二十九章 音频录制实验

    ,因为本实验需要录制音频数据。再接着构造了一个Audio对象,Audio对象与文件系统中的音频文件进行绑定。接下来根据定义的采样录制时间
    发表于 10-26 14:16

    采用TLV320AIC3106实现4路音频输入,4路音频输出,对应的管脚该如何分配?

    您好!请问,我想采用TLV320AIC3106实现4路音频输入(即两路均为左右声道的音频输入),4路音频输出(即两路均为左右声道的音频输出
    发表于 10-25 07:14

    synopsys 的design ware:DW_fpv_div,浮点数除法器,默认32位下,想提升覆盖(TMAX),如果用功能case去提升覆盖呢?

    ,覆盖只有微微的提升,请问是否要遍历很多数才能提升覆盖吗?一般这种浮点数有什么方法去跑吗? 每个数都跑岂不是天文数字,本人刚接触不久,请大佬指教下,谢谢
    发表于 10-15 18:38

    dm368录制音视频后用vlc播放不同步是怎么回事?

    目前我们用其他的开发板 能够录制音视频,但是用vlc播放的时候发现每次都是视频播放完成了音频还要播放一会,随着录制时间加上,延后的这个时间也会变长 请问有知道怎么回事的吗?
    发表于 10-15 06:56

    TLV320AIC3254具有6路的语音录制功能,可否生成6路完全独立的音频文件?

    您好,请问下TLV320AIC3254具有6路的语音录制功能,请问下,可否生成6路完全独立的音频文件?由于每个拾音器是分别放置于不同的位置。谢谢。
    发表于 10-12 08:58

    使用adau1961 codec进行录音,发现录制音频文件噪声非常大,请问有什么办法可以优化吗?

    (1)我这边使用adau1961 codec进行录音,发现录制音频文件噪声非常大,请问有什么办法可以优化么,我这边已经排除MIC导入噪声的可能,实际使用AMIC。 (2)我这边使用tas2505作为pa接speaker播放一个wav文件,发现同样噪声非常大,请问有改善的
    发表于 10-12 07:35

    TLV320AIC3254用作音频采集,芯片的ADC的分辨是多少位的呢?

    用作音频采集,芯片的ADC的分辨是多少位的呢?查看了一些资料和CS都没介绍到这一块。
    发表于 10-10 07:23

    高分辨音频和传统音频区别

    高分辨音频通过更高的采样和比特深度,提供了更高的音质和更丰富的听觉体验,而传统音频则可能在音质和细节上有所妥协。
    的头像 发表于 09-04 16:20 ?1709次阅读
    高分辨<b class='flag-5'>率</b><b class='flag-5'>音频</b>和传统<b class='flag-5'>音频</b>区别

    百问网全志系列开发板音频ALSA配置步骤详解

    系统会分配一定存储位来记录声波的振幅,一般称之为采样分辩或者采样精度,采样精度越高,声音还原时就会越细腻。 ?数字音频涉及到的概念非常多,对于在Linux下进行音频编程的程序员来说,最重
    发表于 08-13 09:56

    为什么采用30.72MHz作为最小采样

    本文介绍了为什么采用30.72MHz作为最小采样
    的头像 发表于 08-07 17:35 ?1184次阅读
    为什么<b class='flag-5'>采用</b>30.72MHz作为最小采样<b class='flag-5'>率</b>