写点什么

作业帮直播课“集体发言”功能研发实践

  • 2021-05-19
  • 本文字数:1791 字

    阅读完需:约 6 分钟

作业帮直播课“集体发言”功能研发实践

在线下课堂,老师和学生之间的互动频率非常高,而在线上,各个公司目前的直播课产品互动频率都非常低。在作业帮直播课小学产品负责人曹越看来,这个问题的核心原因是缺少一个高频互动的方式。因此,作业帮研发团队对其小学直播课产品中的集体发言功能进行了升级。

项目背景

据了解,作业帮第一代大班课基于 RTMP 技术实现,特点是大部分时间都是单向直播,老师在授课过程中和学生有一些简单互动,比如文字聊天、是否卡、答题卡之类的,互动不及时,延时普遍在 3 秒以上。


在运营大班课的过程中,作业帮发现低年级学生有特别强的互动需求,比如英语课就需要大量口语互动。而且多互动交流,也有利于低年级学生在课堂上更加专注学习。作业帮在 2019 年启动了“小组课”的开发,“小组课”是把一个几千人的大班分成 6 个人一个小组的小班,小组成员之间的互动和第一代大班相比更加频繁和多样。


在“小组课”第一期,作业帮就加入了集体发言功能,集体发言第一期的形式是老师提问,学生用语音回答,语音识别系统会把学习语音自动转换成文字或者分数,再发送给同组学员和老师。集体发言功能上线使用一段时间后,从学生和主讲老师、辅导老师那边收到反馈,他们均有强烈需求要听到对方的真实声音,因此作业帮在 2020 年中启动了集体发言二期的开发,并于 2020 年寒假课全量上线使用。集体发言二期主要解决了同组学员之间,老师和学生之间的语音互动功能。

核心技术

“接到这个项目需求时,凭我多年做音视频的经验,就知道这个项目是一个棘手的活。”因为,作业帮 APP 的用户设备大都为学生家长淘汰下来的手机,还有很多学习平板,这类机型性能较差,安卓系统版本较低,兼容性很不好做。为了解决用户设备的适配问题,在两个月的时间里,团队把公司所有机型都借来,包括同事的个人机,做了几百种机型的适配。


另外,有些学生上课时的环境很嘈杂,从后台甚至能看到有些学生在菜市场、医院或者汽车上看直播课。集体发言功能需求 6 个小组成员都是互通语音,其中只要有一个成员的语音有问题,就会影响其它五个人的上课效果。主讲端也会听到学生的声音,如果刚好听到声音很嘈杂的学生,就会影响老师的上课效果。


考虑对课堂效果风险的控制,作业帮的技术团队尝试了多种解决方案。对于常见的噪音,技术团队主要通过算法消除的方式解决。那些并不常见的噪音也可以通过编写特定算法,将异常设备的音量暂时降低等进行处理,并通过该系统不断迭代去优化声音。


据介绍,传统的噪音消除只能消除白噪音之类特征很明确的噪音,为了解决像汽车声音,菜市场噪音之类特定的噪音,团队引入了机器学习技术,自己训练了噪音消除库,训练数据主要来自回放视频,部分训练数据是组员亲自找到特定场景录制的。因为老师和学生的使用环境不一样,所以还针对老师和学生分别训练了不同的噪音消除库。


另外还要重点说下回音消除功能,集体发言功能的声音来源有很多,很容易产生回音。目前 iOS 平台的回音消除兼容性很好,在 iOS 平台下直接使用了自带的回音消除。PC 平台的回音消除大部分情况下工作都还不错,只有在 CPU 占用率很高的情况下容易出问题。最麻烦的是安卓平台,安卓平台机型特别多,兼容性很差,为了解决这个问题,团队测试了大量安卓机型,采用白名单策略,如果某款机型硬件回音消除很好,就优先使用硬件回音消除,不在名单中的机型则使用软件回音消除。


如果学生侧网络不好对该功能也有一定影响,毕竟多了几路语音,还是会占用一定带宽。作业帮自研的 ZRTC 在弱网方面的技术主要有丢包重传和 FEC,这是一款通用抗弱网技术,不是为该功能专门优化的,但可以起到很好的作用。


