研究背景

随着增强现实(AR)和虚拟现实(VR)等新兴设备的日益普及,传统的文本输入方式如键盘和鼠标已难以满足用户的需求。现有较成熟的文本输入解决方案一是基于计算机视觉的手势识别,二是依赖手持控制器的文本输入。然而,也存在着诸如设备成本高昂、使用易疲劳、文本输入效率低下等问题。

基于可穿戴传感器的文本输入技术是一种有前景的研究方向。通过佩戴诸如指环、手环和手套等形态的传感器设备,捕捉用户的手指和手部动作,并将其转换为文本信息。但现有研究提出了不同于QWERTY标准键盘的输入规则,从而导致输入方式的不直观、不易学和易疲劳。此外,难以广泛应用于不同的终端设备,需要设计特定的接口和软件支持,也限制了该技术的普遍适用性。针对以上不足,本研究探索了一种新的文本输入识别方法,通过手腕可穿戴传感器,结合QWERTY键盘的敲击习惯,实现一种更直观、自然和高效的文本输入体验。

视频介绍

【VirTap: 基于可穿戴传感器的文本输入识别方法研究(by 王宇)】:视频原链接(Bilibili)

硬件资源概况

本研究使用六轴姿态传感器LSM6DSL获取手指敲击动作的加速度和角速度数据,采样频率设置为104Hz,加速度计测量范围设置为±4G,陀螺仪测量范围设置为±2000dps。连续的姿态传感器数据包括了参与者所有的手部动作。为了获取手指的敲击信号,本研究复刻了嘉立创EDA开源硬件平台的QF ZERO V2开源项目作为后续实验的硬件基础,如图1所示。

image.png

图1 可穿戴设备硬件资源

QWERTY键盘的标准指法

QWERTY键盘的标准指法,也被称为触摸打字或盲打,是一种在没有看键盘的情况下打字的技能。这种指法建立在键盘布局和手指位置的记忆上,允许打字者高效且准确地输入文本。示意图如图2所示。

image.png

图2 QWERTY键盘的标准指法示意图

(1)基准位置:每只手除拇指外的四个手指被分配给一行特定的键。例如,左手的食指、中指、无名指和小指分别负责 “F”、 “D”、 “S”和 “A”键 (以及这些键上方和下方的键)。对于右手,食指、中指、无名指和小指分别负责 “J”、 “K”、“L”和 “;”键(以及这些键上方和下方的键)。左手拇指和右手拇指通常用于敲击空格键;

(2)盲打定位:标准的QWERTY键盘上,“F”键和“J”键上会有个突起的小横杠,用于盲打时左手食指和右手食指的定位;

(3)打字动作:每次敲击键时,相应的手指应移动到目标键,然后返回到其基准位置。这种打字方式确保每个手指负责特定的键,从而提高打字效率。

敲击动作识别模型

本研究通过传感器信号的尖锐变化来判定是否发生敲击事件。基于手指敲击数据集,本研究构建了一个基于卷积神经网络的敲击动作识别模型,如图3所示。为了更高效的识别敲击的字符,将手指敲击数据集划分为左手数据集和右手数据集。其中,左手模型输出的样本标签为15个英文字母、左手空格和左手负样本标签共17个类别;右手模型输出的样本标签为11个英文字母、右手空格和右手负样本标签共13个类别。整个网络包含约34k个可训练参数,在100个epoch中进行训练,训练的batch大小为16,使用Adam优化器,学习率设置为1e-3,权重衰减设置为1e-3。
image.png

图3 敲击动作识别模型技术路线图

打字速度通常使用每分钟字数WPM进行评估,公式如下所示:

image.png
式中:|T|是最终得到的字符串的长度,S是从输入短语的第一个点击到最后一个点击的经过时间(单位为秒),包括用于纠正输入错误的时间(例如删除)。

本研究通过统计1分钟内正确敲击的字符数,除以用来评估的待测试文本总字符数,得到模型实时敲击预测准确率,根据WPM公式计算得到打字速度。实验发现,预测准确率和打字速度会随着测试者对QWERTY标准指法的熟练程度而上升。经过一段时间的练习以及少量敲击样本的微调后,本研究构建的模型最终可以达到97.06%的实时敲击预测准确率,WPM为13.6。评估结果如图4所示。

image.png

图4 准确率和打字速度评估结果

文本输入识别框架

本研究提出了文本输入识别框架VirTap,支持任何带有蓝牙功能的终端设备,为其提供文本输入功能,包括但不限于手机、电脑、平板,以及VR头显和AR眼镜等混合现实设备。框架结构细分为Web端模块、云端模块和Android端模块。框架的架构和模块间的依赖关系及数据流向可见于图5。

