GPAUP/nlp_team

0

stars

3

commits

Python

primary language

Jul 16, 2026

updated

README

会议/课堂双语字幕与端到端语音翻译系统

本仓库是综合实训 C 方向的团队交付代码,包含“课程要求模块”和“额外展示系统”两部分,两者的目标不同:

  • server_modules/:对应《2026 实训 C 方向》PPT 规定的 C1-C5 基础要求和进阶挑战项,包含各模块的独立实现、统一 JSON 接口、批量实验代码和轻量结果汇总。这部分是课程要求的主要交付内容。
  • meeting_system/:在完成课程要求之外,为了集中展示各模块在真实场景中的协作效果,团队额外开发的一套实时会议系统。系统将各模块接入会议录音、用户上传音频和浏览器麦克风,提供实时双语字幕、说话人标签、会议纪要、会议库、混合 RAG 和语音助手。这部分属于额外的产品化展示成果。

仓库不包含模型权重、API Key、个人实时录音、运行日志和大体积数据集。请按本文配置环境和数据。


1. 项目概述

1.1 项目目标

本项目包含两个层次的目标。

第一层是完成《2026 实训 C 方向》规定的课程任务。 团队分别实现 C1 语音数据处理、C2 ASR 语音识别、C3 级联语音模型推理、C4 端到端语音模型推理和 C5 TTS 文本转语音,并根据 PPT 要求完成多模型比较、音频鲁棒性、多语言翻译、ASR 后编辑、S2T/S2S、说话人风格或情感保持等进阶实验。各模块可以独立运行,并通过统一 JSON 字段和稳定样本 ID 完成上下游联调。

第二层是在课程要求之外开发一个可交互、可演示的实时会议系统。 该系统面向跨语言会议和课堂场景,将服务器实验中的技术路线接入历史会议录音、用户上传音频和浏览器麦克风,使模型结果能够以实时双语字幕、说话人标签、会议记录和语音助手的形式展示。展示系统提供两条地位相同的处理路线:

  1. C3 级联路线:实时 ASR -> 上下文纠错 -> 多语言翻译。
  2. C4 端到端路线:实时语音翻译服务直接返回源语言转写和目标语言翻译。

用户可以单独选择级联或端到端路线,也可以在对比模式下让两条路线接收同一份 16 kHz PCM 音频帧,观察字幕和延迟差异。会议结束后,系统继续生成阶段摘要、最终纪要和可检索的历史会议记录。该系统用于展示课程模块在实际应用场景中的组合效果,不替代 server_modules/ 中的独立实验和评价结果。

1.2 当前完成情况

工作类别完成情况
PPT 基础要求已完成 C1 音频处理、C2 ASR、C3 级联翻译、C4 端到端翻译和 C5 TTS,各模块均保留独立入口、输入输出和实验结果
PPT 进阶挑战项已完成多模型比较、音频变体鲁棒性、多语言翻译、ASR 后编辑、质量与时延评价、C3/C4 同数据对比、S2T/S2S 以及说话人风格或情感保持探索
额外展示系统已完成实时会议录音与上传、级联/端到端/对比三种路线、真实流式双语字幕、说话人标签、阶段摘要、最终纪要、会议库、混合 RAG 和语音助手
两部分的关系server_modules/ 用于完成和复核课程要求;meeting_system/ 在其基础上完成场景化集成和产品演示,两部分使用不同的运行入口和评价方式

2. 整体流程与模块结构

2.1 模块边界

