实时听写与字幕
openasr live 从麦克风或系统音频中采集声音,经过 VAD(语音活动检测)分句后,逐句输出实时转写结果。支持流式中间结果的模型包还会在句内增量推送部分识别文本。
openasr live默认采集系统默认麦克风,以 text 格式逐行输出最终转写结果。按 Ctrl-C 结束会话。
--source 控制采集来源,可选 mic(默认)或 system(系统回环音频):
openasr live --source system使用 --list-devices 查看当前可用的输入设备及配置,然后用 --device 指定设备名称:
openasr live --list-devicesopenasr live --device "USB Microphone"如果需要在没有物理麦克风的环境下测试或演示,可以用 --input-file 从本地音频文件模拟实时流输入(支持 WAV、MP3、MP4、M4A、WEBM、FLAC、OGG):
openasr live --input-file recording.wav --format jsonl-f/--format 支持两种格式:
text(默认):每句一行,适合人工阅读和终端查看。jsonl:每行一个 JSON 对象,适合管道传入其他工具做进一步处理。
openasr live --source mic --max-seconds 5 --format jsonlVAD 参数调优
Section titled “VAD 参数调优”VAD 决定了何时开始和结束一句话。以下参数可以根据实际场景做精细调整:
| 参数 | 说明 |
|---|---|
--frame-duration-ms <10|20|30> | 实时帧时长,默认 20 毫秒 |
--speech-start-ms <N> | 判定”开始说话”所需的语音持续时长 |
--speech-stop-ms <N> | 判定”停止说话”所需的静音持续时长 |
--pre-roll-ms <N> | VAD 触发前保留的音频时长 |
--max-utterance-ms <N> | 单句最大时长,超过后强制切断 |
--no-speech-timeout-ms <N> | 初始无语音超时 |
--energy-threshold <F> | MVP VAD 的能量阈值 |
典型调优场景:
- 会议/对话:适当增大
--speech-stop-ms,避免说话人短暂停顿导致句子被过早切断。 - 快速指令:减小
--speech-start-ms,降低首字延迟。 - 嘈杂环境:提高
--energy-threshold,减少误触发。
流式中间结果
Section titled “流式中间结果”对于声明了 streaming-partial 能力的模型包,openasr live 会在句内增量推送部分识别文本。两个参数控制推送节奏:
| 参数 | 说明 | 默认值 |
|---|---|---|
--partial-interval-ms <N> | 两次中间结果之间的最小间隔 | 300 ms |
--partial-window-ms <N> | 用于生成中间结果的滑动窗口时长 | 3000 ms |
--diarize 为最终转写结果标注匿名说话人标签(SPEAKER_00、SPEAKER_01……):
openasr live --diarize首次使用时,如果本地尚未安装所需的 WeSpeaker 说话人嵌入能力包,传入 --diarize 即视为同意自动安装。
与 openasr transcribe 不同,openasr live 的 --diarize 没有 --speakers <n> 伴随参数。说话人登记等高级功能详见说话人分离参考。
--save 在会话结束时将完整转写记录导出到文件,文件扩展名决定导出格式:
openasr live --save session.srt支持 .txt、.json、.md、.srt、.vtt 五种格式。
搭配选项:
--save-join-segments:导出时将所有字幕段落合并为一个完整段落。--save-suggest-title:根据转写文本自动建议一个保守的标题。
OBS 字幕集成
Section titled “OBS 字幕集成”openasr live 可以将字幕实时写入一个本地文本文件,配合 OBS 的「文本(GDI+)」源的「从文件读取」功能,即可在直播画面中叠加实时字幕:
openasr live --obs-text-file ~/captions.txt --obs-max-lines 2| 参数 | 说明 |
|---|---|
--obs-text-file <PATH> | 字幕文本文件路径,OBS 文本源指向此文件 |
--obs-max-lines <N> | 文件中保留的最大行数,默认 3 |
--obs-clear-on-start | 会话开始时清空文件 |
--obs-clear-on-stop | 会话结束时清空文件 |
Markdown 笔记
Section titled “Markdown 笔记”会话结束时,可以同时输出一份 Markdown 格式的会话笔记:
openasr live --markdown-note ~/notes/meeting.md --markdown-suggest-title| 参数 | 说明 |
|---|---|
--markdown-note <PATH> | Markdown 笔记输出路径 |
--markdown-append | 追加内容而非覆盖文件 |
--markdown-title <STR> | 手动指定笔记标题 |
--markdown-suggest-title | 根据转写文本自动建议标题 |
| 参数 | 说明 |
|---|---|
--max-seconds <N> | 采集指定秒数后自动停止 |
--max-utterances <N> | 完成指定句数后自动停止 |
模型与网络行为
Section titled “模型与网络行为”openasr live 使用 native 后端在本机运行模型,通过 -m/--model 指定模型 ID(也可通过环境变量 OPENASR_MODEL 设置),或通过 --model-pack 直接指定本地 .oasr 模型包文件。
如果指定的模型尚未安装,CLI 会在交互式终端中弹出确认提示;传入 -y/--yes(或设置环境变量 OPENASR_ASSUME_YES)可跳过确认直接下载。传入 --offline(别名 --no-pull,或设置环境变量 OPENASR_OFFLINE)则完全禁止下载——模型未安装即报错退出。
OpenASR 不包含遥测,不会回退到云端,不会静默下载任何内容。native 后端采用 fail-closed 设计:遇到不支持的输入或路径时直接报错,而非编造部分结果。
可用模型见模型页面,CLI 完整参考见 CLI 文档。服务端的 WebSocket 流式转写接口(GET /v1/audio/realtime)与 openasr live 共享相同的事件体系(VAD、部分/最终转写片段、语音边界),详见本地 API 文档。