LexiSharp-linux 是一款运行于 Linux 桌面的轻量级语音输入工具,围绕“录音 → 识别 → 粘贴”这一流程展开,实现最小成本的语音转文字体验。 支持火山引擎、通义千问、Soniox 及一键配置本地离线引擎。💡 基于 sherpa-onnx 实现。 项目灵感来源于安卓版 LexiSharp-Keyboard,其移动端版本已非常完善且功能强大。
主页 |
设置界面 |
演示:录音 → 识别 → 自动粘贴
- 一键录音:主界面仅保留“开始/停止录音”按钮,同时可选启用悬浮按钮(置顶、可拖拽)。
- 极速转写:支持火山引擎、阿里前文、Soniox,本地离线引擎等渠道。
- 自动输入:默认通过 Fcitx DBus 接口将识别结果直接提交至当前输入环境;当 DBus 不可用时自动使用剪贴板 进行输入。(Wayland 下需安装
wl-clipboard)。 - 配置简明:支持可视化操作也支持通过配置文件
~/.lexisharp-linux/config.json深度自定义。
添加权限
chmod +x setup_lexisharp.sh运行脚本
./setup_lexisharp.sh以 Arch/Manjaro 为例:
sudo pacman -S python python-pip alsa-utils xdotool wl-clipboard xclip tkDebian/Ubuntu:
sudo apt update && sudo apt install python3 python3-venv python3-pip alsa-utils xdotool wl-clipboard xclip python3-tkFedora/RHEL:
sudo dnf install python3 python3-pip python3-virtualenv alsa-utils xdotool wl-clipboard xclip python3-tkinter虚拟环境(推荐)
python -m venv ~/.venvs/lexisharp
source ~/.venvs/lexisharp/bin/activatePython 依赖
pip install -r requirements.txt若在 Wayland 环境启用
auto_paste,请确保已安装wl-clipboard(Arch使用paru -S wl-clipboard安装)。
当前版本已支持可视化设置,通过设置按钮进入设置。如需更多设置可参考下文。
- 本地离线(sherpa-onnx):选择“本地模型(sherpa-onnx)”,在 small/full 两个规格间切换;若未安装,可直接使用 GitHub Releases 直链下载(程序支持自动解压与配置),或选择本地模型目录导入(目录内需包含 tokens.txt 与一个或多个 .onnx 模型文件)。在中国大陆网络环境可选择
gh-proxy.com或edgeone.gh-proxy.com前缀加速。- 也可从 GitHub Releases 直接下载模型包(.tar.bz2),程序支持自动解压与配置;在中国大陆网络环境可选择
gh-proxy.com或edgeone.gh-proxy.com加速前缀。 - 预设默认链接:
- 也可从 GitHub Releases 直接下载模型包(.tar.bz2),程序支持自动解压与配置;在中国大陆网络环境可选择
通过 ~/.lexisharp-linux/config.json 中的 channel 字段选择识别服务:
volcengine(默认):火山引擎大模型录音文件极速版 API。soniox:Soniox Speech-to-Text Async API(参考 https://soniox.com/docs/stt/get-started)。qwen:通义千问录音文件识别(Qwen3-ASR/Qwen-Audio-ASR,参考 https://help.aliyun.com/zh/model-studio/qwen-speech-recognition)。local_sherpa:本地离线识别(sherpa-onnx)。需安装sherpa-onnx onnxruntime numpy,并准备模型目录(见设置说明)。
首次运行 python lexisharp.py 会生成配置模板,核心字段示例如下:
{
"api_url": "https://openspeech.bytedance.com/api/v3/auc/bigmodel/recognize/flash",
"app_key": "你的AppID",
"access_key": "你的AccessKey",
"resource_id": "volc.bigasr.auc_turbo",
"model_name": "bigmodel",
"channel": "volcengine",
"soniox_api_base": "https://api.soniox.com",
"soniox_api_key": "你的SonioxAPIKey",
"soniox_model": "stt-async-preview",
"soniox_language_hints": [],
"soniox_enable_speaker_diarization": false,
"soniox_enable_language_identification": false,
"soniox_context": "",
"soniox_poll_interval_s": 1.0,
"soniox_poll_timeout_s": 120.0,
"auto_paste": true,
"paste_delay_ms": 200,
"max_wait_s": 45,
"log_level": "INFO",
"arecord_device": "plughw:1,0",
"start_hotkey": "ctrl+alt+a",
"stop_hotkey": "ctrl+alt+s",
"floating_button_enabled": true,
"floating_button_size": 60,
"type_delay_ms": 5
}火山引擎配置入口参考:https://www.llingfei.com/695.html
- 在火山引擎控制台开启 大模型录音文件极速版识别 能力,获取:
app_key(App ID)access_key
- 将
channel保持为volcengine,填写上述密钥信息即可。 - 如果偏好环境变量,可在启动前设置:
环境变量优先级高于配置文件。
export LEXISHARP_APP_KEY=你的AppID export LEXISHARP_ACCESS_KEY=你的AccessKey
- 访问 Soniox Console 创建项目并生成 API Key。
- 在配置文件中将
channel改为soniox,并填写soniox_api_key;可按需调整模型和扩展参数:soniox_model:默认使用官方推荐的stt-async-preview。soniox_language_hints:可选的语言提示列表(如["zh", "en"]),有助于提升准确率。soniox_enable_speaker_diarization/soniox_enable_language_identification:开启说话人区分或语言识别。soniox_context:上下文提示文本,最长 10K 字符,用于辅助识别专有名词。soniox_poll_interval_s/soniox_poll_timeout_s:控制轮询间隔与超时时间(秒)。
- Soniox 也支持通过环境变量传参(优先级高于配置文件):
export SONIOX_API_KEY=你的SonioxAPIKey
export SONIOX_MODEL=stt-async-preview
4. 当识别完成后,程序会自动清理已上传的文件与任务,可在日志中查看对应的 `client_reference_id`(与请求一致)。若需要更多参数示例,可参考官方文档:https://soniox.com/docs/stt/async/async-transcription
### 通义千问(qwen)
1. 登录 [阿里云百炼](https://bailian.console.aliyun.com/?tab=model#/api-key) 并创建 DashScope API Key。建议将密钥保存为环境变量:
```bash
export DASHSCOPE_API_KEY=sk-xxxx
若不使用环境变量,请在 ~/.lexisharp-linux/config.json 的 qwen_api_key 字段填写完整密钥。
2. 安装通义千问官方 SDK:
pip install dashscope应用会在检测到缺失时给出提示,未安装将无法调用该渠道。 3. 在设置中选择「通义千问(Qwen)」,按需配置:
qwen_model:默认使用qwen3-asr-flash(生产环境推荐)。如需体验多语种 Beta 版本,可设为qwen-audio-asr。qwen_context:可选的上下文提示,用于增强专业词汇识别。qwen_language:可选的语种提示(如zh、en、yue),留空则由模型自动检测。qwen_enable_lid:是否在返回结果中附带语种识别信息。qwen_enable_itn:开启后通义千问会对数字、金额等文本做逆文本规范化(目前支持中英文)。
- 通义千问要求音频格式为 16kHz 单声道,且单次调用不超过 10MB / 3 分钟。程序默认录音参数已满足要求,如遇超长录音可在界面中手动停止或拆分上传。
- 更多参数说明与最佳实践,可参考官方文档《录音文件识别-通义千问》:https://help.aliyun.com/zh/model-studio/qwen-speech-recognition
LexiSharp 默认优先使用 Fcitx DBus 接口直接提交文本,并在失败时自动回退到传统的剪贴板 兼容模式。若需要强制切换,可在 ~/.lexisharp-linux/config.json 中调整以下配置:
{
"input_method": "dbus",
"dbus_fallback_to_clipboard": true,
"dbus_timeout_ms": 300
}input_method:dbus(默认)或clipboard。当设为dbus时,程序会通过 Fcitx DBus 接口调用CommitString将文本直接提交到当前输入上下文;设置为clipboard可回退到纯剪贴板流程。dbus_fallback_to_clipboard:若 DBus 调用失败,是否自动回退到原有剪贴板方式;设为false时,失败后仅保留识别结果,剪贴板不做改动。dbus_timeout_ms:DBus 调用超时时间,单位毫秒,可视需要适当增大。
启用 DBus 模式的前提条件:
- 桌面环境正在运行 Fcitx(推荐 Fcitx5),并已启用 DBus 前端。
- Python 环境安装了
dbus-next(已包含在项目requirements.txt中)。
当 DBus 调用成功时,状态栏会提示“已通过输入法自动提交到目标窗口,剪贴板保持原样”;如遇失败并允许回退,程序会自动复制文本并继续使用原有注入流程。
source ~/.venvs/lexisharp/bin/activate
python lexisharp.pychmod +x lexisharp.sh
- 激活目标应用并让光标停留在文本输入框。
- 回到 LexiSharp-linux,点击“开始”或使用默认热键
Ctrl+Alt+A开始录音。 - 再次点击(或
Ctrl+Alt+S)结束录音并等待识别。 - 识别结果会自动复制到剪贴板,并尝试自动粘贴到目标窗口;若未成功,可手动使用
Ctrl+V粘贴。 - 可在界面勾选“显示浮动录音按钮”,获得置顶的悬浮录音键。
提示:
auto_paste默认开启。,程序会在复制成功后自动向目标窗口注入内容。
- 提示未找到 arecord:确认已安装
alsa-utils,终端执行arecord -h验证。 - 提示未找到 xdotool:安装
xdotool后重新运行。 - 识别成功但未复制:安装
wl-clipboard(Wayland 环境)或xclip/xsel(X11 环境),并重启程序。 - Wayland 自动粘贴无效:确认
wl-clipboard、python-evdev已安装,并确保当前用户对/dev/uinput具有写权限(将用户加入input组后重新登录)。 - API 返回 403/401:检查 App ID、Access Key 是否正确,确保服务已开通。
- 录音为空:运行
arecord -l查看设备列表,例如:对应在配置中设置**** List of CAPTURE Hardware Devices **** card 1: PCH [HDA Intel PCH], device 0: ALC3232 Analog [ALC3232 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0"arecord_device"为plughw:1,0。 - 日志文件:程序日志保存在.lexisharp-linux/目录下,遇到问题可以先检查log文件