模块主要入口主要职责输入输出
C1 音频处理server_modules/c1/code/c1_dataset_processing.pyc1_advanced_pipeline.py重采样、单声道转换、归一化、VAD 和音频变体构造原始 WAV、数据清单16 kHz WAV、更新后的 manifest
C2 ASRserver_modules/c2/code/c2_asr.pymeeting_pipeline.py批量 ASR、多模型比较、长音频 VAD 分段识别C1 音频、dataset.jsonidprediction_text、WER/CER、时延
C3 级联翻译server_modules/c3/code/c3_cascade.py读取 C2 JSON,使用 Qwen2.5-7B-Instruct 做可选后编辑和多语言翻译asr_predictions.json原文、修正文、译文和阶段时延
C4 端到端翻译server_modules/c4/code/c4_end2end.pyc4_qwen_omni_awq_end2end.pyc4_uniss_s2s_smoke.pySeamlessM4T、Qwen2.5-Omni-AWQ 的 S2T 及 UniSS S2S 实验音频 manifest目标文本、目标语音、指标和状态
C5 TTSserver_modules/C5_TTS/code/c5_tts.py将 C3/C4 文本结果合成为语音translationend2end_translationWAV 和 TTS 运行汇总
实时后端meeting_system/realtime/server.pyWebSocket 音频、两条模型路线、说话人事件、会议保存与纪要16 kHz PCM、控制事件partial/final 字幕、说话人、纪要事件
会议级声纹meeting_system/src/meeting_diarization.pyFSMN-VAD、CAM++、谱聚类/AHC 和字幕回写整场录音、字幕时间戳最终说话人时间线
会议知识库meeting_system/src/meeting_library.pymeeting_rag.py保存会议、构建证据块、混合检索会议记录与纪要检索证据和来源
前端meeting_system/web/app.py实时字幕、双路线对比、会议库和语音助手后端事件、会议数据Streamlit Web 界面

2.2 系统架构图

系统总体架构

2.3 完整数据流

会议录音 / 上传音频 / 浏览器麦克风
  -> 16 kHz 单声道 PCM
  -> 共享音频帧总线
     -> C3:实时 ASR -> 最近对话上下文纠错 -> LLM 翻译
     -> C4:实时端到端语音翻译
  -> 统一 partial/final 事件 + turn_id + 音频时间戳
  -> 实时说话人暂定标签
  -> 双语字幕与会议记录
  -> 会后会议级声纹校正
  -> 阶段摘要 / 最终纪要 / 行动项 / 风险 / 待确认问题
  -> 会议库 -> 混合 RAG -> 会议语音助手 -> TTS

历史录音演示中,播放器和模型共用一个 Web Audio 音源。浏览器只发送已经播放的 PCM 帧;对比模式将同一帧复制给两条路线,模型不会提前读取尚未播放的未来音频。

2.4 服务器模块协作格式

团队使用稳定样本 id 和 JSON 文件连接服务器模块:

common_data/dataset.json
  -> C1 更新 processed_audio
  -> C2 输出 outputs/latest/asr_predictions.json
  -> C3 读取 prediction_text,输出 translation

common_data/dataset.json
  -> C4 直接读取 processed_audio,输出 end2end_translation

C3/C4 JSON
  -> C5 通过 --text_field 选择 translation 或 end2end_translation

失败样本不会被静默删除,而是保留 statuserror,便于按 id 追踪和复现实验。


3. 模型、数据集与外部资源

3.1 主要模型

模块模型或方法用途运行方式
C2Whisper small / large-v3 / large-v3-turboParaformer EN、FSMN-VAD批量 ASR、多模型比较和长音频分段本地模型,建议 GPU
C3Qwen2.5-7B-InstructASR 后编辑和中英/中日/中韩翻译服务器本地模型
C4SeamlessM4T-v2-large端到端语音到文本翻译本地模型,建议 GPU
C4Qwen2.5-Omni-7B-AWQ端到端 S2T 全量实验和 S2S 探索本地 AWQ 低显存路线
C4UniSS论文保留源说话人音色和情感的表达性 S2S本地模型,建议 GPU
C5Fun-CosyVoice3-0.5B中英文文本转语音本地模型,建议 GPU
实时 C3Paraformer realtime + qwen-plus实时转写、上下文纠错和翻译本地 ASR + 阿里云 API
实时 C4qwen3.5-livetranslate-flash-realtime实时源语言转写和目标语言翻译阿里云实时 API
声纹FSMN-VAD、CAM++、ERes2NetV2、谱聚类、AHC实时暂定标签和会议级校正ModelScope 模型 + 本地聚类
RAG/TTStext-embedding-v4、qwen-plus、qwen-tts会议检索、回答和语音播报阿里云 API

