写点什么

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

  • 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:381210

评论

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

干货!这份阿里P8大佬纯手打总结Kafka学习笔记,真是yyds

了不起的程序猿

Java kafka java程序员 消息中间件 Java 开发

为什么不做APP而要做小程序

源字节1号

小程序开发

一文详解特权访问管理(PAM)

SEAL安全

安全 访问权限 访问管理 特权访问

35岁程序员危机,有何破解之法?

博文视点Broadview

为什么电商云产品需要 Assisted Service Module (ASM) 模块的支持

汪子熙

typescript 电商 SAP 8月月更 Storefront

属实不赖!Alibaba开源GitHub星标114K微服务架构全彩进阶手册

冉然学Java

Java 阿里巴巴 开源 微服务 微服务架构

以合规交易释放数据“红利”,合合信息旗下启信宝签约福建大数据交易所首批数商

合合技术团队

数据 峰会

连流量染色都没有,你说要搞微服务?

得物技术

架构 微服务 云原生

开源 | WLock:高可用分布式锁设计实践

开源 分布式 分布式锁

用Rust编写的Linux内核GPU驱动程序,或将到来

非凸科技

Linux gpu rust 编程语言

基于RocksDB实现高可靠、低时延的MQTT数据持久化

EMQ映云科技

物联网 mqtt RocksDB emqx 8月月更

Java 泛型 T,E,K,V,,傻傻分不清?

TimeFriends

8月月更

DBPack 数据库限流熔断功能发布说明

峨嵋闲散人

分布式事务 云原生 分库分表 dbmesh Database Mesh

测试开发【Mock 平台】09 开发:项目管理(五)搜索、删除和Table优化

MegaQi

测试平台开发教程 8月月更

阿里大佬 推荐的 “ Spring Cloud Alibaba项目文档 ” 正式发布

冉然学Java

Java 微服务 Spring Cloud Alibaba

《数字经济全景白皮书》银行业数字普惠金融发展与优化策略分析 发布

易观分析

金融 数字经济全景白皮书 易观分析

推荐一款微软出品的开发神器,体验不输IDEA!(含参考资料和项目源码)

收到请回复

面试 springboot 应届生 金九银十 java项目实战分享

创新能力加速产业发展,SphereEx 荣获“中关村银行杯”『大数据与云计算』领域 TOP1

SphereEx

数据库 开源 架构 SphereEx Apache ShardingSphere

多原则等于无原则,微服务识别方法究竟该怎么选?

老坛架构

架构 微服务

增强分析在百度统计的实践

百度Geek说

数据库

一文搞懂│mysql 中的备份恢复、分区分表、主从复制、读写分离

MySQL 高并发 经验分享 签约计划第三季 8月月更

Kotlin协程解析系列(上):协程调度与挂起

vivo互联网技术

kotlin 协程

寻找OpenHarmony「锦鲤」|万元豪礼+技术干货全是你的!

OpenHarmony开发者

OpenHarmony

人手一套的K8S命令集合,它来了!

wljslmz

云计算 Kubernetes 容器 8月月更

Groovy语境下的Map

FunTester

前端监控系列2 |聊聊 JS 错误监控那些事儿

字节跳动终端技术

APM 前端监控 火山引擎 JS错误

微服务性能分析|Pyroscope 在 Rainbond 上的实践分享

北京好雨科技有限公司

Kubernetes 微服务 云原生

最常见的 10种网络安全攻击类型

郑州埃文科技

网络安全 IP地址 网络攻击

SpringBoot 日志的各种使用姿势,你真的用对了吗?

程序知音

Java spring 程序员 springboot 后端技术

DAPP和APP有哪些区别?多链跨链NFT铸造挖矿dapp系统开发技术原理分析

开发微hkkf5566

StarRocks 技术内幕 | 基于全局字典的极速字符串查询

StarRocks

数据库

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