语音输入这件事,最容易被"看起来流畅"骗过去。屏幕上字一个个蹦出来,标点自动补上,看上去行云流水,可一旦你把它当成主力输入方式连写半小时,就会发现问题:有的句子说到一半才一起涌出来,有的首字被吞掉要重说,有的明明说对了却被自动改成另一个词。这些体验差距,靠"感觉还不错"根本测不出来。
我这段时间专门做了一轮实时语音输入的流畅度测评,重点压在两个环节上:麦克风录音这条采集链路到底有没有拖后腿,以及即时转文字从"声音进"到"文字上屏"之间到底卡在哪。这篇文章把我用的测评口径、对照实验、踩过的坑都摊开讲,适合三类人看:想把语音输入真正用起来的重度文字工作者、做语音交互功能的开发者、以及需要给团队选一套可用方案的技术负责人。没有玄学,全是能复现的操作和数据口径。
1. 先把"流畅"拆开:从嘴到屏幕其实是四段时间
很多人测语音输入,采用的是"念一段话,看错几个字"这种单点方法。这个方法只在考察准确率,完全没考察流畅度。准确率高的方案,完全可能因为延迟大、刷新抖动而让人用不下去。所以第一步不是选工具,是先定义清楚要测什么。
1.1 一条实时语音链路的完整信号路径
要理解延迟从哪来,得先知道声音经过了多少道手。我按自己的理解把它画成一条"流水线",每一站都可能成为瓶颈:
- 声学采集:麦克风振膜转换电信号,声卡以 44.1kHz 或 48kHz 采样,量化位深通常 16bit 或 24bit。
- 系统混音与重采样:操作系统把多路音频混流,再重采样到应用请求的格式。这一步是很多人忽略的隐性开销。
- 应用层采集缓冲:应用从驱动里按块取数据,常见块大小 256、512、1024 帧。48kHz 下 512 帧约 10.7ms,1024 帧约 21ms。
- 端点检测与分帧:识别前端按 25ms 窗、10ms 帧移切帧,做 VAD 判断有没有人说话,找句子的起止点。
- 编码与传输:常见语音编码帧长 20ms,加网络抖动缓冲,云端方案这一站通常吃掉 50~150ms。
- 流式识别:声学模型出音素、语言模型纠偏,先给"临时结果",再说完整句后"定稿"。
- 结果回传与渲染:增量结果推回客户端,上屏、注入到目标编辑框,部分方案还会再走一遍输入法的联想和标点处理。
这条链路上任意一站阻塞,用户看到的表现都是同一个字:卡。但卡的原因完全不同,修法也完全不同。所以测评必须分站定位,不能只看最终结果。
1.2 四种延迟口径:别只盯首字
我最终固定了四个指标口径,每个都单独记录,因为它们对"流畅感"的贡献权重不一样:
| 指标 | 定义 | 主观影响 | 我测到的合理区间 |
|---|---|---|---|
| 首字延迟 | 从开口到屏幕上出现第一个字 | 决定"有没有反应" | 端侧 100~300ms,云端 300~800ms |
| 增量刷新间隔 | 相邻两次上屏的时间差 | 决定"流不流畅" | 稳定在 150~400ms 之间最舒服 |
| 定稿延迟 | 说完最后一个字到该句内容不再变动 | 决定"敢不敢继续往下说" | 200~700ms |
| 修订回退次数 | 一句话里文字被改写的次数 | 决定"烦不烦" | 每 20 字不超过 1 次 |
其中增量刷新间隔是最容易被忽视的。有的方案首字延迟很低,但后面是每 1.5 秒"吐"一大段,视觉上像挤牙膏,反而比分批小步更新更让人焦虑。而修订回退次数是真正的体验杀手:你眼看着一句话写完了,下一秒开头两个字被换掉,再下一秒整句重排,注意力被反复拽回去,写长文的效率直接腰斩。
提示:测首字延迟时一定要用"清辅音开头"的词,比如"测试""四十四"。以元音或浊辅音开头的词,VAD 更容易触发,测出来的数字会偏乐观。
1.3 我自建的一套五分制打分表
纯看数字还是不够,因为人对流畅的感知是综合的。我补了一套主观打分表,每项 0~5 分,测完一段 5 分钟的连续口述后立刻打分,避免记忆模糊:
- 响应感:开口后是否需要刻意等待。
- 节奏感:文字出现的步调是否跟说话速度匹配。
- 稳定感:中途有没有明显停顿、掉字、整段重排。
- 可控感:发现识别错了,能否在合理时间内纠正而不打乱思路。
- 收尾感:说完一句,能否顺畅接下一句,不被定稿过程卡住。
五项加起来低于 18 分的方案,我基本不会再用来写超过 500 字的内容。这个阈值是我个人的经验线,不同人容忍度不一样,但打分表本身是可复用的。
1.4 为什么主观流畅和字错率会背离
这里有个反直觉的现象值得单独说:字错率低的方案,主观流畅度不一定高。
原因是很多方案在解码阶段加了很重的语言模型纠偏,会把不确定的词先"猜"一个通顺的填上去,然后在你继续说话后悄悄替换。最终文本的编辑距离很小,甚至字错率很低,但过程中屏幕上的文字不断自我否定,用户的主观感受是"这东西在乱改我的话"。
我做过一组对照:A 方案的最终字错率比 B 方案低约 3 个百分点,但 A 的每句平均回改次数是 2.1 次,B 是 0.6 次。连续口述 5 分钟后,我自己更愿意用 B。这个结论说明,测评里必须把"过程指标"和"结果指标"分开记录,只看结果会选错方案。
2. 麦克风这一环:大多数流畅度问题其实死在采集端
做完前面那套口径之后,我遇到最尴尬的事:无论换哪个识别引擎,安静房间里的表现都不错,一旦换到会议室、开放工位、车里,流畅度就断崖式下滑。我一开始以为是识别引擎的问题,后来对着录音文件反复听才发现,问题出在送进去的音频本身就不合格。采集端做不好,后面的模型再强也救不回来。
2.1 采样率与位深:关键不是高,而是整条链路一致
绝大多数流式识别引擎的输入规格是 16kHz、16bit、单声道。这是行业里长期形成的平衡点:8kHz 会丢掉 4kHz 以上的频段,而中文里的 s、sh、f、x 这些擦音的辨识信息大量集中在这个区间,丢了之后同音字错误会明显上升;48kHz 对识别没有额外收益,只是多消耗带宽和算力。
真正的坑在重采样。如果你的设备以 48kHz 采集,应用请求 16kHz,中间那次重采样如果用的是质量较差的线性插值,会产生混叠,听起来"有点毛刺",人耳不一定察觉,但识别模型会敏感。我的做法是尽量让采集端和识别端规格一致,能直接要 16kHz 就不要走 48kHz 再降。
位深上,16bit 完全够用,动态范围约 96dB,远超语音场景需求。24bit 在录音棚有意义,在语音输入里只会让数据量涨 50%。通道数上,单声道优于双声道:双声道麦克风在远场会有相位差,两路信号叠加后某些频段互相抵消,反而更难识别。
2.2 增益与削波:被降噪掩盖的失真救不回来
这是我踩得最深的一个坑。当时为了让安静环境下的轻声说话也能被识别,我把麦克风增益调得很高,输入电平峰值经常顶到 0dBFS。结果表现是:安静环境下识别确实变灵敏了,但只要说话声音稍大,识别就开始乱,尤其是爆破音 p、b、t 附近频繁出错。
原因很直接:削波是不可逆的。波形被削平之后产生大量谐波,这些谐波在频域上完全不是人声该有的样子,识别模型没见过这种输入,只能瞎猜。而很多方案的自动增益控制和降噪会在削波之后继续处理,听起来"声音还挺清楚",实际信息已经毁了。
我的经验参数是:正常说话时峰值控制在 -12dBFS 到 -6dBFS,给突发音量留 6dB 以上余量。这个区间既不会太小声被 VAD 判成静音,也不会削波。检查方法很简单,用系统自带的录音电平表,正常语速念一段含大量爆破音的话,看峰值有没有触顶。
注意:自动增益控制不是免费的。它会把安静时的底噪一起抬上来,在原本就很安静的书房里,开启 AGC 反而让识别变差。我现在的默认配置是关闭 AGC,手动固定增益。
2.3 降噪的边界:它对什么有效,对什么有害
降噪分两类,效果差别很大,但界面上往往只写"智能降噪"四个字。
稳态噪声(空调、风扇、路噪)用谱减法一类的传统降噪就能压得很好,代价很小。非稳态噪声(键盘敲击、翻纸、隔壁说话)就很难处理,降噪算法容易把语音的清音起始段一起当成噪声压掉,表现是"字头被吃"。你说"测试一下",识别出来是"是次一下"或者干脆少了第一个字。
我做过一个粗糙但有效的对比:同一段话,在键盘连续敲击的环境下,分别开关降噪各测 10 遍。开降噪时,句首第一个字的丢失率明显上升;关降噪时,句中偶尔混入误识别的杂字。两害相权,我选择关掉应用层的降噪,改用物理方式——把麦克风挪到离嘴更近、离键盘更远的位置。
还有一个隐蔽问题:双重降噪。系统层面开了降噪,应用里又开一次,两套算法串联,听起来更"干净",实际上人声的高频细节被削了两遍,识别率会掉。我的做法是全链路只保留一级处理,通常在系统层关掉,把控制权留给应用。
2.4 不同收音方式的实测对照
为了把上面的判断变成可比较的数字,我用同一段 3 分钟的标准朗读文本(约 720 字,含大量近音词和数字),在同一个房间、同一台机器上换了五种收音方式各测三轮,取中位数。下表是我这次的记录,绝对数值跟环境强相关,但相对关系有参考价值:
| 收音方式 | 首字延迟 | 每句回改次数 | 相对字错情况 | 主观流畅分 |
|---|---|---|---|---|
| 有线耳麦(近场,16kHz) | 310ms | 0.4 | 基准 | 4.6 |
| 内置麦克风(近场,48kHz 转 16kHz) | 340ms | 0.7 | 略差 | 4.1 |
| USB 桌面麦克风(30cm,带指向性) | 360ms | 0.6 | 接近基准 | 4.2 |
| 蓝牙耳机免提通道 | 520ms | 1.8 | 明显变差 | 2.8 |
| 笔记本内置麦克风(1 米外,开系统降噪) | 480ms | 2.4 | 明显变差 | 2.5 |
蓝牙那一行值得单独说。多数蓝牙耳机在启用麦克风时会从高质量音乐通道切到免提通话通道,采样率被压到窄带,同时开启双向传输,延迟显著上升。你的耳机听歌很爽,做语音输入却可能不如一根几十块的有线耳麦。这个结论我一开始也不信,直到把录音导出来对比频谱才服气。
3. 即时转文字的延迟账:到底哪一段在拖后腿
采集端干净之后,剩下的延迟就都集中在识别链路上。这一段最容易被"平均延迟"这种指标糊弄过去,因为用户的感受取决于最差的那几次,而不是平均值。我关心的是分布的长尾。
3.1 端侧与云端的取舍不是非此即彼
端侧识别(模型跑在本地)的首字延迟通常能做到 100~300ms,不受网络影响,隐私上也更放心。代价是模型体积受限,遇到专业术语、人名、生僻词就容易崩,而且长句的上下文建模能力弱,断句和标点质量一般。
云端识别的首字延迟在 300~800ms 区间,准确率和标点质量明显更好,但对网络质量敏感。我用弱网模拟做过测试:正常网络下首字延迟 350ms,限制上行带宽并注入 5% 丢包后,首字延迟跳到 1.4 秒,且每句的回改次数翻了三倍。
有一类混合方案看起来很美:端侧先出占位结果保证响应,云端结果回来后再替换。实测下来我持保留态度。替换动作本身制造了视觉抖动,尤其在你已经看着那句话往下写的时候,前面几个字突然变了,注意力被打断的成本高于省下的那 200ms。如果要用混合方案,我会建议只在"整段结束、光标离开该句"时才做替换,而不是实时替换。
3.2 缓冲策略:等一句话说完,还是边说边猜
流式识别的核心矛盾在这里。系统必须攒够一定量的音频才能给出可信的判断,攒得越多越准,但延迟越高。
常见的做法是"分段假设":每 200~300ms 用当前的音频上下文出一次临时结果,同时保留后面修正的余地。这个间隔就是前面说的增量刷新间隔。间隔太短(100ms 以下)会让屏幕疯狂跳动,且每次结果都不够可信;间隔太长(600ms 以上)会出现明显的"批量吐字"感。
另一个参数是端点检测的静音门限,也就是判断"这句话说完了"需要多长的静音。设得太短(200ms 以下),你说话中间的换气停顿会被当成句末,一句话被切成三段,每段都重新开始,标点和上下文全乱。设得太长(800ms 以上),你明明说完了还得等着,衔接下一句时很别扭。我实测下来 400~600ms 是比较舒服的区间,具体取决于你的语速和换气习惯。
3.3 说话节奏和识别节奏的错配
这是个很少有人提但影响巨大的因素:你的说话速度如果明显快于或慢于识别器的期望节奏,流畅度会双向下滑。
说得太快时,增量结果来不及定稿就被新音频覆盖,表现是中间频繁丢字,或者一句长话被压缩成几个关键词。说得太慢时,长静音频繁触发端点检测,一句话被切碎,每个碎片单独识别,标点全是句号。
我给自己定的口述节奏大约是每分钟 220~260 字,接近正常偏快的语速,同时刻意在逗号位置做 150ms 左右的微停顿、句号位置做 400ms 停顿。这个习惯养成之后,同一套方案的定稿延迟下降了将近三成,回改次数也明显减少。这不是玄学,是给端点检测器提供了清晰的边界信号。
3.4 一组对照实验:把三个变量单独拆开
为了确认到底谁是主要瓶颈,我做了一组控制变量实验。固定同一段语料、同一台机器,只改一个变量,每组测三轮:
| 变量 | 取值 | 首字延迟 | 定稿延迟 | 回改次数/句 |
|---|---|---|---|---|
| 刷新间隔 | 150ms / 300ms / 600ms | 基本不变 | 320 / 340 / 390ms | 1.2 / 0.7 / 0.5 |
| 静音门限 | 250ms / 500ms / 800ms | 基本不变 | 280 / 340 / 520ms | 1.9 / 0.7 / 0.6 |
| 网络抖动缓冲 | 40ms / 100ms / 200ms | 300 / 380 / 610ms | 300 / 360 / 480ms | 0.9 / 0.7 / 1.4 |
表格里的结论挺清楚:刷新间隔主要影响回改次数,静音门限主要影响定稿延迟,抖动缓冲则同时影响首字延迟和稳定性,而且超过某个点之后回改次数反而上升——因为缓冲太大导致音频片段到达顺序与时间戳错位,识别器在拼上下文时容易出错。
这组数据对我最大的启发是:调优不是把所有参数都往"低延迟"方向推。抖动缓冲推到 40ms 的首字延迟确实漂亮,但在有网络波动时稳定性会崩,实际用起来的体验比 100ms 差。
4. 测评方法落地:把"感觉卡"变成可复现的数字
前面讲的都是判断,这一节讲怎么把它变成能重复跑的流程。我给自己定了一条规矩:任何结论如果没有三次以上可复现的记录,就不写进结论里。
4.1 语料准备:一份能暴露问题的朗读脚本
随便找篇文章念是不够的,语料要针对性设计。我的脚本分五块,每块 60~90 秒:
- 近音词密集段:如"四是四,十是十""实施、事实、实时"连续出现,压识别模型的音素区分能力。
- 数字与单位段:包含小数、百分比、年份、金额,测后处理规则。
- 中英混排段:刻意夹英文术语和缩写,测切语种能力。
- 长句无标点段:一口气 40 字以上不断句,测端点检测和上下文建模。
- 轻声与快语速段:故意降低音量、加快语速,测鲁棒性。
每段开头都带一个固定的"触发词",方便在日志里对齐起点。我用的触发词是"开始记录",因为它包含清辅音和浊辅音,VAD 触发特征比较典型。
4.2 用时间戳做端到端测量
最省事的测量方式是拿识别工具的日志。很多工具会输出每条结果的生成时间戳和音频偏移量,把两者一减就是端到端延迟。如果没有日志,退而求其次用录屏加逐帧回看,精度差一些但能用。
我把日志整理成 JSONL,每行一条记录,字段包括音频偏移、结果类型(临时/定稿)、文本内容、输出时间。然后用一段脚本算分布:
import json import statistics records = [] with open("asr_log.jsonl", encoding="utf-8") as f: for line in f: line = line.strip() if line: records.append(json.loads(line)) # 只保留定稿结果,用音频偏移对齐说话起点 finals = [r for r in records if r["type"] == "final"] latencies = [r["emit_ms"] - r["audio_offset_ms"] for r in finals] print("样本数:", len(latencies)) print("首字延迟 P50:", statistics.median(latencies), "ms") latencies_sorted = sorted(latencies) p90 = latencies_sorted[int(len(latencies_sorted) * 0.9)] p99 = latencies_sorted[int(len(latencies_sorted) * 0.99)] print("P90:", p90, "ms", " P99:", p99, "ms") # 刷新间隔分布:相邻临时结果之间的时间差 partials = [r for r in records if r["type"] == "partial"] gaps = [] for prev, cur in zip(partials, partials[1:]): delta = cur["emit_ms"] - prev["emit_ms"] if 0 < delta < 3000: gaps.append(delta) print("刷新间隔中位数:", statistics.median(gaps), "ms") print("刷新间隔抖动(标准差):", round(statistics.pstdev(gaps), 1), "ms") # 回改次数:同一句内文本被改写的次数 rewrites = {} for r in records: if r["type"] != "partial": continue key = r["segment_id"] if key in rewrites and rewrites[key] != r["text"]: rewrites[key + "_count"] = rewrites.get(key + "_count", 0) + 1 rewrites[key] = r["text"] total_rewrite = sum(v for k, v in rewrites.items() if k.endswith("_count")) print("回改总次数:", total_rewrite)这套脚本的价值在于把"P90"和"抖动"这两个数字暴露出来。只看中位数,很多方案都很好看;一看 P90 和标准差,差距立刻显现。我现在的判断标准是:P90 不超过中位数的 2 倍,刷新间隔标准差不超过 120ms,才算稳定。
4.3 长时段稳定性:短测测不出来的问题
短时间测试最大的盲区是"退化"。有些方案前两分钟很稳,第十分钟开始卡,原因是本地缓存堆积、内存增长、或者后台有个进程在偷偷跑。
我的做法是做 20 分钟连续口述压测,中途不停止,每分钟记录一次首字延迟和数据延迟。观察三个信号:延迟是否单调上升、内存占用是否持续增长、是否出现重连。出现过一次重连的方案,我会把它的稳定性评级直接降一档,因为重连往往伴随结果重复上屏或者丢一段话,这在正式使用中很致命。
还有一个细节:压测时要用真实的目标应用,而不是工具自带的测试框。有的方案在自己的测试界面里表现很好,注入到第三方编辑器时因为要走输入法通道,延迟会多出 100ms 以上。
5. 五个让测评结论翻车的坑
这一节是我这段时间最值钱的部分。前面那些数字和方法,只要有耐心都能做出来;下面这些坑,是我反复翻车之后才总结出来的。
5.1 后台进程抢占:最容易误判成"方案不行"
第一次做长时段压测时,我发现某方案在第 8 分钟突然变卡,首字延迟从 300ms 跳到 900ms。当时我判断是这个方案的缓存管理有问题,差点把它淘汰。后来打开资源监视器才发现,是系统在后台做索引,把 CPU 占满了。
采集线程对调度延迟极其敏感。音频缓冲是按块取的,如果线程被抢占超过一个块的时间,就会丢帧,表现为"吞字"。所以在做任何对比测试前,我会先关掉自动更新、云盘同步、索引服务、浏览器多余标签页,并确认 CPU 空闲率在 80% 以上。
更进一步,我会在测试时给采集进程设高优先级。这在 Windows 上可以用任务管理器直接改,在 Linux 上用nice或chrt:
# 查看音频相关进程的调度策略 chrt -p $(pgrep -f audio_capture) # 以实时调度策略启动采集程序(需要相应权限) sudo chrt -f 50 ./audio_capture --device default --rate 16000注意:实时调度策略不是随便开的。给错进程设了实时优先级,可能导致系统其他部分饿死。只在测试环境里用,测完就恢复。
5.2 回声与双讲:外放场景下的自激
用外放做语音输入,麦克风会把喇叭放出来的声音再收进去。如果识别结果的提示音或者别人的声音被收进来,就会出现"自己识别自己"的情况,表现是文字莫名其妙重复一遍。
更麻烦的是双讲场景,也就是你和别人同时说话。多数方案的双讲处理很粗糙,两路声音混在一起,识别结果变成两句话糅在一起的四不像。我的处理方式是物理隔离:外放时把音量压到 30% 以下,或者干脆戴耳机。软件层面的回声消除在语音输入这种单向场景里收益很低,不值得花时间调。
5.3 静音门限吞首字:一个参数毁掉整段体验
这个问题我遇到过三次,每次都要排查半天才想起来。
静音门限(或者叫噪声门)设得偏高时,句首的轻声字会被判成噪声直接切掉。表现非常有规律:每句话的第一个字经常丢,尤其是"那个""这个""然后"这类起头轻声词。你会以为是识别模型的问题,其实是 VAD 在音频进入模型之前就把开头剪了。
验证方法很简单:把同一段话录下来,直接在工具里回放这段音频文件,而不是实时说话。如果回放时首字不丢,实时说话时丢,基本可以确定是 VAD 或者采集起始时机的问题。修法是降低门限值,或者在采集端加一个 200ms 的前置缓冲,让 VAD 有上下文可参考。
5.4 标点和自动纠错制造的"假流畅"
有的方案会自动加标点、自动把明显的口语赘词删掉、自动把数字转成阿拉伯数字。这些处理让最终文本看起来非常顺眼,主观流畅分虚高。
但我建议测评时把这些后处理全部关掉,先看"裸识别"的质量。原因有两个:一是后处理会掩盖真实的错误,二是自动纠错本身会引入新错误。我遇到过把"三期"自动改成"3期"、把"一千万"改成"1000万"的情况,语义没变但格式全乱了,在正式文稿里还得手动改回来。
如果要开这些功能,我建议单独记录一组"后处理开启"的数据,和裸识别数据并列比较,而不是混在一起看。
5.5 网络抖动与重连:长尾延迟的真正来源
前面提过弱网下延迟会飙升,但重连的影响比延迟更严重。我记录过几次重连的表现:重连之后,服务器端可能把断线前没确认的音频重新识别一遍,导致同一段话上屏两次;也可能直接丢掉断线期间的音频,导致中间缺一段。
这两种情况在短测里几乎遇不到,必须做长时间、带网络扰动的测试才能暴露。我的做法是用流量整形工具注入 1%~3% 的丢包和 50ms 的抖动,跑 15 分钟,看结果里有没有重复段落或者缺失段落。这个测试比任何参数调优都更能反映真实可用性。
6. 按用途选配置:不同场景该往哪边偏
做完这一轮,我的结论是:不存在"最好的实时语音输入方案",只存在"匹配场景的参数组合"。同一个工具,在口述写作和会议记录两种场景下,最优配置是相反的。
6.1 口述写作:优先稳定,容忍延迟
写长文时,最怕的是文字在背后被反复改写。所以我更看重回改次数和定稿延迟,可以接受首字延迟稍微高一点。
配置上,我会把刷新间隔调到 300~400ms,静音门限 500ms 左右,网络抖动缓冲给足 100~150ms。采集端用有线近场麦克风,固定增益,关掉所有降噪和自动增益。这样配置下,首字延迟大概 350ms,但整段话写下来几乎不用回头改,思路不会被打断。
6.2 会议记录与实时字幕:优先响应,容忍噪声
会议场景的诉求完全不同。你要的是"跟上",文字晚半秒没关系,但不能断、不能卡。而且说话人往往离麦克风远,环境噪声大。
这时候我会适当放宽静音门限到 300~400ms,让长句尽量不断;打开轻度降噪压住稳态底噪;接受更高的回改次数,因为会议记录本来就是速记,后面还要整理。输入源优先选指向性麦克风或者就近的手机,别用笔记本内置麦克风做远场拾音,那个差距太大了。
6.3 移动与嘈杂环境:先解决物理问题再调软件
车里、街上、咖啡厅这类场景,我踩过的教训是:软件调优的收益上限很低,物理层面的改善空间更大。
具体做法就三条:把手机或麦克风贴近嘴部 10~15cm;优先用带指向性的耳机麦克风而不是设备内置;避开风口和正对噪声源的方向。这三条做到,识别质量能有质变。反过来,如果在嘈杂环境里指望靠开一堆降噪算法硬扛,通常会得到"声音很干净但字错很多"的结果。
6.4 一张场景对照速查表
| 场景 | 首要目标 | 刷新间隔 | 静音门限 | 抖动缓冲 | 采集端 |
|---|---|---|---|---|---|
| 长文口述 | 少回改 | 300~400ms | 500ms | 100~150ms | 有线近场,定增益 |
| 会议记录 | 不断句 | 200~300ms | 350ms | 80~120ms | 指向性麦克风 |
| 实时字幕 | 低首字延迟 | 150~250ms | 300ms | 60~100ms | 近场,可开轻度降噪 |
| 移动场景 | 抗噪 | 250~350ms | 400ms | 120~200ms | 耳机麦克风贴嘴 |
表格里的数值都是我这套环境下的经验值,换设备、换网络肯定要重新标定。但调整方向是通用的:越靠近"写作",越往稳定和少回改偏;越靠近"速记",越往低延迟和不中断偏。
6.5 一个容易被忽略的收尾习惯
最后分享一个小习惯,是我用了两三个月才养成的:每说完一段,主动停顿一秒再开始下一段。
这一秒的停顿会触发端点检测,让系统把当前句子定稿,清空上下文缓冲。这样做的好处是下一句不会带着上一句的残余上下文乱猜,标点也更准。我一开始觉得这一秒很浪费,后来发现它省下的回改时间远超这一秒。尤其是口述长文时,段落边界清晰,后期整理的工作量能少一半。
还有一个小小的经验:测任何新方案,别在第一天就下结论。语音输入的主观感受受当天状态影响很大,嗓子状态、注意力、环境噪声都会变。我现在的做法是连续用三天,每天固定测同一段语料,取三天的中位数再判断。三天下来还觉得别扭的方案,基本就不用再试了。