「音箱」RT-Thread智能音箱音频应用实践( 三 )
本文插图
【「音箱」RT-Thread智能音箱音频应用实践】
改进过后 , 我们做了一个测试 。 如上图左侧是我们的测试环境数据 。 V2版本中 , 理论上音乐码率大于1411kbps时才支持播放 。 而V3版本中 , 当下载速度大于播放速度时会导致水位上涨 , 一定会出现高于水位线情况 。 当网络出现卡顿时 , 缓存数据是高于水位线的 , 解码器依然可以拿到数据 。
本文插图
在另一种测试环境时 , 当下载速度一直低于播放速度 。 这是一种极端情况 , 下载达不到规定码率 , 无论如何播放都绝对不会流畅 。 V2版本中音频会一直间隔卡顿导致用户无法听清内容 。 在水位线机制中 , 当码率较低 , 缓存不够时是不会发出声音的 , 会有一秒的缓存时间 , 缓存过后播放的声音是较长时间连续的 。, 这样我们能够提升一定会卡顿情况下的用户体验 , 让在非常卡顿的网络情况下音频不再发出刺耳的噪音 。
本文插图
有时我们会播放一些相声、新闻等实时音频电台流内容 。 和音乐文件有一些不同 , 这时会出现推送流码率和播放流码率相同的情况 。
本文插图
这种情况的解决涉及到变速不变调算法的使用 , 即我们会改变语音播放速度而不改变语义语调 , 改变较小时人耳不会听到差别 。 如上图我们做了测试 。 当下载码率与播放码率相同时 , 我们通过变速不变调算法降低音频的播放码率 , 下载速度会始终大于播放速度 。 如图中所示 , 虽然我们会进行缓存 , 但是由于下载速度较小 , 水位线涨不上去 , 依然会出现一定卡顿 。 经处理后 , 下载速度大于播放速度后 , 水位线会持续上涨 , 开始播放后便可以降低出现卡顿的情况 。
本文插图
基于以上 , 我们完成了第四版的改进 。 我们在写入底层播放驱动前做对每一帧做变速不变调算法处理 , 当然这是可以选择开启的功能 。
本文插图
除了可以做变速不变调处理 , 我们还可以在相同位置EQ算法均衡器等其它处理 , 实现流行音乐音效、超低音音效等效果 。
本文插图
于是我们又做了一次改进 。 我们将变速不变调做了剥离 , 以插件的形式动态选择不同音效 。
本文插图
在智能音箱领域 , 客户会使用多种容器、协议以及编码格式 。 我们需要支持多种组合 。
本文插图
我们在原基础上做了改进 , 改进点如上图红色部分所示 。 在之前版本中 , 我们会将数据直接下载缓存到缓存区进行解码 。 改进后 , 我们将解码和解容器进行分离 , 在下载中加入了解容器 , 播放过程中解码 。 解容器以插件形式接入系统 , 在播放过程中探测它的格式 , 选用合适的容器解码格式 。 在这个过程中 , 不仅可以实现了多格式容器解码 , 也实现了多协议解码 。 我们将下载线程进行分类 , 针对不同协议做下载逻辑 。 将容器、协议、解码器剥离后 , 播放器框架可实现多种组合应用场景 。
推荐阅读
- 「中国软件网」实现生产少人化,走向智能化,新朋联众探索工业互联
- WitsView▲出货下修、厂商削价?智能手机生产量下滑波及面板业
- 智能家:荣耀30s怎么打开悬浮球
- 2020改变就在眼前,量化派助力多行业人工智能化
- 小度在线搞事情:帮别家回收旧产品还送小度智能屏!
- 洛阳晚报■产品畅销海内外,研发智能充电桩
- 『接风娱乐』人机对战协作新时期已经来临,提高智能化与人工智能技术趋于结合
- #华添软件#出身卑微,还妄想分银行蛋糕!,快赚工厂:信用卡智能还款
- 「杨剑勇」智能化网点应运而生,银行业积极拥抱金融数字转型
- 「TalkingData」打造智能化的小微企业信用评估体系?,如何用数据+算法