image.png

图5 文本输入识别框架VirTap架构图

Android端界面展示

Android端界面实现如图6所示。应用主界面如(A)所示,相机预览画面占主体显示。当点击连接手环按钮后,应用跳转到(B)所示界面,设备列表展示了扫描到的BLE设备,在列表项上单击可选中该设备,支持同时选中多个设备。当BLE设备连接成功后,主界面相机预览画面上叠加展示了当前可穿戴设备的数据流信息,如(C)所示。主界面右上角是一个设置按钮,可以用来配置云端TCP服务IP地址和端口,以及外部终端设备的蓝牙名称,如(D)所示。
image.png

图6 Android端界面:(A)应用主界面,(B)BLE设备选择界面,(C)设备数据预览界面,(D)TCP和蓝牙设置界面

Web端界面展示

数据采集界面

Web端数据采集界面如图7所示。整体布局划分为三个部分,左右两边展示可穿戴设备实时数据流。中间区域是QWERTY标准指法敲击示意图,图片上方是一个进度条和两个按钮。当开始敲击数据采集时,进度条会以1秒为周期进行闪动,结合“叮”的音效辅助志愿者完成一次敲击。按钮功能分别是连接云端以及开始或结束敲击数据采集。

image.png

图7 Web端数据采集界面

数据预览界面

Web端数据预览界面如图8所示。整体布局划分为左右两个部分,左边区域上方展示了当前数据所属志愿者、采集时间、采集批次,以及候选敲击数据检测算法的三个超参数。下方是敲击数据的表格展示。整体布局的右边区域就是通过折线图形式展示的敲击数据。通过该界面可以对采集到的敲击数据进行预处理,得到候选敲击数据并高亮显示。通过下载按钮可以对预处理后的数据文件进行保存。
image.png

图8 Web端数据预览界面

数据标注界面

数据标注界面如图9所示。整体布局和数据预览界面非常相似,左上角区域去掉了候选敲击数据检测算法的三个超参数,添加了一个文本输入框用来标记当前样本标签。图表组件隐藏了FPS帧率图显示,只对当前正在校验的候选敲击数据进行高亮显示。下载按钮旁边添加了一个播放按钮,用来控制是否开启视频组件的敲击片段循环播放功能。

image.png

图9 Web端数据标注界面

模型评估界面

模型评估界面如图10所示。和数据采集界面类似,整体布局划分为了三个部分,左右两边展示可穿戴设备实时敲击数据流。数据流下方是云端反馈的敲击预测Top5结果及其置信度分数。中间区域从上往下被划分为4个部分。第一部分是两个按钮和一个下拉选择框。当成功连接云端后,可以从下拉列表中选择一个模型进行评估。第二部分和第三部分是两个文本展示区域,用来展示待实时评估的文本和开启评估后的敲击预测结果。中间区域最下方是评估结果展示区域,显示实时敲击准确率和打字速度评估结果。

image.png

图10 Web端模型评估界面

框架支持的场景

在手机、电脑、平板等智能设备中的文本输入

以iPhone 15 Pro手机为例,接入VirTap的流程为:(1)打开框架Android端应用程序;(2)在iPhone手机蓝牙设置界面扫描到Android设备后,点击设备进行连接;(3)在Android端应用程序设置界面配置云端IP地址、端口和iPhone设备的蓝牙名称;(4)点击按钮连接云端和终端设备;(5)佩戴手表,激活六轴姿态传感器,连接手表至Android端应用程序;(6)当左手或右手连续敲击空格4次即可开始为iPhone手机提供文本输入功能。图11场景照片展示了VirTap框架正在为iPhone 15 Pro提供文本输入功能。

image.png

图11 VirTap框架在手机设备文本输入场景中的应用案例

在混合现实场景中的文本输入

图12展示了混合现实场景中的文本输入。用到的设备是XREAL Air2 AR眼镜。XREAL Air2 眼镜连接带DP(DisplayPort)视频信号输出功能的设备,如手机、平板、或空间计算终端才可开启AR体验。在本场景演示中,通过将XREAL Air2 AR眼镜连接至华为平板,华为平板接入VirTap框架中,实现在AR空间中的文本输入功能。
image.png

图12 VirTap框架在混合现实文本输入场景中的应用案例

硬件资源链接

QF ZERO V2 智能手表终端:https://oshwhub.com/dhx233/esp32_s3_watch

Q.E.D.