Skip to content

ASR Provider

DeLive 通过统一的 Provider 注册机制支持六种 ASR 后端。每个 Provider 实现相同的接口契约,但使用不同的传输和音频处理策略。

Provider 对比

Provider类型传输方式音频格式流式翻译说话人分离
Soniox V4云端WebSocketMediaRecorder (WebM/Opus)
火山引擎云端WebSocket(经代理)AudioWorklet (PCM16)
Groq云端REST(批量)AudioWorklet (PCM16)
硅基流动云端REST(批量)AudioWorklet (PCM16)
本地 OpenAI本地REST(批量)MediaRecorder (WebM/Opus)
whisper.cpp本地REST(本地)AudioWorklet (PCM16)

执行模式

实时流式

Soniox火山引擎 使用。音频块通过 WebSocket 连接持续发送,转录更新实时到达。

  • Soniox 发出 Token 级事件prefersTokenEvents: true),实现细粒度文本更新
  • 火山引擎使用本地代理(端口 23456 的 /ws/volc)注入所需的认证 Header

窗口批处理

Groq硅基流动本地 OpenAI 兼容whisper.cpp 使用。音频在滚动缓冲区(最长 45 秒)中累积,定期通过 REST 调用重新转录整个窗口。

  • 定时模式(Groq、硅基流动、whisper.cpp):每 1.5 秒重新转录
  • 防抖模式(本地 OpenAI):最后一个音频块到达后 1200ms 重新转录
  • TranscriptStabilizer 比较连续转录结果,提交稳定文本前缀,防止文本闪烁

Electron 托管运行时

whisper.cpp 使用。DeLive 管理 whisper-server 二进制文件的生命周期:

  1. 导入或下载二进制文件和模型
  2. DeLive 启动进程并等待 HTTP 就绪(最长 20 秒)
  3. 音频以 WAV 格式发送到 POST /inference
  4. 断开连接或应用退出时停止进程

Soniox V4

功能最丰富的 Provider,支持实时流式、翻译和说话人分离。

必填: apiKey

可选: modellanguageHintstranslationEnabledtranslationTargetLanguageenableSpeakerDiarization

火山引擎

中文优化的实时流式服务,通过内置代理工作。

必填: appKeyaccessKey

可选: languageHints

浏览器无法设置自定义 WebSocket Header,因此 DeLive 在 Electron 主进程中运行内置 HTTP 代理,将 PCM16 音频转发到字节跳动的 openspeech.bytedance.com 端点并附加所需的认证 Header。

Groq

通过 Groq 高性能推理 API 使用 Whisper large-v3-turbo / large-v3

必填: apiKey

可选: modellanguageHints

硅基流动

通过硅基流动 API 使用 SenseVoice、TeleSpeech 和通义千问 Omni 模型。

必填: apiKey

可选: modellanguageHints

本地 OpenAI 兼容

兼容 Ollama 或任何暴露 OpenAI 兼容音频转录端点的服务。

必填: baseUrlmodel

可选: apiKeylanguageHints

DeLive 可探测 baseUrl 处的服务,通过 /v1/models 列出已安装模型,如检测到 Ollama 还可拉取模型。

本地 whisper.cpp

使用 whisper-server 二进制文件的完全离线转录。

必填: modelPath

可选: binaryPathport(默认 8177)、languageHints

DeLive 可导入或下载二进制文件和模型文件。静音音频块会自动跳过以减少不必要的推理。

Released under the Apache 2.0 License.