模型权重和第三方模型源码不提交到 Git。仓库仅保留团队编写的下载、适配和实验脚本;请按照上游模型许可证使用。服务器各模块的模型目录通过命令行参数指定,会议系统的云端配置写入 .env。更详细的服务器模型路径与参数见各模块 README。

3.2 数据集

数据用途来源仓库位置
CREMA-D完整句子、情感语音、C3/C4 全量评价和 UniSS 风格保持样例公开数据集,需自行下载通过 server_modules/common_data/dataset.json 登记
TESS孤立词、情感语音和目标词命中评价公开数据集,需自行下载通过同一 manifest 登记
AMI Meeting Corpus多人会议流式字幕、说话人标签和会议库演示AMI 官方公开数据使用 meeting_system/scripts/download_more_ami.ps1 下载
浏览器麦克风/用户上传实际会议演示用户本地输入运行时保存在本地,默认被 Git 忽略

构造服务器公共 manifest:

cd server_modules
python scripts/build_dataset_manifest.py --help

数据字段定义见 server_modules/common_data/schema.md


4. 环境安装

4.1 本地会议系统

已配置环境可直接使用 your_envname

cd meeting_system
conda activate your_envname
pip install -r requirements.txt
Copy-Item .env.example .env

编辑 .env,至少设置:

DASHSCOPE_API_KEY=your_api_key
ALI_OPENAI_BASE_URL=your_compatible_api_base_url
ALI_DASHSCOPE_BASE_URL=your_dashscope_api_base_url

不要把实际 Key 提交到仓库。首次运行 FunASR/ModelScope 模型时需要联网下载并建立本地缓存。Windows 未安装 FFmpeg 时,WAV 通常可由 torchaudio/soundfile 读取;处理其他音频格式建议安装 FFmpeg。

4.2 服务器独立实验

服务器实验建议使用 Python 3.10、CUDA、PyTorch、Transformers、ModelScope/FunASR,并按模型需要安装 sentencepiecejiwerlibrosasoundfileaccelerateautoawq 或 CosyVoice 依赖。各模块依赖和命令存在差异,分别参阅:

  • server_modules/c2/README.md
  • server_modules/c4/README.md
  • server_modules/C5_TTS/README.md
  • server_modules/docs/c3_c4_acceptance_guide.md

5. 输入文件与配置

文件作用需要修改的内容
meeting_system/.env云端模型、API 地址和实时参数API Key、兼容接口地址、模型名
meeting_system/config/config.yaml本地应用配置数据目录、默认语言等
server_modules/common_data/dataset.jsonC1-C4 公共样本清单音频路径、语言、参考文本和元数据
server_modules/c2/outputs/latest/asr_predictions.jsonC2 到 C3 的正式接口通常由 C2 自动生成

核心 JSON 字段:

{
  "id": "cremad_1001_dfa_ang_xx",
  "raw_audio": "/path/to/original.wav",
  "processed_audio": "/path/to/16k_mono.wav",
  "source_lang": "en",
  "target_lang": "zh",
  "reference_text": "Don't forget a jacket.",
  "reference_translation": "别忘了带夹克。"
}

6. 完整流程 Demo

6.1 启动实时会议系统

打开两个 PowerShell 终端。

终端一,启动实时后端:

cd D:\path\to\nlp_team\meeting_system
conda activate your_envname
python -m uvicorn realtime.server:app --host 127.0.0.1 --port 8765

终端二,启动前端:

cd D:\path\to\nlp_team\meeting_system
conda activate your_envname
python -m streamlit run web/app.py --server.address 127.0.0.1 --server.port 8501

浏览器打开:http://127.0.0.1:8501/

6.2 可演示功能

