本仓库是综合实训 C 方向的团队交付代码,包含“课程要求模块”和“额外展示系统”两部分,两者的目标不同:
server_modules/:对应《2026 实训 C 方向》PPT 规定的 C1-C5 基础要求和进阶挑战项,包含各模块的独立实现、统一 JSON 接口、批量实验代码和轻量结果汇总。这部分是课程要求的主要交付内容。meeting_system/:在完成课程要求之外,为了集中展示各模块在真实场景中的协作效果,团队额外开发的一套实时会议系统。系统将各模块接入会议录音、用户上传音频和浏览器麦克风,提供实时双语字幕、说话人标签、会议纪要、会议库、混合 RAG 和语音助手。这部分属于额外的产品化展示成果。仓库不包含模型权重、API Key、个人实时录音、运行日志和大体积数据集。请按本文配置环境和数据。
本项目包含两个层次的目标。
第一层是完成《2026 实训 C 方向》规定的课程任务。 团队分别实现 C1 语音数据处理、C2 ASR 语音识别、C3 级联语音模型推理、C4 端到端语音模型推理和 C5 TTS 文本转语音,并根据 PPT 要求完成多模型比较、音频鲁棒性、多语言翻译、ASR 后编辑、S2T/S2S、说话人风格或情感保持等进阶实验。各模块可以独立运行,并通过统一 JSON 字段和稳定样本 ID 完成上下游联调。
第二层是在课程要求之外开发一个可交互、可演示的实时会议系统。 该系统面向跨语言会议和课堂场景,将服务器实验中的技术路线接入历史会议录音、用户上传音频和浏览器麦克风,使模型结果能够以实时双语字幕、说话人标签、会议记录和语音助手的形式展示。展示系统提供两条地位相同的处理路线:
用户可以单独选择级联或端到端路线,也可以在对比模式下让两条路线接收同一份 16 kHz PCM 音频帧,观察字幕和延迟差异。会议结束后,系统继续生成阶段摘要、最终纪要和可检索的历史会议记录。该系统用于展示课程模块在实际应用场景中的组合效果,不替代 server_modules/ 中的独立实验和评价结果。
| 工作类别 | 完成情况 |
|---|---|
| PPT 基础要求 | 已完成 C1 音频处理、C2 ASR、C3 级联翻译、C4 端到端翻译和 C5 TTS,各模块均保留独立入口、输入输出和实验结果 |
| PPT 进阶挑战项 | 已完成多模型比较、音频变体鲁棒性、多语言翻译、ASR 后编辑、质量与时延评价、C3/C4 同数据对比、S2T/S2S 以及说话人风格或情感保持探索 |
| 额外展示系统 | 已完成实时会议录音与上传、级联/端到端/对比三种路线、真实流式双语字幕、说话人标签、阶段摘要、最终纪要、会议库、混合 RAG 和语音助手 |
| 两部分的关系 | server_modules/ 用于完成和复核课程要求;meeting_system/ 在其基础上完成场景化集成和产品演示,两部分使用不同的运行入口和评价方式 |
| 模块 | 主要入口 | 主要职责 | 输入 | 输出 |
|---|---|---|---|---|
| C1 音频处理 | server_modules/c1/code/c1_dataset_processing.py、c1_advanced_pipeline.py | 重采样、单声道转换、归一化、VAD 和音频变体构造 | 原始 WAV、数据清单 | 16 kHz WAV、更新后的 manifest |
| C2 ASR | server_modules/c2/code/c2_asr.py、meeting_pipeline.py | 批量 ASR、多模型比较、长音频 VAD 分段识别 | C1 音频、dataset.json | id、prediction_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.py、c4_qwen_omni_awq_end2end.py、c4_uniss_s2s_smoke.py | SeamlessM4T、Qwen2.5-Omni-AWQ 的 S2T 及 UniSS S2S 实验 | 音频 manifest | 目标文本、目标语音、指标和状态 |
| C5 TTS | server_modules/C5_TTS/code/c5_tts.py | 将 C3/C4 文本结果合成为语音 | translation 或 end2end_translation | WAV 和 TTS 运行汇总 |
| 实时后端 | meeting_system/realtime/server.py | WebSocket 音频、两条模型路线、说话人事件、会议保存与纪要 | 16 kHz PCM、控制事件 | partial/final 字幕、说话人、纪要事件 |
| 会议级声纹 | meeting_system/src/meeting_diarization.py | FSMN-VAD、CAM++、谱聚类/AHC 和字幕回写 | 整场录音、字幕时间戳 | 最终说话人时间线 |
| 会议知识库 | meeting_system/src/meeting_library.py、meeting_rag.py | 保存会议、构建证据块、混合检索 | 会议记录与纪要 | 检索证据和来源 |
| 前端 | meeting_system/web/app.py | 实时字幕、双路线对比、会议库和语音助手 | 后端事件、会议数据 | Streamlit Web 界面 |
会议录音 / 上传音频 / 浏览器麦克风
-> 16 kHz 单声道 PCM
-> 共享音频帧总线
-> C3:实时 ASR -> 最近对话上下文纠错 -> LLM 翻译
-> C4:实时端到端语音翻译
-> 统一 partial/final 事件 + turn_id + 音频时间戳
-> 实时说话人暂定标签
-> 双语字幕与会议记录
-> 会后会议级声纹校正
-> 阶段摘要 / 最终纪要 / 行动项 / 风险 / 待确认问题
-> 会议库 -> 混合 RAG -> 会议语音助手 -> TTS
历史录音演示中,播放器和模型共用一个 Web Audio 音源。浏览器只发送已经播放的 PCM 帧;对比模式将同一帧复制给两条路线,模型不会提前读取尚未播放的未来音频。
团队使用稳定样本 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
失败样本不会被静默删除,而是保留 status 和 error,便于按 id 追踪和复现实验。
| 模块 | 模型或方法 | 用途 | 运行方式 |
|---|---|---|---|
| C2 | Whisper small / large-v3 / large-v3-turbo、Paraformer EN、FSMN-VAD | 批量 ASR、多模型比较和长音频分段 | 本地模型,建议 GPU |
| C3 | Qwen2.5-7B-Instruct | ASR 后编辑和中英/中日/中韩翻译 | 服务器本地模型 |
| C4 | SeamlessM4T-v2-large | 端到端语音到文本翻译 | 本地模型,建议 GPU |
| C4 | Qwen2.5-Omni-7B-AWQ | 端到端 S2T 全量实验和 S2S 探索 | 本地 AWQ 低显存路线 |
| C4 | UniSS(论文) | 保留源说话人音色和情感的表达性 S2S | 本地模型,建议 GPU |
| C5 | Fun-CosyVoice3-0.5B | 中英文文本转语音 | 本地模型,建议 GPU |
| 实时 C3 | Paraformer realtime + qwen-plus | 实时转写、上下文纠错和翻译 | 本地 ASR + 阿里云 API |
| 实时 C4 | qwen3.5-livetranslate-flash-realtime | 实时源语言转写和目标语言翻译 | 阿里云实时 API |
| 声纹 | FSMN-VAD、CAM++、ERes2NetV2、谱聚类、AHC | 实时暂定标签和会议级校正 | ModelScope 模型 + 本地聚类 |
| RAG/TTS | text-embedding-v4、qwen-plus、qwen-tts | 会议检索、回答和语音播报 | 阿里云 API |
模型权重和第三方模型源码不提交到 Git。仓库仅保留团队编写的下载、适配和实验脚本;请按照上游模型许可证使用。服务器各模块的模型目录通过命令行参数指定,会议系统的云端配置写入 .env。更详细的服务器模型路径与参数见各模块 README。
| 数据 | 用途 | 来源 | 仓库位置 |
|---|---|---|---|
| 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。
已配置环境可直接使用 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。
服务器实验建议使用 Python 3.10、CUDA、PyTorch、Transformers、ModelScope/FunASR,并按模型需要安装 sentencepiece、jiwer、librosa、soundfile、accelerate、autoawq 或 CosyVoice 依赖。各模块依赖和命令存在差异,分别参阅:
server_modules/c2/README.mdserver_modules/c4/README.mdserver_modules/C5_TTS/README.mdserver_modules/docs/c3_c4_acceptance_guide.md| 文件 | 作用 | 需要修改的内容 |
|---|---|---|
meeting_system/.env | 云端模型、API 地址和实时参数 | API Key、兼容接口地址、模型名 |
meeting_system/config/config.yaml | 本地应用配置 | 数据目录、默认语言等 |
server_modules/common_data/dataset.json | C1-C4 公共样本清单 | 音频路径、语言、参考文本和元数据 |
server_modules/c2/outputs/latest/asr_predictions.json | C2 到 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": "别忘了带夹克。"
}
打开两个 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/
| Demo | 输入 | 演示内容 |
|---|---|---|
| AMI 历史会议 | 下载后的 AMI Mix-Headset WAV | 音频播放与模型同帧输入、双语字幕、说话人标签 |
| 浏览器实时会议 | 本地麦克风 | 实时字幕、阶段摘要、会后录音保存和最终纪要 |
| 双路线对比 | 同一段会议音频 | C3/C4 共享帧、字幕结果和延迟并列显示 |
| 会议库 | 已完成会议 | 录音、字幕、会议级说话人时间线、纪要和行动项 |
| 会议语音助手 | 文本或语音问题 | 混合 RAG 检索、必要时联网搜索、TTS 播报 |


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,模型事件进入字幕区域,结束会议后可在会议库查看保存结果。
| 输出 | 生成模块 | 说明 |
|---|---|---|
asr_predictions.json | C2 | 样本 ID、ASR 文本、WER/CER、时延和状态 |
c3_results.json | C3 | 原始 ASR、可选修正文、多语言译文和阶段时延 |
c4_results.json | C4 | 端到端译文、时延、状态和错误字段 |
c5_results.json、WAV | C5 | TTS 汇总和目标语音 |
meeting_system/outputs/meetings/ | 会议系统 | 本地会议录音、字幕、纪要和声纹时间线 |
meeting_system/outputs/meetings/rag/ | 混合 RAG | chunks.json 和 vectors.npz 本地索引 |
轻量实验汇总位于 server_modules/results/。主要结论包括:
团队按照 C1-C5 划分服务器模块,同时通过公共 manifest 和稳定 id 协作:
processed_audio,不改变样本 ID。id + prediction_text,作为 C3 固定入口。translation,C4 输出字段使用 end2end_translation。--text_field 接入两条路线,输出文件继续沿用样本 ID。turn_id 处理异步字幕、翻译和说话人更新。这种接口设计使各模块能够独立实验,也能在集成后按样本和发言轮次定位问题。
| 问题 | 当前原因 | 改进方向 |
|---|---|---|
| 实时说话人标签可能合并或拆分错误 | 无先验声纹、短发言和重叠语音使在线 embedding 不稳定 | 增加人工标注 DER/JER 评测,研究更强的在线 diarization 与重叠语音处理 |
| 会后标签不能即时显示 | 谱聚类需要整场上下文 | 保留实时暂定标签,并探索滑动全局重聚类 |
| 上下文纠错可能产生不必要改写 | LLM 可能进行语义等价改写 | 增加差异门控、术语白名单和置信度回退 |
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
3 commits
Python
94.3%
Shell
4.0%
本仓库是综合实训 C 方向的团队交付代码,包含“课程要求模块”和“额外展示系统”两部分,两者的目标不同:
server_modules/:对应《2026 实训 C 方向》PPT 规定的 C1-C5 基础要求和进阶挑战项,包含各模块的独立实现、统一 JSON 接口、批量实验代码和轻量结果汇总。这部分是课程要求的主要交付内容。meeting_system/:在完成课程要求之外,为了集中展示各模块在真实场景中的协作效果,团队额外开发的一套实时会议系统。系统将各模块接入会议录音、用户上传音频和浏览器麦克风,提供实时双语字幕、说话人标签、会议纪要、会议库、混合 RAG 和语音助手。这部分属于额外的产品化展示成果。仓库不包含模型权重、API Key、个人实时录音、运行日志和大体积数据集。请按本文配置环境和数据。
本项目包含两个层次的目标。
第一层是完成《2026 实训 C 方向》规定的课程任务。 团队分别实现 C1 语音数据处理、C2 ASR 语音识别、C3 级联语音模型推理、C4 端到端语音模型推理和 C5 TTS 文本转语音,并根据 PPT 要求完成多模型比较、音频鲁棒性、多语言翻译、ASR 后编辑、S2T/S2S、说话人风格或情感保持等进阶实验。各模块可以独立运行,并通过统一 JSON 字段和稳定样本 ID 完成上下游联调。
第二层是在课程要求之外开发一个可交互、可演示的实时会议系统。 该系统面向跨语言会议和课堂场景,将服务器实验中的技术路线接入历史会议录音、用户上传音频和浏览器麦克风,使模型结果能够以实时双语字幕、说话人标签、会议记录和语音助手的形式展示。展示系统提供两条地位相同的处理路线:
用户可以单独选择级联或端到端路线,也可以在对比模式下让两条路线接收同一份 16 kHz PCM 音频帧,观察字幕和延迟差异。会议结束后,系统继续生成阶段摘要、最终纪要和可检索的历史会议记录。该系统用于展示课程模块在实际应用场景中的组合效果,不替代 server_modules/ 中的独立实验和评价结果。
| 工作类别 | 完成情况 |
|---|---|
| PPT 基础要求 | 已完成 C1 音频处理、C2 ASR、C3 级联翻译、C4 端到端翻译和 C5 TTS,各模块均保留独立入口、输入输出和实验结果 |
| PPT 进阶挑战项 | 已完成多模型比较、音频变体鲁棒性、多语言翻译、ASR 后编辑、质量与时延评价、C3/C4 同数据对比、S2T/S2S 以及说话人风格或情感保持探索 |
| 额外展示系统 | 已完成实时会议录音与上传、级联/端到端/对比三种路线、真实流式双语字幕、说话人标签、阶段摘要、最终纪要、会议库、混合 RAG 和语音助手 |
| 两部分的关系 | server_modules/ 用于完成和复核课程要求;meeting_system/ 在其基础上完成场景化集成和产品演示,两部分使用不同的运行入口和评价方式 |
| 模块 | 主要入口 | 主要职责 | 输入 | 输出 |
|---|---|---|---|---|
| C1 音频处理 | server_modules/c1/code/c1_dataset_processing.py、c1_advanced_pipeline.py | 重采样、单声道转换、归一化、VAD 和音频变体构造 | 原始 WAV、数据清单 | 16 kHz WAV、更新后的 manifest |
| C2 ASR | server_modules/c2/code/c2_asr.py、meeting_pipeline.py | 批量 ASR、多模型比较、长音频 VAD 分段识别 | C1 音频、dataset.json | id、prediction_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.py、c4_qwen_omni_awq_end2end.py、c4_uniss_s2s_smoke.py | SeamlessM4T、Qwen2.5-Omni-AWQ 的 S2T 及 UniSS S2S 实验 | 音频 manifest | 目标文本、目标语音、指标和状态 |
| C5 TTS | server_modules/C5_TTS/code/c5_tts.py | 将 C3/C4 文本结果合成为语音 | translation 或 end2end_translation | WAV 和 TTS 运行汇总 |
| 实时后端 | meeting_system/realtime/server.py | WebSocket 音频、两条模型路线、说话人事件、会议保存与纪要 | 16 kHz PCM、控制事件 | partial/final 字幕、说话人、纪要事件 |
| 会议级声纹 | meeting_system/src/meeting_diarization.py | FSMN-VAD、CAM++、谱聚类/AHC 和字幕回写 | 整场录音、字幕时间戳 | 最终说话人时间线 |
| 会议知识库 | meeting_system/src/meeting_library.py、meeting_rag.py | 保存会议、构建证据块、混合检索 | 会议记录与纪要 | 检索证据和来源 |
| 前端 | meeting_system/web/app.py | 实时字幕、双路线对比、会议库和语音助手 | 后端事件、会议数据 | Streamlit Web 界面 |
会议录音 / 上传音频 / 浏览器麦克风
-> 16 kHz 单声道 PCM
-> 共享音频帧总线
-> C3:实时 ASR -> 最近对话上下文纠错 -> LLM 翻译
-> C4:实时端到端语音翻译
-> 统一 partial/final 事件 + turn_id + 音频时间戳
-> 实时说话人暂定标签
-> 双语字幕与会议记录
-> 会后会议级声纹校正
-> 阶段摘要 / 最终纪要 / 行动项 / 风险 / 待确认问题
-> 会议库 -> 混合 RAG -> 会议语音助手 -> TTS
历史录音演示中,播放器和模型共用一个 Web Audio 音源。浏览器只发送已经播放的 PCM 帧;对比模式将同一帧复制给两条路线,模型不会提前读取尚未播放的未来音频。
团队使用稳定样本 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
失败样本不会被静默删除,而是保留 status 和 error,便于按 id 追踪和复现实验。
| 模块 | 模型或方法 | 用途 | 运行方式 |
|---|---|---|---|
| C2 | Whisper small / large-v3 / large-v3-turbo、Paraformer EN、FSMN-VAD | 批量 ASR、多模型比较和长音频分段 | 本地模型,建议 GPU |
| C3 | Qwen2.5-7B-Instruct | ASR 后编辑和中英/中日/中韩翻译 | 服务器本地模型 |
| C4 | SeamlessM4T-v2-large | 端到端语音到文本翻译 | 本地模型,建议 GPU |
| C4 | Qwen2.5-Omni-7B-AWQ | 端到端 S2T 全量实验和 S2S 探索 | 本地 AWQ 低显存路线 |
| C4 | UniSS(论文) | 保留源说话人音色和情感的表达性 S2S | 本地模型,建议 GPU |
| C5 | Fun-CosyVoice3-0.5B | 中英文文本转语音 | 本地模型,建议 GPU |
| 实时 C3 | Paraformer realtime + qwen-plus | 实时转写、上下文纠错和翻译 | 本地 ASR + 阿里云 API |
| 实时 C4 | qwen3.5-livetranslate-flash-realtime | 实时源语言转写和目标语言翻译 | 阿里云实时 API |
| 声纹 | FSMN-VAD、CAM++、ERes2NetV2、谱聚类、AHC | 实时暂定标签和会议级校正 | ModelScope 模型 + 本地聚类 |
| RAG/TTS | text-embedding-v4、qwen-plus、qwen-tts | 会议检索、回答和语音播报 | 阿里云 API |
模型权重和第三方模型源码不提交到 Git。仓库仅保留团队编写的下载、适配和实验脚本;请按照上游模型许可证使用。服务器各模块的模型目录通过命令行参数指定,会议系统的云端配置写入 .env。更详细的服务器模型路径与参数见各模块 README。
| 数据 | 用途 | 来源 | 仓库位置 |
|---|---|---|---|
| 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。
已配置环境可直接使用 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。
服务器实验建议使用 Python 3.10、CUDA、PyTorch、Transformers、ModelScope/FunASR,并按模型需要安装 sentencepiece、jiwer、librosa、soundfile、accelerate、autoawq 或 CosyVoice 依赖。各模块依赖和命令存在差异,分别参阅:
server_modules/c2/README.mdserver_modules/c4/README.mdserver_modules/C5_TTS/README.mdserver_modules/docs/c3_c4_acceptance_guide.md| 文件 | 作用 | 需要修改的内容 |
|---|---|---|
meeting_system/.env | 云端模型、API 地址和实时参数 | API Key、兼容接口地址、模型名 |
meeting_system/config/config.yaml | 本地应用配置 | 数据目录、默认语言等 |
server_modules/common_data/dataset.json | C1-C4 公共样本清单 | 音频路径、语言、参考文本和元数据 |
server_modules/c2/outputs/latest/asr_predictions.json | C2 到 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": "别忘了带夹克。"
}
打开两个 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/
| Demo | 输入 | 演示内容 |
|---|---|---|
| AMI 历史会议 | 下载后的 AMI Mix-Headset WAV | 音频播放与模型同帧输入、双语字幕、说话人标签 |
| 浏览器实时会议 | 本地麦克风 | 实时字幕、阶段摘要、会后录音保存和最终纪要 |
| 双路线对比 | 同一段会议音频 | C3/C4 共享帧、字幕结果和延迟并列显示 |
| 会议库 | 已完成会议 | 录音、字幕、会议级说话人时间线、纪要和行动项 |
| 会议语音助手 | 文本或语音问题 | 混合 RAG 检索、必要时联网搜索、TTS 播报 |


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,模型事件进入字幕区域,结束会议后可在会议库查看保存结果。
| 输出 | 生成模块 | 说明 |
|---|---|---|
asr_predictions.json | C2 | 样本 ID、ASR 文本、WER/CER、时延和状态 |
c3_results.json | C3 | 原始 ASR、可选修正文、多语言译文和阶段时延 |
c4_results.json | C4 | 端到端译文、时延、状态和错误字段 |
c5_results.json、WAV | C5 | TTS 汇总和目标语音 |
meeting_system/outputs/meetings/ | 会议系统 | 本地会议录音、字幕、纪要和声纹时间线 |
meeting_system/outputs/meetings/rag/ | 混合 RAG | chunks.json 和 vectors.npz 本地索引 |
轻量实验汇总位于 server_modules/results/。主要结论包括:
团队按照 C1-C5 划分服务器模块,同时通过公共 manifest 和稳定 id 协作:
processed_audio,不改变样本 ID。id + prediction_text,作为 C3 固定入口。translation,C4 输出字段使用 end2end_translation。--text_field 接入两条路线,输出文件继续沿用样本 ID。turn_id 处理异步字幕、翻译和说话人更新。这种接口设计使各模块能够独立实验,也能在集成后按样本和发言轮次定位问题。
| 问题 | 当前原因 | 改进方向 |
|---|---|---|
| 实时说话人标签可能合并或拆分错误 | 无先验声纹、短发言和重叠语音使在线 embedding 不稳定 | 增加人工标注 DER/JER 评测,研究更强的在线 diarization 与重叠语音处理 |
| 会后标签不能即时显示 | 谱聚类需要整场上下文 | 保留实时暂定标签,并探索滑动全局重聚类 |
| 上下文纠错可能产生不必要改写 | LLM 可能进行语义等价改写 | 增加差异门控、术语白名单和置信度回退 |
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
3 commits
Python
94.3%
Shell
4.0%