PCon全球产品创新大会9折购票中,立减¥480!查看上线日程 了解详情
写点什么

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

2021 年 5 月 19 日

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

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

项目背景

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


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


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

核心技术

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


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


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


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


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


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


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

未来发展

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


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

2021 年 5 月 19 日 09:38782
用户头像
赵钰莹 InfoQ高级编辑

发布了 733 篇内容, 共 431.3 次阅读, 收获喜欢 2343 次。

关注

评论

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

软件测试功能/数据库/linux/接口/自动化/测试开发面试真题解析

程序员阿沐

程序员 面试 软件测试 经验分享 测试工程师

政府与市场应该如何互动

石云升

8月日更 财经思维

模块一作业

南山先生

#架构实战营

深入了解RocketMQ之NameServer

邱学喆

KVConfigManager RouteInfoManager

微信朋友圈高性能复杂度分析模拟

穿裤子的云

架构实战营

05. AI就是会学习的计算机程序:从机器学习角度看AI

数据与智能

人工智能

架构实战营作业 M06

Shawn Liu

「架构实战营」

Go进阶指南,手摸手带你深入了解 range 实现原理

微客鸟窝

Go 8月日更

字节跳动三面拿offer:网络+IO+redis+JVM+GC+红黑树+数据结构

编程susu

Java 编程 程序员 计算机 技术宅

instanceof运算符的实质:Java继承链与JavaScript原型链

zhoulujun

JavaScript 原型链 instanceof constructor prototype

模块二作业

Geek_fc100d

架构实战营

从命令执行到GetShell,适合新手学习

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

刚从鹅厂面试回来,分享我的java后端面试经历(腾讯五面)!

Crud的程序员

Java 编程 架构 面试

Python代码阅读(第21篇):将变量名称转换为蛇式命名风格

Felix

Python 编程 Code Programing 阅读代码

电商系统拆分微服务

gawaine

架构师训练

极客时间---架构实战营2期---模块一作业

Dylan TANG

极客时间 架构实战营 作业一

模块6

脉动

架构训练营模块六作业

Honey拯救世界

架构训练营

架构实战营模块一

WolvesLeader

架构实战营

阿里P8熬了一个月肝出这份32W字Java面试手册,在Github标星31K+

编程susu

Java 编程 程序员 计算机 技术宅

架构1期模块六作业

五只羊

架构实战营

VR运动病要想好,FemTech少不了

脑极体

架构训练营模块五作业

高铎

架构实战营

架构实战营 - 模块 6 - 电商系统的微服务拆分方案

雪中亮

架构实战营 #架构实战营

大数据0815作业

朱磊

消息队列Kafka:源码解读(一)-异步任务管理

正向成长

kafka源码 时钟轮 TimingWheel

【架构设计模块六】:拆分电商系统为微服务

Ryoma

膜拜!首次公布Java10W字面经,Github访问量破百万

今晚早点睡

Java 程序员 计算机

在字节奋战8年,今天回头一看只剩下这份1857页的算法笔记了

编程susu

Java 编程 程序员 计算机 技术宅

模块6作业

SAKIN

架构实战营模块六作业

maybe

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