Demo输入演示内容
AMI 历史会议下载后的 AMI Mix-Headset WAV音频播放与模型同帧输入、双语字幕、说话人标签
浏览器实时会议本地麦克风实时字幕、阶段摘要、会后录音保存和最终纪要
双路线对比同一段会议音频C3/C4 共享帧、字幕结果和延迟并列显示
会议库已完成会议录音、字幕、会议级说话人时间线、纪要和行动项
会议语音助手文本或语音问题混合 RAG 检索、必要时联网搜索、TTS 播报

双路线实时字幕

会议语音助手

6.3 测试

cd meeting_system
conda activate your_envname
python -m unittest discover -s tests -p "test_*.py" -v
python -m compileall -q realtime src scripts tests web

成功标准:后端端口 8765 和前端端口 8501 正常监听,页面可建立 WebSocket,模型事件进入字幕区域,结束会议后可在会议库查看保存结果。


7. 输出文件与实验结果

输出生成模块说明
asr_predictions.jsonC2样本 ID、ASR 文本、WER/CER、时延和状态
c3_results.jsonC3原始 ASR、可选修正文、多语言译文和阶段时延
c4_results.jsonC4端到端译文、时延、状态和错误字段
c5_results.json、WAVC5TTS 汇总和目标语音
meeting_system/outputs/meetings/会议系统本地会议录音、字幕、纪要和声纹时间线
meeting_system/outputs/meetings/rag/混合 RAGchunks.jsonvectors.npz 本地索引

轻量实验汇总位于 server_modules/results/。主要结论包括:

  • C3 使用 C2 JSON 中的显式 ASR 文本,便于观察识别错误是否继续传递到翻译。
  • SeamlessM4T-v2-large 在当前批量实验中速度较快;级联路线在部分任务上质量标签更高。
  • Qwen2.5-Omni-7B-AWQ 完成 CREMA-D 7442 条和 TESS 2800 条 S2T 全量实验;其 AWQ S2S 路线在当前环境中生成的语音不可用,因此没有作为最终 S2S 方案。
  • UniSS 用于表达性 S2S,尝试在翻译后保留源说话人的音色和情感。
  • 本地会议检索使用向量与关键词加权的混合 RAG,并保留来源会议和音频时间位置。

8. 协作实现说明

团队按照 C1-C5 划分服务器模块,同时通过公共 manifest 和稳定 id 协作:

  • C1 更新 processed_audio,不改变样本 ID。
  • C2 输出 id + prediction_text,作为 C3 固定入口。
  • C3 输出字段使用 translation,C4 输出字段使用 end2end_translation
  • C5 通过 --text_field 接入两条路线,输出文件继续沿用样本 ID。
  • 会议系统通过统一事件协议封装不同模型的 partial/final 结果,并使用 turn_id 处理异步字幕、翻译和说话人更新。

这种接口设计使各模块能够独立实验,也能在集成后按样本和发言轮次定位问题。


9. 已知问题与改进方向

问题当前原因改进方向
实时说话人标签可能合并或拆分错误无先验声纹、短发言和重叠语音使在线 embedding 不稳定增加人工标注 DER/JER 评测,研究更强的在线 diarization 与重叠语音处理
会后标签不能即时显示谱聚类需要整场上下文保留实时暂定标签,并探索滑动全局重聚类
上下文纠错可能产生不必要改写LLM 可能进行语义等价改写增加差异门控、术语白名单和置信度回退

10. 目录结构

nlp_team/
├── README.md
├── docs/images/                 # 架构图和 Demo 截图
├── server_modules/              # C1-C5 服务器实验与结果汇总
│   ├── c1/
│   ├── c2/
│   ├── c3/
│   ├── c4/
│   ├── C5_TTS/
│   ├── common_data/
│   ├── scripts/
│   └── results/
└── meeting_system/              # 实时会议产品
    ├── realtime/
    ├── src/
    ├── web/
    ├── scripts/
    ├── tests/
    ├── config/
    ├── .env.example
    └── requirements.txt

Contributors

GPAUP

3 commits

GPAUP/nlp_team

