Skip to content

实时双工语音翻译系统 #33

@coldowl

Description

@coldowl

实时双工语音翻译(Real-time Full-Duplex Speech Translation) 系统设计
https://gemini.google.com/app/300942ee561bb648?hl=zh-cn

1. 系统数据流向图

实际上在树莓派上形成了一个“音频中转站”:

  • 路径 A (印 -> 中): 电脑音频输出 树莓派 Line-in -> ASR (语音转文字) -> MT (机器翻译) -> TTS (文字转语音) -> 树莓派 Line-out 你的耳机。
  • 路径 B (中 -> 印): 你的麦克风 树莓派输入 -> ASR -> MT -> TTS -> 树莓派输出 -> 电脑麦克风输入(虚拟或实体)。

2. 核心挑战:实时性

要达到“无感”,总延迟需要控制在 500ms - 1s 以内。但在树莓派 4B 上,会面临以下瓶颈:

A. 算力瓶颈

  • ASR (识别): 使用 Whisper 等模型,4B 跑 Tiny 版勉强实时,但印尼语识别率会下降。
  • TTS (合成): 高质量的 TTS(如 VITS 或边缘 AI 语音)在 4B 上合成 5 秒音频可能需要 2-3 秒,这会导致严重的对话断层。

B. IO 延迟

  • 音频的采样、缓冲处理以及多次模数/数模转换(ADC/DAC)会累积约 100-200ms 的硬件延迟。

3. 实施策略

为了实现“无感”,在树莓派本地跑重型模型是不切实际的,只能采用 “边缘采集 + 云端处理”“轻量化本地模型”

方案一:云端 API 模式(最快打通)

  • 工具: 使用腾讯、阿里、Google 或 OpenAI 的实时语音转译 API。
  • 实现: 树莓派仅负责音频流的采集和转发。
  • 优点: 翻译和识别极准,支持印尼语效果好。
  • 缺点: 依赖网络,有公网传输延迟。

方案二:本地轻量化(极致低延迟)

  • ASR: 使用 Whisper.cpp(针对 ARM 优化版)或 Sherpa-ONNX
  • MT: 使用针对移动端优化的 MarianMT 或简单的词典映射(如果场景固定)。
  • TTS: 使用 Piper。这是目前树莓派上最强的 TTS,它是基于神经网络的,但速度极快,几乎能瞬间出声。

4. 硬件接线方案

最稳妥的硬件连接是:

  1. 两块 USB 免驱声卡: * 声卡 A 接电脑:电脑声音输出到声卡 A 的录音口。
  • 声卡 B 接耳机/电脑麦克风:负责输出翻译后的声音。
  1. 音频隔离器: 电脑和树莓派共地可能会有严重的电磁滋滋声(地环路噪音),中间加个几十块钱的“音频消噪器”非常重要。

5. 软件架构建议

  • 编程语言: Python (易开发) 或 Go/C++ (低延迟)。
  • 核心库: PyAudio (音频流捕捉) + Faster-Whisper + Piper-TTS

替代思路:为什么不用电脑直接跑?

既然你有电脑,其实可以用 虚拟声卡 (Virtual Audio Cable / VoiceMeeter)

  • 在电脑上运行翻译软件,通过虚拟声卡截取视频通话音频,翻译后再推送到另一个虚拟麦克风。
  • 树莓派的角色: 可以作为一个独立的翻译网关,专门处理音频 IO,减轻电脑视频通话时的 CPU 压力。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions