StreamSpeech
一个模型搞定ASR、语音翻译与合成,ACL 2024同声传译SOTA开源方案
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
一个模型搞定ASR、语音翻译与合成,ACL 2024同声传译SOTA开源方案
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你是否曾想象过——在奥运会的赛场边,一位来自中国的记者只需要对着手机说话,瞬间就能听到流利的法语播报?或者在联合国大会上,各国代表的发言能实时被翻译成听众母语,并以语音形式播报出来,而不仅仅是字幕?这种「边听边译边说」的体验,正是 StreamSpeech 想要实现的目标。
传统的语音翻译系统如同一条精密的生产线:语音先被识别成文字(ASR),文字再被翻译成另一种语言(NMT),最后由语音合成(TTS)读出来。三套模型、三套权重、三个步骤,缺一不可。这条链路的问题显而易见——延迟高(每一步都要等上一步完成)、部署复杂(三套系统要同时跑)、模型各自为战(ASR 的错误会级联放大到翻译和合成)。
StreamSpeech 来自中国科学院计算技术研究所自然语言处理团队(ICTNLP),由 Shaolei Zhang、Qingkai Fang 等研究者在 ACL 2024 上正式发表。团队的核心思路非常直接:与其让三个模型「接力跑」,不如训练一个「全能选手」——一个模型同时学会听、译、说三种能力,通过多任务学习(Multi-task Learning)实现参数共享和联合优化。
这一思路的学术背景来自近年来语音处理领域的几大趋势:非自回归(Non-autoregressive)模型在翻译任务上的突破、Conformer 架构在语音识别中的统治地位、以及 CTC(Connectionist Temporal Classification)在流式解码上的效率优势。StreamSpeech 将这些技术融合在统一框架下,在 ACL 2024 上宣布了同声传译任务的新一代 SOTA 性能。

图1:StreamSpeech「All in One」统一模型架构,一个编码器共享 ASR、S2TT、S2ST 三个解码器
StreamSpeech 的架构可以用「一个编码器 + 三个解码器」来概括:
Conformer 编码器(Encoder) — 负责从语音中提取特征。Conformer 结合了 Transformer 的自注意力机制和卷积神经网络的高效局部建模能力,是当前语音识别领域最主流的编码器架构。输入为 80 维 Fbank 特征,经过多层 Conformer 块后输出统一的隐表示。
ASR 解码器 — 基于 Attention 的自回归解码器,将编码器输出转为文字。这是 StreamSpeech 的辅助任务之一,用于保证模型同时具备高质量的语音识别能力。
S2TT(Speech-to-Text Translation)解码器 — 将源语言语音直接翻译为目标语言文字,采用 UnitY 架构。UnitY 是 Meta fairseq 团队提出的双通道翻译架构,能同时生成源语言文字(用于预测翻译质量)和目标语言文字。
S2ST(Speech-to-Speech Translation)解码器 — 端到端语音翻译,输出的是离散单元(Discrete Units),而非文字。这些单元由预训练的 mHuBERT(Self-supervised speech representation)聚类生成,每个单元对应一个声学码本 ID。
HiFi-GAN 声码器(Vocoder) — 将离散单元转换为波形音频。由于 S2ST 输出的是离散单元而非原始音频,必须通过声码器将码本 ID 还原为连贯的语音波形。StreamSpeech 使用的是基于 mHuBERT 的 HiFi-GAN 声码器。
这种设计的精妙之处在于:所有任务共享同一个 Conformer 编码器,ASR 任务作为辅助目标帮助 S2TT/S2ST 任务学到更好的声学表征。多任务学习(MTL)让编码器被训练得更加「全能」,既理解语音内容、又理解语言转换规律。

图2:StreamSpeech 核心模块细节,包含 Conformer 编码器、ASR/S2TT/S2ST 解码器及 HiFi-GAN 声码器
同声传译(Simultaneous Translation)的核心挑战在于「Read-Write 策略」:模型何时开始输出(Read)?何时等待更多输入(Write)?这是决定延迟和质量的关键。
StreamSpeech 采用了 SimulEval 框架定义的 Agent 架构来解决这个问题。查看 agent/speech_to_speech.streamspeech.agent.py(27723 字节)的实现,核心策略是:等待-k-步进(Wait-k-Stride-N)——模型先等待接收 k 个音频帧,然后开始交替执行 Read(等待新输入)和 Write(生成输出)操作。
CTC(Connectionist Temporal Classification)在流式推理中扮演关键加速角色。CTC 通过允许输出序列中存在空白帧(blank token)来跳过不确定性高的帧,快速输出高置信度结果,有效缩短了从「开始听到」到「开始说话」之间的延迟。
在多任务学习层面,configs/fr-en/config_mtl_asr_st_ctcst.yaml 配置了 MTL 权重调度:ASR 任务权重帮助 S2TT 提升语言理解能力,CTC loss 辅助流式对齐,而主 S2ST loss 驱动最终翻译质量。这种「辅助任务帮主任务」的设计,是 StreamSpeech 训练稳定性和高质量的保障。

图3:StreamSpeech 中 ASR 任务的数据流与模型路径

图4:StreamSpeech 中 S2TT(语音到文字翻译)任务的解码路径