0

stars

3

commits

Python

primary language

Jul 16, 2026

updated

README

会议/课堂双语字幕与端到端语音翻译系统

本仓库是综合实训 C 方向的团队交付代码,包含“课程要求模块”和“额外展示系统”两部分,两者的目标不同:

  • server_modules/:对应《2026 实训 C 方向》PPT 规定的 C1-C5 基础要求和进阶挑战项,包含各模块的独立实现、统一 JSON 接口、批量实验代码和轻量结果汇总。这部分是课程要求的主要交付内容。
  • meeting_system/:在完成课程要求之外,为了集中展示各模块在真实场景中的协作效果,团队额外开发的一套实时会议系统。系统将各模块接入会议录音、用户上传音频和浏览器麦克风,提供实时双语字幕、说话人标签、会议纪要、会议库、混合 RAG 和语音助手。这部分属于额外的产品化展示成果。

仓库不包含模型权重、API Key、个人实时录音、运行日志和大体积数据集。请按本文配置环境和数据。


1. 项目概述

1.1 项目目标

本项目包含两个层次的目标。

第一层是完成《2026 实训 C 方向》规定的课程任务。 团队分别实现 C1 语音数据处理、C2 ASR 语音识别、C3 级联语音模型推理、C4 端到端语音模型推理和 C5 TTS 文本转语音,并根据 PPT 要求完成多模型比较、音频鲁棒性、多语言翻译、ASR 后编辑、S2T/S2S、说话人风格或情感保持等进阶实验。各模块可以独立运行,并通过统一 JSON 字段和稳定样本 ID 完成上下游联调。

第二层是在课程要求之外开发一个可交互、可演示的实时会议系统。 该系统面向跨语言会议和课堂场景,将服务器实验中的技术路线接入历史会议录音、用户上传音频和浏览器麦克风,使模型结果能够以实时双语字幕、说话人标签、会议记录和语音助手的形式展示。展示系统提供两条地位相同的处理路线:

  1. C3 级联路线:实时 ASR -> 上下文纠错 -> 多语言翻译。
  2. C4 端到端路线:实时语音翻译服务直接返回源语言转写和目标语言翻译。

用户可以单独选择级联或端到端路线,也可以在对比模式下让两条路线接收同一份 16 kHz PCM 音频帧,观察字幕和延迟差异。会议结束后,系统继续生成阶段摘要、最终纪要和可检索的历史会议记录。该系统用于展示课程模块在实际应用场景中的组合效果,不替代 server_modules/ 中的独立实验和评价结果。

1.2 当前完成情况

工作类别完成情况
PPT 基础要求已完成 C1 音频处理、C2 ASR、C3 级联翻译、C4 端到端翻译和 C5 TTS,各模块均保留独立入口、输入输出和实验结果
PPT 进阶挑战项已完成多模型比较、音频变体鲁棒性、多语言翻译、ASR 后编辑、质量与时延评价、C3/C4 同数据对比、S2T/S2S 以及说话人风格或情感保持探索
额外展示系统已完成实时会议录音与上传、级联/端到端/对比三种路线、真实流式双语字幕、说话人标签、阶段摘要、最终纪要、会议库、混合 RAG 和语音助手
两部分的关系server_modules/ 用于完成和复核课程要求;meeting_system/ 在其基础上完成场景化集成和产品演示,两部分使用不同的运行入口和评价方式

2. 整体流程与模块结构

2.1 模块边界

