generated from Meekdai/Gmeek-template
-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
实时双工语音翻译(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. 硬件接线方案
最稳妥的硬件连接是:
- 两块 USB 免驱声卡: * 声卡 A 接电脑:电脑声音输出到声卡 A 的录音口。
- 声卡 B 接耳机/电脑麦克风:负责输出翻译后的声音。
- 音频隔离器: 电脑和树莓派共地可能会有严重的电磁滋滋声(地环路噪音),中间加个几十块钱的“音频消噪器”非常重要。
5. 软件架构建议
- 编程语言: Python (易开发) 或 Go/C++ (低延迟)。
- 核心库:
PyAudio(音频流捕捉) +Faster-Whisper+Piper-TTS。
替代思路:为什么不用电脑直接跑?
既然你有电脑,其实可以用 虚拟声卡 (Virtual Audio Cable / VoiceMeeter)。
- 在电脑上运行翻译软件,通过虚拟声卡截取视频通话音频,翻译后再推送到另一个虚拟麦克风。
- 树莓派的角色: 可以作为一个独立的翻译网关,专门处理音频 IO,减轻电脑视频通话时的 CPU 压力。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels