Skip to content

语音转文本

Xime 的语音转文本功能通过在线 FunAsr 插件实现实时语音识别,将语音转换为文字输入。

权限声明

使用语音转文本功能需要以下权限:

  • 录音权限(必需) - 录制语音用于识别
  • 网络权限(必需) - 在线识别需要网络连接

首次使用时,系统会请求麦克风权限,请务必点击「允许」。如果拒绝权限,语音功能将无法使用。

功能定位

Xime 的语音转文本基于阿里百炼 FunAsr 在线识别。如果您追求更高的识别准确率、更快的响应速度或更丰富的功能(如语音命令、多语言混合识别等),建议使用商业输入法(如讯飞、百度、搜狗等)。

Xime 的语音功能适合以下场景:

  • 需要便捷的语音转文字输入
  • 对识别准确率有较高要求
  • 已具备可用的网络连接

功能特点

  • 在线实时识别 - 基于阿里百炼 FunAsr,实时流式识别
  • 流式输出 - 识别结果实时显示;句子结束时(或长按松开时)一次性提交完整句子,整句连贯、不重复、不会因按键而丢失
  • 自带标点 - FunAsr 识别结果自带标点,宿主不再重复追加(可选标点预测模型可进一步提升)
  • 音量可视化 - 显示麦克风音量波动
  • 预缓冲机制 - 按住空格键时立即开始录音,缓存音频数据,防止语音丢失(吃字)
  • STT 开关 - 可在设置中启用或禁用语音转文字功能,禁用后长按空格键输出连续空格

在线 API 配置(阿里百炼 FunAsr)

在线 FunAsr 以插件形式提供,需单独安装 funasr-asr 插件包(.xipk)后使用。

获取 API Key

  1. 访问 阿里云百炼平台
  2. 登录/注册阿里云账号
  3. 在模型广场获取 API Key

配置步骤

  1. 安装 funasr-asr 插件(.xipk
  2. 进入输入法设置 → 插件管理,确认 FunAsr 插件已启用(未被标记为版本不兼容)
  3. 进入「语音转文本」设置
  4. 选择「在线 ASR」标签页
  5. 点击「阿里百炼 FunAsr」进入详细设置
  6. 将 API Key 粘贴到输入框
  7. 点击保存按钮保存设置
  8. 授予麦克风权限

特点

  • 自带标点符号,宿主不再重复追加,避免"。。"
  • 实时流式识别,响应速度快
  • 长按空格说话、松开即提交整句,识别结果连贯不重复
  • 高准确率

标点预测模型

Xime 支持可选的标点预测模型,可在识别结果中添加/优化标点符号。

模型来源

标点预测模型基于 Transformer 架构训练,项目地址: https://github.com/ximeiorg/srf-punctuation

启用方法

  1. 进入「设置 → 语音转文本」
  2. 在「标点预测模型」区域点击下载模型
  3. 下载完成后开启「启用标点预测」开关

技术参数

  • 模型:Transformer 标点预测模型
  • 量化:int8 量化
  • 输入:中文文本
  • 输出:带标点符号的文本
  • 支持标点:逗号、句号、问号、感叹号

使用方法

启用语音功能

在「设置 → 语音转文本」中开启语音转文字开关。如果关闭该开关,长按空格键将不会进入语音模式,而是连续输出空格字符。

启动语音输入

  1. 在输入状态下,长按空格键进入语音模式
  2. 或点击键盘上的麦克风图标
  3. 开始说话,识别结果会实时显示

预缓冲机制:长按空格键时,系统会立即开始录音并缓存音频数据,避免因录音启动延迟导致的语音丢失(吃字)。松开空格键后,缓存的音频会与后续录音一起发送给识别引擎。

结束语音输入

  • 松开空格键:提交识别结果
  • 点击发送按钮:提交结果并关闭语音模式
  • 点击取消按钮:放弃结果并关闭语音模式

权限要求

语音转文本功能需要以下权限:

权限用途必需场景如何授予
麦克风(RECORD_AUDIO)录制语音用于识别所有场景必需首次使用时弹窗请求,点击「允许」
网络(INTERNET)连接阿里云服务进行识别必需应用安装时自动授予

权限检查

如果语音功能无法使用,请检查权限设置:

  1. 进入「系统设置 → 应用 → Xime → 权限」
  2. 确保「麦克风」权限已开启
  3. 确保网络连接正常

提示

  • 拒绝麦克风权限后,语音功能将完全无法使用
  • 可以在系统设置中重新授予麦克风权限

技术细节

在线 API 技术参数

  • 服务商:阿里云百炼平台
  • 模型:qwen-audio-3.0-asr-flash-streaming(实时语音识别)
  • 协议:WebSocket 实时通信
  • 采样率:16000 Hz
  • 格式:PCM 16-bit 单声道

相关文件

文件说明
SpeechRecognitionManager.kt语音识别管理器
FunAsrWebSocketManager.kt(funasr 插件内)FunAsr WebSocket 连接管理
FunAsrAsrBackend.kt(funasr 插件内)FunAsr 后端实现
VoiceRecognitionHandler.kt语音识别 UI 处理
VoiceKeyboardLayout.kt语音模式键盘布局
PunctuationInference.kt标点预测推理引擎
PunctuationModelManager.kt标点预测模型下载管理

相关项目

项目说明
srf-punctuation标点预测模型训练与导出

识别状态

kotlin
enum class RecognitionState {
    IDLE,        // 空闲
    LISTENING,   // 正在监听
    PROCESSING,  // 处理中
    ERROR        // 错误
}

常见问题

Q: 语音识别无反应?

检查以下几点:

  1. 是否已授予麦克风权限
  2. API Key 是否正确配置
  3. FunAsr 插件是否已安装并启用
  4. 网络连接是否正常

Q: 识别准确率低?

  1. 确保在安静环境下使用
  2. 说话清晰,语速适中
  3. 麦克风没有被遮挡

Q: 连接失败?

  1. 检查网络连接
  2. 确认 API Key 有效
  3. 稍后重试,可能是服务端临时故障

Q: 识别结果标点很多、句子被切碎?

已优化为整句提交:识别过程中的部分结果只做实时预览,句子结束(或长按松开)时才一次性提交完整句子,整句连贯、不重复。在线 FunAsr 自带标点,宿主不会再重复追加(避免"。。")。

Q: 语音输入时按其他键,已识别的内容消失了?

语音模式为长按触发:说话时部分结果实时上屏,松开空格键时会立即提交当前已识别内容并结束识别,不会因按其他键而丢失。如果仍遇到,请确认已更新到包含该修复的版本。

注意事项

  • 语音识别需要联网使用
  • API Key 请妥善保管,不要泄露
  • 语音数据会上传至阿里云进行处理
  • 建议在 WiFi 环境下使用,避免消耗移动数据流量

基于 GPLv3 许可发布