模块主要入口主要职责输入输出
C1 音频处理server_modules/c1/code/c1_dataset_processing.pyc1_advanced_pipeline.py重采样、单声道转换、归一化、VAD 和音频变体构造原始 WAV、数据清单16 kHz WAV、更新后的 manifest
C2 ASRserver_modules/c2/code/c2_asr.pymeeting_pipeline.py批量 ASR、多模型比较、长音频 VAD 分段识别C1 音频、dataset.jsonidprediction_text、WER/CER、时延
C3 级联翻译server_modules/c3/code/c3_cascade.py读取 C2 JSON,使用 Qwen2.5-7B-Instruct 做可选后编辑和多语言翻译asr_predictions.json原文、修正文、译文和阶段时延
C4 端到端翻译server_modules/c4/code/c4_end2end.pyc4_qwen_omni_awq_end2end.pyc4_uniss_s2s_smoke.pySeamlessM4T、Qwen2.5-Omni-AWQ 的 S2T 及 UniSS S2S 实验音频 manifest目标文本、目标语音、指标和状态
C5 TTSserver_modules/C5_TTS/code/c5_tts.py将 C3/C4 文本结果合成为语音translationend2end_translationWAV 和 TTS 运行汇总
实时后端meeting_system/realtime/server.pyWebSocket 音频、两条模型路线、说话人事件、会议保存与纪要16 kHz PCM、控制事件partial/final 字幕、说话人、纪要事件
会议级声纹meeting_system/src/meeting_diarization.pyFSMN-VAD、CAM++、谱聚类/AHC 和字幕回写整场录音、字幕时间戳最终说话人时间线
会议知识库meeting_system/src/meeting_library.pymeeting_rag.py保存会议、构建证据块、混合检索会议记录与纪要检索证据和来源
前端meeting_system/web/app.py实时字幕、双路线对比、会议库和语音助手后端事件、会议数据Streamlit Web 界面

2.2 系统架构图

系统总体架构

2.3 完整数据流

会议录音 / 上传音频 / 浏览器麦克风
  -> 16 kHz 单声道 PCM
  -> 共享音频帧总线
     -> C3:实时 ASR -> 最近对话上下文纠错 -> LLM 翻译
     -> C4:实时端到端语音翻译
  -> 统一 partial/final 事件 + turn_id + 音频时间戳
  -> 实时说话人暂定标签
  -> 双语字幕与会议记录
  -> 会后会议级声纹校正
  -> 阶段摘要 / 最终纪要 / 行动项 / 风险 / 待确认问题
  -> 会议库 -> 混合 RAG -> 会议语音助手 -> TTS

历史录音演示中,播放器和模型共用一个 Web Audio 音源。浏览器只发送已经播放的 PCM 帧;对比模式将同一帧复制给两条路线,模型不会提前读取尚未播放的未来音频。

2.4 服务器模块协作格式

团队使用稳定样本 id 和 JSON 文件连接服务器模块:

common_data/dataset.json
  -> C1 更新 processed_audio
  -> C2 输出 outputs/latest/asr_predictions.json
  -> C3 读取 prediction_text,输出 translation

common_data/dataset.json
  -> C4 直接读取 processed_audio,输出 end2end_translation

C3/C4 JSON
  -> C5 通过 --text_field 选择 translation 或 end2end_translation

失败样本不会被静默删除,而是保留 statuserror,便于按 id 追踪和复现实验。


3. 模型、数据集与外部资源

3.1 主要模型

模块模型或方法用途运行方式
C2Whisper small / large-v3 / large-v3-turboParaformer EN、FSMN-VAD批量 ASR、多模型比较和长音频分段本地模型,建议 GPU
C3Qwen2.5-7B-InstructASR 后编辑和中英/中日/中韩翻译服务器本地模型
C4SeamlessM4T-v2-large端到端语音到文本翻译本地模型,建议 GPU
C4Qwen2.5-Omni-7B-AWQ端到端 S2T 全量实验和 S2S 探索本地 AWQ 低显存路线
C4UniSS论文保留源说话人音色和情感的表达性 S2S本地模型,建议 GPU
C5Fun-CosyVoice3-0.5B中英文文本转语音本地模型,建议 GPU
实时 C3Paraformer realtime + qwen-plus实时转写、上下文纠错和翻译本地 ASR + 阿里云 API
实时 C4qwen3.5-livetranslate-flash-realtime实时源语言转写和目标语言翻译阿里云实时 API
声纹FSMN-VAD、CAM++、ERes2NetV2、谱聚类、AHC实时暂定标签和会议级校正ModelScope 模型 + 本地聚类
RAG/TTStext-embedding-v4、qwen-plus、qwen-tts会议检索、回答和语音播报阿里云 API

