Skip to content

在电脑上用中文语音输入,全程离线

本页是英文版本的简体中文翻译。 若有出入,以英文版为准。

一句话总结: YazSes 是一款免费、开源的听写软件,可以把中文直接输入到电脑上的任何应用, 并且在拔掉网线的情况下照样工作。你按住一个键,说话,松开,文字就出现在光标所在的位置。 默认不上传任何内容,不需要注册账号,也没有按分钟计费。

这一页会明确说清楚**哪些能用、哪些还不行** —— 因为离线语音识别的中文支持,通常被吹得过头了。

默认并不支持中文,你必须手动换模型

YazSes 默认使用 base.en,这是一个**纯英语**的 Whisper 模型。纯英语模型完全不包含语言标记, 因此在架构上无法解码普通话:喂给它中文语音,它不会报错,而是输出看似流畅的英文乱码 —— 这是最糟糕的一种失败方式。YazSes 启动时会就此发出警告,但设置仍然需要你自己改。

编辑 ~/.config/yazses/config.toml

[stt]
model = "small"                  # 多语言模型(不带 .en 后缀):base / small / medium / large-v3
language = "zh"                  # 普通话
chinese_script = "simplified"    # 简体;台湾/香港用户请设为 "traditional"

然后执行:

yazses features enable chinese-script   # 自动安装所需的 `chinese` 扩展
yazses restart

为什么 chinese_script 比它听起来更重要

Whisper 会**逐句**自行决定输出简体还是繁体,而且并不一致。在 20 段干净的 16 kHz 普通话语音 上实测(ASCEND 测试集,small 模型),其中 13 段返回的是繁体字 —— 包括那些识别本身 完全正确的句子。对大陆用户来说,这意味着说着简体中文,编辑器里却蹦出繁体字。

这种不一致造成的精度损失远超表面观感,因为**识别通常是对的,只是字形写错了**。 以简体参考文本计算字错率(CER):

模型 chinese_script = "" chinese_script = "simplified"
small 35.9% 16.9%
large-v3 12.3% 11.3%

同一批音频、同一个模型,只改了一个配置项。这个设置对小模型的作用最大, 而小模型正是 CPU 用户实际会用的那一档 —— small 提升了 19 个百分点,large-v3 只提升了 1 个百分点,因为大模型本身就更倾向于输出简体。如果你是在笔记本 CPU 上(而不是 GPU 上) 听写,那么这个设置承担了绝大部分的改善。

测量方法与全部注意事项记录在 postprocess/han_script.py

需要说明的是:简繁转换是一个可逆的字符映射,因此它**无法修复听错的内容** —— 它只能防止一段本来正确的识别结果以错误的字形呈现出来。

实际准确率到底如何

上述数据来自 ASCEND —— 这是**自然对话**语料,说话人带港式口音,且有中英夹杂, 是刻意选择的偏难场景,样本量也只有 20 句。安静环境下用较好的麦克风朗读效果会更好; 嘈杂环境或口音较重时则会更差。模型大小是你手上最有效的调节手段:在同一批音频上, large-v3 达到 11.3%,而 small 为 16.9%。

不要把任何人的基准数据当成对你嗓音的承诺。投入使用前,请先在你自己的录音上实测:

yazses transcribe 我的录音.m4a

模型越大越准,但 CPU 解码也越慢。small 是一个合理的起点;如果你的机器能承受更高的延迟, 可以换成 mediumlarge-v3

YazSes 的中文听写目前应当被描述为**可用但仍需打磨**。我们非常希望收到真实使用反馈 —— 欢迎提交 issue,说明哪些好用、哪些不好用。

为什么"离线"在这里特别重要

市面上大多数中文语音输入要么是网页,要么是手机输入法:你对着它们的文本框说话, 再把结果复制出来,而且一断网就不能用了。YazSes 是运行在你自己电脑上的后台程序, 因此它直接把文字输入到 Word、浏览器、代码编辑器或终端里 —— 在火车上、在信号很差的地方, 甚至在一台从不联网的机器上都能用。

对于音频绝对不能外传的场景,这一点就是全部意义所在:病历记录、法律文书、未发表的研究、 受伦理审查约束的访谈录音,或者内网隔离机器上的工作。 参见隐私与机密工作场景隐私声明

相关页面