前言
在今年声网主办的「RTE2022 编程挑战赛」中,数支队伍经过一个多月的努力开发,很多优秀的作品最终突出重围,斩获大奖。本文由RTE2022编程挑战赛获奖者之一李新春撰写,他主要围绕获奖作品「Piloteer助盲服务平台」分享了开发的构思过程、实践经验。
注:本文会涉及到声网 SDK 的使用讲解。现注册声网 SDK,可获得每月免费 10000 分钟使用额度。如在开发过程中遇到疑问,可在声网开发者社区与官方工程师交流。
因为工作原因,在一些沟通中接触了不少养老相关的项目需求,在信息化高度发展的社会,老年人的生活却变得不那么舒服,特别是在疫情期间以及健康码常态化的今天,老年人以及推而广之的视障人员的生活会更加的不方便。因此,考虑到视障人员更不方便,所以以视障人员为目标人群,以人工智能、声网音视频技术、智能硬件设备和人性化服务为依托,进行了该解决方案的设计和系统开发。
项目口号:让我成为你的眼,让我领航前行路
项目介绍:科技在飞速发展,而部分人被落在了后面,让我们协助弱势群体,为他们在新时代领航。新技术让人们的生活更加便利,而视障群体无法看清世界、老年群体无法快速学习进而无法有效的享受科技带来的便利生活。本项目利用人工智能、音视频传输技术、智能硬件等为他们提供一套音视频领航服务方案,协助他们在熟悉周边环境、道路导航、辅助食品/药品辨别等场景下更从容、更舒心。
项目地址:
https://github.com/AgoraIO-Community/RTE-2022-Innovation-Challenge/tree/main/Application-Challenge/项目89-领航者-Piloteer服务平台
有了这个想法,那首先还是要看看视障人员有没有这个需求。
在我国有 8500 万残疾人¹,这其中超 1700 万是视障人群²。其中 23.5% 是 30 岁以下的年轻人,而在视障网民中,80、90 后占比 75%。
在我国有 30% 的视障者基本呆在家中不出门,大部分人出行是需要家人朋友陪同的。完全不需要家人朋友出行的视障人士比例很低,而且大部分不是全盲人。
因此,从数据上看,有一定学历又不经常出门的视障者有不少人群,那他们出门用什么设备呢?粗略统计一下得到如下内容:
以上这些设备各有各的优势也各有劣势,综合考虑来看随着技术的发展,利用智能化设备、AI 识别、音视频高效传输才是未来真正解决问题的方向。
综合来看,还是考虑依托新技术来实现降低成本,辅助出行的目的。通过可移动的摄像头解决人员移动过程中视角差的问题,如果使用手机视频,需要举着才能获得第一视角,而利用 OTG 和 UVC 摄像头,可以佩戴到眼镜上,更加方便。
从系统架构中可以清楚的看到,在设计过程中应用了如下技术:
开发平台:android studio 2021.2.1
安卓版本:6.0.1
一般支持 OTG 摄像头的系统即可使用,当前未作机型适配。
当前测试系统使用的是:win10
CPU:I7 7700K
GPU:GTX1050TI
内存:16G
开发平台:Unity3D 2021.2.14AI
算法:Yolo v3
其他:云虚拟主机
开发工具:Unity3D 2021.2.4 SDK 版本、声网云信令 SDK 1.4以上版本、声网RTC SDK 3.7以上版本,学习 Demo 场景。在如下场景中,首先要注册登陆声网开发者控制台 console.agora.io 并且创建项目获得的 AppID,点击运行即可进入视频房间,关于获得声网 AppID 的过程,建议在声网官网浏览一下,有非常丰富的文档,如下链接。
https://docs.agora.io/cn/Agora%20Platform/get_appid_token
public void loadEngine(string appId)
{
// start sdk
Debug.Log("initializeEngine");
if (mRtcEngine != null)
{
Debug.Log("Engine exists. Please unload it first!");
return;
}
// init engine
mRtcEngine = IRtcEngine.GetEngine(appId);
// enable log
mRtcEngine.SetLogFilter(LOG_FILTER.DEBUG | LOG_FILTER.INFO | LOG_FILTER.WARNING | LOG_FILTER.ERROR | LOG_FILTER.CRITICAL);
}
2、加入房间,“join”函数,为用户加入房间以及各种回调函数的设计,也是未来我们系统中进行实时沟通对话的开始。
public void join(string channel)
{
Debug.Log("calling join (channel = " + channel + ")");
if (mRtcEngine == null)
return;
// set callbacks (optional)
mRtcEngine.OnJoinChannelSuccess = onJoinChannelSuccess;
mRtcEngine.OnUserJoined = onUserJoined;
mRtcEngine.OnUserOffline = onUserOffline;
// enable video
mRtcEngine.EnableVideo();
// allow camera output callback
mRtcEngine.EnableVideoObserver();
// join channel
mRtcEngine.JoinChannel(channel, null, 0);
}
3、完成点对点导航后,“leave”函数,切记在程序退出时记得关闭。
public void leave()
{
Debug.Log("calling leave");
if (mRtcEngine == null)
return;
// leave channel
mRtcEngine.LeaveChannel();
// deregister video frame observers in native-c code
mRtcEngine.DisableVideoObserver();
}
4、因为我们使用的是 OTG 外部摄像头,因此在开发过程中要使用声网的外部视频推送能力。
protected void preview(boolean start, SurfaceView view, int uid) {
if (start) {
mSource = new AgoraVideoSource();
mRender = new AgoraVideoRender(uid, false);
rtcEngine().setVideoSource(mSource);
rtcEngine().setLocalVideoRenderer(mRender);
// rtcEngine().startPreview();
} else {
// rtcEngine().stopPreview();
}
}
安卓端主要包含用户登录和音视频通话,为方便视障人员使用,尽量做了简化
包含数据大屏、设备管理、工单管理、导航管理等模块
展示运营数据分析,设备使用信息,服务质量等内容,如用户年龄分布、周服务排名、当前呼叫信息、日活用户分布等数据问题。
以卫星图、街道图为服务人员提供导航服务,可以进行初步的线路规划,实时视频对话、RTM 及时信令控制等。
采购设备的企业、单独购买的用户,通过集中注册或者个人注册的方式,将自身设备注册到系统平台上,通过该界面对设备的使用者基本信息进行编辑。
系统采用了 AI 辅助识别功能,因此系统设计支持通过网页端(非 AI)和本地端(AI 辅助)进行系统登录和远程服务,包含导航信息的获取、查看、检索等功能。
“十四五”规划和 2035 年远景目标纲要中提出要加快数字化社会建设,我们需要考虑到不同群体的数字化需求,特别是老年群体。
上海是国内最早进入人口老龄化且老龄化程度最深的大型城市有将近 400 万老年人,近年来上海积极探索“社区嵌入式养老服务”,让社区老人在熟悉的环境中实现“老有所养”。因而,利用我们已开发完成的这套系统和服务模式,可以在多方面辅助老年人的生活。
以上是 Piloteer 助盲服务平台作品在声网 RTE2022 编程挑战赛期间的实践分享,更多信息和作品可以访问官方渠道。
Piloteer服务平台:
https://github.com/AgoraIO-Community/RTE-2022-Innovation-Challenge/tree/main/Application-Challenge/项目89-领航者-Piloteer服务平台
大赛作品仓库:
https://github.com/AgoraIO-Community/RTE-2022-Innovation-Challenge
现注册声网 SDK,可获得每月免费 10000 分钟使用额度。如在开发过程中遇到疑问,可在声网开发者社区与官方工程师交流。