模型权重和第三方模型源码不提交到 Git。仓库仅保留团队编写的下载、适配和实验脚本;请按照上游模型许可证使用。服务器各模块的模型目录通过命令行参数指定,会议系统的云端配置写入 .env。更详细的服务器模型路径与参数见各模块 README。

3.2 数据集

数据用途来源仓库位置
CREMA-D完整句子、情感语音、C3/C4 全量评价和 UniSS 风格保持样例公开数据集,需自行下载通过 server_modules/common_data/dataset.json 登记
TESS孤立词、情感语音和目标词命中评价公开数据集,需自行下载通过同一 manifest 登记
AMI Meeting Corpus多人会议流式字幕、说话人标签和会议库演示AMI 官方公开数据使用 meeting_system/scripts/download_more_ami.ps1 下载
浏览器麦克风/用户上传实际会议演示用户本地输入运行时保存在本地,默认被 Git 忽略

构造服务器公共 manifest:

cd server_modules
python scripts/build_dataset_manifest.py --help

数据字段定义见 server_modules/common_data/schema.md


4. 环境安装

4.1 本地会议系统

已配置环境可直接使用 your_envname

cd meeting_system
conda activate your_envname
pip install -r requirements.txt
Copy-Item .env.example .env

编辑 .env,至少设置:

DASHSCOPE_API_KEY=your_api_key
ALI_OPENAI_BASE_URL=your_compatible_api_base_url
ALI_DASHSCOPE_BASE_URL=your_dashscope_api_base_url

不要把实际 Key 提交到仓库。首次运行 FunASR/ModelScope 模型时需要联网下载并建立本地缓存。Windows 未安装 FFmpeg 时,WAV 通常可由 torchaudio/soundfile 读取;处理其他音频格式建议安装 FFmpeg。

4.2 服务器独立实验

服务器实验建议使用 Python 3.10、CUDA、PyTorch、Transformers、ModelScope/FunASR,并按模型需要安装 sentencepiecejiwerlibrosasoundfileaccelerateautoawq 或 CosyVoice 依赖。各模块依赖和命令存在差异,分别参阅:

  • server_modules/c2/README.md
  • server_modules/c4/README.md
  • server_modules/C5_TTS/README.md
  • server_modules/docs/c3_c4_acceptance_guide.md

5. 输入文件与配置

文件作用需要修改的内容
meeting_system/.env云端模型、API 地址和实时参数API Key、兼容接口地址、模型名
meeting_system/config/config.yaml本地应用配置数据目录、默认语言等
server_modules/common_data/dataset.jsonC1-C4 公共样本清单音频路径、语言、参考文本和元数据
server_modules/c2/outputs/latest/asr_predictions.jsonC2 到 C3 的正式接口通常由 C2 自动生成

核心 JSON 字段:

{
  "id": "cremad_1001_dfa_ang_xx",
  "raw_audio": "/path/to/original.wav",
  "processed_audio": "/path/to/16k_mono.wav",
  "source_lang": "en",
  "target_lang": "zh",
  "reference_text": "Don't forget a jacket.",
  "reference_translation": "别忘了带夹克。"
}

6. 完整流程 Demo

6.1 启动实时会议系统

打开两个 PowerShell 终端。

终端一,启动实时后端:

cd D:\path\to\nlp_team\meeting_system
conda activate your_envname
python -m uvicorn realtime.server:app --host 127.0.0.1 --port 8765

终端二,启动前端:

cd D:\path\to\nlp_team\meeting_system
conda activate your_envname
python -m streamlit run web/app.py --server.address 127.0.0.1 --server.port 8501

浏览器打开:http://127.0.0.1:8501/

6.2 可演示功能