2021 年寒暑假,集体发言二期功能全量使用。寒假课结束后,团队邀请了部分用户做了问卷调查,学生满意度和参与度都比第一期有了重大提高。

未来发展

在作业帮产研团队看来,好的产品并非一蹴而就,产品打磨和技术支持缺一不可。评定教育产品好坏的标准要看是否真正赋能教育,技术的不断升级俨然能让产品发挥更大的效用。未来,团队计划在语音方面主要迭代以下几个方面:继续完善机型适配,每年都会出现很多新机型,所以这个工作不能停,团队会一直做下去;以月为周期训练噪音消除库,让噪音消除库适应性更好;尝试新的语音编码,比如最新很火的谷歌开源语音编码 Lyra 等。


随着 5G、人工智能、虚拟现实、增强现实等技术的成熟和应用,在线教育的形态和服务形式也在不断升级。而以人工智能技术驱动的自适应个性化学习,将是教育领域最具潜力的应用场景。

2021-05-19 09:381557

评论

发布
暂无评论
发现更多内容

kubernetes/k8s CRI 分析 -kubelet 删除 pod 分析

良凯尔

Kubernetes 源码分析 Kubernetes Plugin #Kubernetes# cri-o

HarmonyOS组件开发 ScrollView嵌套ListContainer 滑动冲突问题

爱吃土豆丝的打工人

HarmonyOS ScrollView ListContainer 嵌套滑动

架构实战训练营总结

唐江

架构实战营

如何设计一个容错的微服务架构

架构精进之路

架构 微服务 8月日更

Vue进阶(三十七):created、mounted等钩子函数整理

No Silver Bullet

Vue 8月日更

Python开发篇——基于React-Dropzone开发上传组件

吴脑的键客

Python flask React

FastApi-13-文件上传-1

Python研究所

FastApi 8月日更

docker介绍与安装

Rubble

Docker 8月日更

架构实战营毕业总结

Saber

架构实战营 毕业总结

netty系列之:对聊天进行加密

程序那些事

Java Netty nio

模块五作业

Mr.He

架构实战营

架构实战营 | 毕业总结

架构实战营

架构实战营模块五作业-微博评论高性能高可用架构

王晓宇

架构实战营

Flutter Android 端 FlutterEngine Java 相关流程源码分析

工匠若水

flutter android 面试 8月日更

杂谈:电商平台中的图片资源优化实战

云小梦

CSS JavaScript html5 jpeg 图片处理

如何在二三线城市月薪过万(三)java偏功能实现的面试题,有备无患!!

小鲍侃java

8月日更

Python Qt GUI设计简介、环境下载和安装(基础篇—1)

不脱发的程序猿

Python qt GUI设计 Qt Company

Drools 规则属性

LeifChen

drools 规则引擎 8月日更 规则属性

财富自由的本质及如何实现财富自由?

非著名程序员

认知提升 个人提升 财富自由 8月日更

毕业设计:电商秒杀系统

唐高为

JavaScript 中如何比较变量的相等

devpoint

JavaScript ES6 8月日更

架构实战营毕业总结

唐高为

智能边缘开源框架Baetyl,构建边缘融合智能应用

百度开发者中心

AI 最佳实践 物联网 边缘计算 开源技术

fil币价格行情怎么样?fil币价值和未来在哪?

fil币价格行情怎么样 fil币价值和未来在哪

极客大学架构实战0期毕业总结

谢博琛

python爬取下载m3u8加密视频,原来这么简单!

Python研究者

8月日更

LeetCode题解:208. 实现 Trie (前缀树),对象,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

入职新公司后如何快速上手项目

咔咔

php MySQL 数据库

上游思维的三大障碍

石云升

读书笔记 8月日更 上游思维

【Dubbo3.0 技术专题】总体技术体系介绍及技术指南(目录)

码界西柚

dubbo Dubbo服务 8月日更 Dubbo3

Vue进阶(三十六):created() 详解

No Silver Bullet

Vue 8月日更

作业帮直播课“集体发言”功能研发实践_语言 & 开发_作业帮技术团队_InfoQ精选文章