图5:StreamSpeech 在 Fr-En、Es-En、De-En 三语言对上的离线任务性能,与 SeamlessM4T、Translatotron2 等前沿模型对比
StreamSpeech 的评估覆盖两个维度:离线任务(整个音频输入完毕后再输出)和同声任务(实时流式处理)。
离线性能(图5):在 Fr-En、Es-En、De-En 三个语言对上的 ASR、BLEU(S2TT)、BLEU/Speaker Consistency(S2ST)指标,StreamSpeech 均实现了与 SeamlessM4T-v2 相当甚至更优的结果。这验证了「All in One」模型可以同时服务于离线和流式场景,而不需要额外的模型微调。
同声性能(图6):这是 StreamSpeech 最核心的亮点。在 SACreBLEU 和 COMET 指标上,StreamSpeech 同时实现了更低的延迟(AL ≤ 2.0)和更高的翻译质量,刷新了同声语音翻译的 SOTA。

图6:同声翻译任务中 StreamSpeech 的延迟-质量权衡曲线,显著优于同期方案
StreamSpeech 另一个独特能力是实时展示中间结果——在同声翻译过程中,用户可以同时看到 ASR 识别出的源语言文字和翻译后的目标语言文字,而非只能听到合成后的语音。这种「透明」的同声传译体验,在 GPT-4o 的 Advanced Voice 功能中也能看到类似的设计理念。
环境依赖:
StreamSpeech 的依赖链相当长,但 README 给出了清晰的安装步骤:
# 1. 安装 fairseq(含 StreamSpeech 定制)
cd fairseq
pip install --editable ./ --no-build-isolation
# 2. 安装 SimulEval(同声翻译评估框架)
cd SimulEval
pip install --editable ./
# 3. 下载预训练模型
# Fr-En、Es-En、De-En 三组模型从 HuggingFace 下载:
# https://huggingface.co/ICTNLP/StreamSpeech_Models/tree/main
# 4. 配置模型路径
# 修改 demo/config.json 中的 model-path、vocoder 等路径
# 5. 启动 Web Demo
cd demo
python app.py
# 访问 http://localhost:7860 体验 Gradio Web UI
Gradio Web UI:demo/app.py 实现了基于 Flask + Gradio 的交互界面,支持上传音频文件或实时录音,实时展示 ASR 文字、翻译文字和合成语音三路输出。UI 中通过轮询机制定期获取推理进度,提供流式更新体验。
推理脚本:demo/infer.py 是核心推理引擎,封装了 SimulEval 的 SpeechToSpeechAgent 接口,定义了 OnlineFeatureExtractor 实时提取 Fbank 特征类,处理 10ms 帧移(Shift)和 25ms 窗口(WINDOW_SIZE)的流式音频分帧逻辑,最终通过 HiFi-GAN 将离散单元还原为 24kHz 波形输出。
部署门槛高:这是 StreamSpeech 最主要的局限。没有任何容器化支持(无 Dockerfile),需要手动安装 fairseq 和 SimulEval 的 editable 模式,配置多个预训练模型(StreamSpeech 检查点 + HiFi-GAN 声码器 + mHuBERT 聚类模型),数据目录路径硬编码在配置文件中。本地部署对于没有 NLP/语音处理经验的开发者而言并不友好。
多语言支持有限:目前官方只提供了 Fr-En、Es-En、De-En 三组预训练模型。虽然框架本身支持扩展到更多语言,但需要完整的 CVSS-C 数据集训练和调参,对普通用户来说扩展成本很高。
流式推理资源占用:在线特征提取(OnlineFeatureExtractor)和流式解码需要持续运行 GPU 推理,对显存(建议 12GB+)和内存(32GB+)要求较高。实时同声翻译场景需要配备高性能 GPU 才能达到可接受的延迟。
学术代码风格:项目代码明显面向学术研究而非生产环境,缺乏完善的错误处理、参数校验和日志系统。Agent 策略硬编码在类中,不方便灵活调整 wait-k 参数。
StreamSpeech 的出现,反映了语音处理领域一个重要趋势:从多模型流水线向统一多任务模型的范式转变。过去五年,从 Hybrid CTC/Attention 到 Transducer 再到 Unified 模型,语音技术一直在追求「更少的人工干预 + 更多的共享知识」。StreamSpeech 以 ACL 2024 论文为背书,证明了多任务学习+共享编码器这条路线的可行性和优越性。
从更宏观的视角看,StreamSpeech 的「All in One」思路与 GPT-4o 的语音交互设计高度一致——用户说话的同时看到文字翻译、听到目标语言语音,这种「同时呈现多模态中间结果」的能力,正在成为新一代人机语音交互的标准配置。ICTNLP 团队后续推出的 Stream-Omni(GPT-4o 级别的语言-视觉-语音多模态聊天机器人)进一步扩展了这一理念。
对于开发者和研究者而言,StreamSpeech 的核心价值在于:提供了同声语音翻译任务的完整开源基准,包括预训练模型、评估框架(SimulEval)和多语言数据集(CVSS-C)。如果要研究流式翻译的延迟-质量权衡、或者探索新的 Agent 策略,这是一个不可多得的起点。
如果你正在构建实时翻译应用、会议同声传译系统、或流媒体语音处理管道,StreamSpeech 的架构设计和实现细节值得深入研究。尽管部署门槛较高,但其「一个模型、多重能力」的设计哲学,代表了语音 AI 走向统一化的重要方向。