Demo输入演示内容
AMI 历史会议下载后的 AMI Mix-Headset WAV音频播放与模型同帧输入、双语字幕、说话人标签
浏览器实时会议本地麦克风实时字幕、阶段摘要、会后录音保存和最终纪要
双路线对比同一段会议音频C3/C4 共享帧、字幕结果和延迟并列显示
会议库已完成会议录音、字幕、会议级说话人时间线、纪要和行动项
会议语音助手文本或语音问题混合 RAG 检索、必要时联网搜索、TTS 播报

双路线实时字幕

会议语音助手

6.3 测试

cd meeting_system
conda activate your_envname
python -m unittest discover -s tests -p "test_*.py" -v
python -m compileall -q realtime src scripts tests web

成功标准:后端端口 8765 和前端端口 8501 正常监听,页面可建立 WebSocket,模型事件进入字幕区域,结束会议后可在会议库查看保存结果。


7. 输出文件与实验结果

输出生成模块说明
asr_predictions.jsonC2样本 ID、ASR 文本、WER/CER、时延和状态
c3_results.jsonC3原始 ASR、可选修正文、多语言译文和阶段时延
c4_results.jsonC4端到端译文、时延、状态和错误字段
c5_results.json、WAVC5TTS 汇总和目标语音
meeting_system/outputs/meetings/会议系统本地会议录音、字幕、纪要和声纹时间线
meeting_system/outputs/meetings/rag/混合 RAGchunks.jsonvectors.npz 本地索引

轻量实验汇总位于 server_modules/results/。主要结论包括:

  • C3 使用 C2 JSON 中的显式 ASR 文本,便于观察识别错误是否继续传递到翻译。
  • SeamlessM4T-v2-large 在当前批量实验中速度较快;级联路线在部分任务上质量标签更高。
  • Qwen2.5-Omni-7B-AWQ 完成 CREMA-D 7442 条和 TESS 2800 条 S2T 全量实验;其 AWQ S2S 路线在当前环境中生成的语音不可用,因此没有作为最终 S2S 方案。
  • UniSS 用于表达性 S2S,尝试在翻译后保留源说话人的音色和情感。
  • 本地会议检索使用向量与关键词加权的混合 RAG,并保留来源会议和音频时间位置。

8. 协作实现说明

团队按照 C1-C5 划分服务器模块,同时通过公共 manifest 和稳定 id 协作:

  • C1 更新 processed_audio,不改变样本 ID。
  • C2 输出 id + prediction_text,作为 C3 固定入口。
  • C3 输出字段使用 translation,C4 输出字段使用 end2end_translation
  • C5 通过 --text_field 接入两条路线,输出文件继续沿用样本 ID。
  • 会议系统通过统一事件协议封装不同模型的 partial/final 结果,并使用 turn_id 处理异步字幕、翻译和说话人更新。

这种接口设计使各模块能够独立实验,也能在集成后按样本和发言轮次定位问题。


9. 已知问题与改进方向

问题当前原因改进方向
实时说话人标签可能合并或拆分错误无先验声纹、短发言和重叠语音使在线 embedding 不稳定增加人工标注 DER/JER 评测,研究更强的在线 diarization 与重叠语音处理
会后标签不能即时显示谱聚类需要整场上下文保留实时暂定标签,并探索滑动全局重聚类
上下文纠错可能产生不必要改写LLM 可能进行语义等价改写增加差异门控、术语白名单和置信度回退

10. 目录结构

nlp_team/
├── README.md
├── docs/images/                 # 架构图和 Demo 截图
├── server_modules/              # C1-C5 服务器实验与结果汇总
│   ├── c1/
│   ├── c2/
│   ├── c3/
│   ├── c4/
│   ├── C5_TTS/
│   ├── common_data/
│   ├── scripts/
│   └── results/
└── meeting_system/              # 实时会议产品
    ├── realtime/
    ├── src/
    ├── web/
    ├── scripts/
    ├── tests/
    ├── config/
    ├── .env.example
    └── requirements.txt

Contributors

GPAUP

3 commits

Languages

Python

94.3%

Shell

4.0%