语音转文本
Xime 的语音转文本支持两种方式:本地离线识别(内置,v2.6.0+)与在线语音识别插件(如阿里百炼 FunAsr、火山引擎),均可将语音实时转换为文字输入。
权限声明
使用语音转文本功能需要以下权限:
- 录音权限(必需) - 录制语音用于识别
- 网络权限(在线识别需要) - 在线识别需连接服务商;本地离线识别仅下载模型时需要网络
首次使用时,系统会请求麦克风权限,请务必点击「允许」。如果拒绝权限,语音功能将无法使用。
功能定位
- 本地离线识别:无需联网、不上传语音数据,适合注重隐私或网络不便的场景,识别能力依赖本地模型。
- 在线识别:基于在线 ASR 插件,识别准确率与响应速度更高。如果您追求更高的识别准确率、更丰富的功能(如语音命令、多语言混合识别等),建议使用商业输入法(如讯飞、百度、搜狗等)。
功能特点
- 本地离线识别(v2.6.0+) - 内置离线识别引擎与独立进程识别服务,本地模型下载后无需联网即可使用
- 在线实时识别 - 基于在线 ASR 插件,实时流式识别
- 流式输出 - 识别结果实时显示;句子结束时(或长按松开时)一次性提交完整句子,整句连贯、不重复、不会因按键而丢失
- 自带标点 - 在线 ASR 插件识别结果自带标点,宿主不再重复追加
- 音量与频谱可视化 - 显示麦克风音量波动;常驻语音模式下候选栏显示实时频谱动画
- 常驻语音模式(v2.6.0+) - 点击工具栏语音按钮进入常驻语音状态,无需长按空格键
- 预缓冲机制 - 按住空格键时立即开始录音,缓存音频数据,防止语音丢失(吃字)
- 模型预热 - 本地模型提前加载预热,避免识别启动延迟导致音频丢失
- STT 开关 - 可在设置中启用或禁用语音转文字功能,禁用后长按空格键输出连续空格
- 服务商单选 - 在线语音识别服务商只能同时使用一个,可在设置中切换
本地离线识别
v2.6.0 起内置离线语音识别能力,识别在本地独立进程中完成,语音数据不上传。
启用步骤
- 进入「设置 → 扩展商店 → 模型」标签页,在语音模型区域下载本地语音识别模型
- 进入「设置 → 语音转文本」
- 在引擎切换开关中选择「本地」引擎
- 授予麦克风权限即可使用
特性说明
- 独立进程服务 - 识别运行在独立进程(
AsrInferenceService)中,与键盘进程隔离,避免识别负载影响打字流畅度 - 模型预热 - 支持模型预热机制,避免首次识别时模型加载延迟导致音频丢失
- 前缓冲 - 弱音开头的音频内容会被缓存,不会被丢弃
- 空闲释放 - 模型空闲时自动释放,降低内存与功耗占用
语音识别插件
在线语音识别以插件形式提供。语音识别完全插件化,标点预测模型已移除;如需在线识别,请安装并启用相应插件。
可用插件
| 插件 | 服务商 | 特点 |
|---|---|---|
| FunAsr | 阿里百炼 | WebSocket 流式,自带标点,高准确率 |
| Volc ASR | 火山引擎 | WebSocket 流式二进制协议,支持中间结果 |
| Tencent ASR | 腾讯云 | 实时语音识别 V2(WebSocket),支持中英粤及 30 种方言、说话人分离引擎、临时热词表 |
kaomoji、meme-bunny、funasr-asr 插件随 APK 内置;volc-asr、tencent-asr 插件可在「扩展商店 → 插件」中下载。
启用步骤
- 确保已安装并启用至少一个语音识别插件(「设置 → 插件管理」确认启用状态)
- 进入「设置 → 语音转文本」
- 在服务商列表中选择一个提供商,点击激活(未配置的插件会跳转配置页)
- 填写 API Key 等配置信息
- 授予麦克风权限
配置 FunAsr 插件
获取 API Key
- 访问 阿里云百炼平台
- 登录/注册阿里云账号
- 在模型广场获取 API Key
配置步骤
- 在「扩展商店 → 插件」中下载
funasr-asr插件(或确认已安装) - 进入「设置 → 语音转文本」
- 选择「阿里百炼 FunAsr」服务商
- 将 API Key 粘贴到输入框并保存
- 点击激活,授予麦克风权限
配置 Volc ASR 插件
- 确认
volc-asr插件已启用 - 进入「设置 → 语音转文本」
- 选择「火山引擎流式语音识别」服务商
- 按提示填写 API Key / 鉴权信息
- 在插件中心为该插件声明的域名授权(
openspeech.bytedance.com) - 点击激活
配置 Tencent ASR 插件
- 确认
tencent-asr插件已安装并启用 - 前往腾讯云语音识别控制台开通语音识别服务,并在「API 密钥管理」页面获取 AppID / SecretId / SecretKey
- 进入「设置 → 语音转文本」,选择「腾讯云实时语音识别」服务商,填写三要素
- 可选配置:
- 引擎模型:默认
16k_zh_en_2.0(中英粤 + 30 种方言);如需说话人分离,改为16k_zh_en_speaker_2.0 - 临时热词表:格式
热词|权重,多个用英文逗号分隔(如腾讯云|10,语音识别|5),提升专有名词识别率
- 引擎模型:默认
- 在插件中心为该插件声明的域名授权(
asr.cloud.tencent.com) - 点击激活
使用方法
启用语音功能
在「设置 → 语音转文本」中开启语音转文字开关。如果关闭该开关,长按空格键将不会进入语音模式,而是连续输出空格字符。
启动语音输入
- 在输入状态下,长按空格键进入语音模式
- 或点击键盘上的麦克风图标
- 开始说话,识别结果会实时显示
预缓冲机制:长按空格键时,系统会立即开始录音并缓存音频数据,避免因录音启动延迟导致的语音丢失(吃字)。松开空格键后,缓存的音频会与后续录音一起发送给识别引擎。
结束语音输入
- 松开空格键:提交识别结果
- 点击发送按钮:提交结果并关闭语音模式
- 点击取消按钮:放弃结果并关闭语音模式
常驻语音模式
除了长按空格键,v2.6.0 起还支持常驻语音模式,适合长时间连续语音输入:
- 点击键盘工具栏上的语音按钮(麦克风图标)进入常驻语音状态
- 候选栏显示当前语音引擎名称和实时频谱动画
- 说话过程中识别结果实时上屏
- 结束方式二选一:轻触空格键,或点击候选栏上的频谱动画(v3.0.0+),都会结束识别并提交结果(带震动反馈)
权限要求
语音转文本功能需要以下权限:
| 权限 | 用途 | 必需场景 | 如何授予 |
|---|---|---|---|
| 麦克风(RECORD_AUDIO) | 录制语音用于识别 | 所有场景必需 | 首次使用时弹窗请求,点击「允许」 |
| 网络(INTERNET) | 在线识别连接服务商;下载本地模型 | 在线识别 / 首次下载模型 | 应用安装时自动授予 |
权限检查
如果语音功能无法使用,请检查权限设置:
- 进入「系统设置 → 应用 → Xime → 权限」
- 确保「麦克风」权限已开启
- 确保网络连接正常
提示
- 拒绝麦克风权限后,语音功能将完全无法使用
- 可以在系统设置中重新授予麦克风权限
技术细节
语音识别架构
- 宿主仅负责音频采集:
AudioRecord16kHz / 单声道 / PCM 16-bit - 本地识别运行在独立进程服务
AsrInferenceService中,支持模型预热与空闲释放 - 在线后端按需加载:首次语音识别时加载,不预加载
- 在线插件引擎按需初始化:首次
startRecognition()时后台线程加载
在线 API 技术参数
- 采样率:16000 Hz
- 格式:PCM 16-bit 单声道
- 识别服务:由所选插件提供(WebSocket 流式协议)
相关文件
| 文件 | 说明 |
|---|---|
SpeechRecognitionManager.kt | 语音识别管理器(录音 + 后端调度) |
AsrInferenceService.kt | 本地离线识别服务(独立进程) |
PluginAsrBackendAdapter.kt | 插件 ASR 后端适配器 |
VoiceRecognitionHandler.kt | 语音识别 UI 处理 |
JsAsrBackend.kt(plugin-core) | JS ASR 后端实现 |
funasr-asr/main.ts(插件) | FunAsr WebSocket 协议实现(TypeScript) |
volc-asr/main.ts(插件) | 火山引擎协议实现(TypeScript) |
tencent-asr/main.ts(插件) | 腾讯云实时语音识别实现(TypeScript) |
常见问题
Q: 语音识别无反应?
检查以下几点:
- 是否已授予麦克风权限
- 引擎选择是否正确(本地引擎需已下载模型;在线引擎需已安装并启用插件)
- 在线识别需检查:API Key 是否正确配置、是否已激活服务商、网络连接是否正常
Q: 本地离线识别和在线识别怎么选?
- 本地离线识别:无需联网、语音数据不出设备,但需要下载模型,占用一定存储与内存
- 在线识别:准确率通常更高,但需要联网并配置 API Key,语音数据会上传至服务商
Q: 识别准确率低?
- 确保在安静环境下使用
- 说话清晰,语速适中
- 麦克风没有被遮挡
Q: 连接失败?
- 检查网络连接
- 确认 API Key 有效
- 检查插件声明的网络域名是否已授权(插件管理 → 网络权限)
- 稍后重试,可能是服务端临时故障
Q: 识别结果标点很多、句子被切碎?
已优化为整句提交:识别过程中的部分结果只做实时预览,句子结束(或长按松开)时才一次性提交完整句子,整句连贯、不重复。在线 ASR 自带标点,宿主不会再重复追加(避免"。。")。
Q: 语音输入时按其他键,已识别的内容消失了?
语音模式为长按触发:说话时部分结果实时上屏,松开空格键时会立即提交当前已识别内容并结束识别,不会因按其他键而丢失。如果仍遇到,请确认已更新到包含该修复的版本。
注意事项
- 本地离线识别无需联网使用,下载模型时需要网络
- 在线识别需要联网,API Key 请妥善保管,不要泄露
- 在线识别的语音数据会上传至所选服务商进行处理;本地识别的语音数据不出设备
- 在线识别建议在 WiFi 环境下使用,避免消耗移动数据流量