大家好,我是玩机视频。
今天跟大家分享一个开源的手机输入法项目——基于开源 Xime 输入法的二次开发版本。
原项目作者是 kingzcheung,开源在 GitHub 上,基于 rime 框架,用 Kotlin + Jetpack Compose 构建。我在它的基础上加了不少实用功能,也修了好几个 bug。
听录功能:实时语音转文字
这是我最满意的一个新增功能。
在定制工具栏新增了一个听录按钮,点一下就开始持续语音识别,边听边出字,像一个简易的实时字幕器。
支持两种识别引擎:
本地 ASR 引擎(Sherpa-ONNX),离线可用,不花流量 在线引擎(阿里百炼 FunAsr),识别更准
本地引擎还配了标点推理模型,识别出来的文字会自动加标点。之前遇到过一个问题:长段语音识别结果前面全部没有标点,标点只在最后才出来。后来改成累积所有文本段,每次有新结果就统一推理全文标点,终于解决了。
还有一个坑:点停止的时候,内容会重复。因为停止时同步把当前文本存了一段,异步的最终结果回调又存了一段,两段内容是重叠的。后来加了个标志位,停止时不再手动存,等最终结果回调统一处理。
识别完可以一键复制全文,也可以随时清空重来。
WebDAV 全量备份:不只剩方案
原版输入法已经支持 WebDAV 同步 rime 方案文件,但只备份 rime/ 目录下的 yaml 和词典文件。
我加了个全量备份开关。开启之后,上传会把整个 filesDir 打包成 zip 传上去,下载就把 zip 拉下来解压恢复。
这意味着什么?你的模型配置、用户词典、剪贴板历史、所有私有数据,统统能备份。换手机、清数据、重装系统,一个 zip 搞定。
不开启开关的时候,还是原来的方案同步,互不影响。
顺便修了一个 WebDAV 的 bug:HTTP 明文连接会被 Android 拦截,报 CLEARTEXT communication not permitted。加了 network_security_config 允许明文流量,用 HTTP 地址的 NAS 或者内网 WebDAV 不再报错。
剪贴板导入导出
剪贴板管理器新增了导入导出按钮。导出会把剪贴板历史存成 JSON 文件,导入就从 JSON 恢复。
配合全量备份用,双重保险。也可以单独导出迁移到别的设备。
还加了个剪贴板最大条数设置项,想存多少条自己说了算,不用担心占太多内存。
特殊按键:Ctrl、Alt、Tab 都有了
这个功能是参考 Trime 实现的。键盘上新增了 Ctrl、Alt、Tab 等控制按键,还有上下方向键可以快速移动光标。
用 Termux 或者远程连接服务器的时候特别实用,不用再切到别的键盘找快捷键了。
其他改进
置顶按钮:即使没有输入焦点,也能让键盘保持显示。在某些场景下很方便。
剪贴板搜索增强:搜索模式默认显示全部列表,修了退格和中文输入的问题,列表高度也调小了,不会挤压键盘区域。
关于作者
原始作者 kingzcheung 的源代码链接在关于页面里完整保留,我没有删掉。
关于页面分成了「原始作者」和「二改作者」两栏。二改作者栏放了玩机视频的 B 站主页和二改后的源代码链接。
应用名称加了「玩机视频@bilibili」标识,一眼就能认出是二改版本。
获取方式
二改源代码:https://github.com/wanjishipin/Xime 输入法APK: 公众号回复“xime” 玩机视频主页:https://b23.tv/wfoztmK
欢迎大家去 B 站看看视频演示,如果觉得有用,给个关注就更好了。
原始项目:https://github.com/kingzcheung/Xime
夜雨聆风