【100行代码搞定】用Qwen3-235B构建智能会议纪要生成器:从录音到结构化笔记的全流程指南
你是否还在为会议后整理纪要熬夜?人工转录30分钟会议需要2小时,关键决策常被遗漏,行动项跟踪混乱?本文将用Qwen3-235B-A22B-Thinking-2507模型,手把手教你构建一个企业级智能会议纪要系统,实现"录音上传→自动转录→智能分析→结构化输出"全流程自动化,代码量不超过100行。
读完本文你将获得:
- 3行代码实现语音转文字(基于阿里云语音服务)
- 10行核心代码调用Qwen3-235B的思考能力处理超长会议记录
- 完整的会议要素提取算法(决策点/行动项/责任人/时间戳)
- 支持10万字超长上下文的优化方案
- 可直接部署的Docker容器配置
技术选型:为什么Qwen3-235B是最佳选择?
模型能力对比表
| 特性 | Qwen3-235B-Thinking | GPT-4o | Llama3-70B | 开源同类模型 |
|---|---|---|---|---|
| 上下文长度 | 100万token | 128k | 128k | ≤64k |
| 中文会议记录理解 | 93.8%(MMLU-Redux) | 92.8% | 89.5% | ≤85% |
| 长文档推理速度 | 3×加速(DCA技术) | 基准 | 0.7×基准 | ≤0.5×基准 |
| 本地部署可行性 | 支持(需8卡A100) | 不支持 | 支持 | 支持 |
| 多轮对话状态保持 | 原生支持 | 支持 | 有限支持 | 有限支持 |
数据来源:Qwen3技术报告及第三方评测(2025年5月)
Qwen3-235B的Dual Chunk Attention技术是处理超长会议记录的关键,它能将10万字文本分割为语义连贯的块进行并行处理,同时保持全局理解能力。在RULER长文本基准测试中,其1000k token长度下的准确率仍保持86.6%,远超同类模型。
环境准备:从零开始的部署指南
硬件最低配置要求
实际部署建议使用8×NVIDIA A100 80GB GPU,或通过vLLM实现模型分片
软件环境配置
# 创建conda环境
conda create -n qwen-meeting python=3.10 -y
conda activate qwen-meeting
# 安装核心依赖(国内源优化)
pip install torch==2.3.1+cu121 -f https://mirror.sjtu.edu.cn/pytorch-wheels/
pip install transformers==4.41.1 sentencepiece==0.2.0
pip install vllm==0.8.5 sglang==0.4.6.post1 # 推理引擎二选一
# 克隆代码库
git clone https://gitcode.com/hf_mirrors/Qwen/Qwen3-235B-A22B-Thinking-2507
cd Qwen3-235B-A22B-Thinking-2507
# 配置100万token上下文支持
mv config.json config.json.bak
ln -s config_1m.json config.json
核心功能实现:100行代码拆解
1. 语音转文字模块(15行)
import json
import time
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
def speech_to_text(audio_file_path):
# 初始化阿里云客户端(需替换为实际AK)
client = AcsClient(
"YOUR_ACCESS_KEY",
"YOUR_SECRET_KEY",
"cn-shanghai"
)
request = CommonRequest()
request.set_method("POST")
request.set_domain("nls-filetrans.cn-shanghai.aliyuncs.com")
request.set_version("2018-08-17")
request.set_action_name("SubmitTask")
# 配置语音参数
task_config = {
"enablePunctuationPrediction": True,
"enableInverseTextNormalization": True,
"enableVoiceDetection": True # 检测说话人切换
}
request.add_query_param("Task", json.dumps({
"appkey": "YOUR_APP_KEY",
"file_link": f"file://{audio_file_path}",
"format": "wav",
"model": "meeting", # 会议场景优化模型
"speech_rate": 16000,
"output_format": "json",
"task_config": json.dumps(task_config)
}))
response = client.do_action_with_exception(request)
task_id = json.loads(response)["TaskId"]
# 轮询获取结果(实际生产环境建议用回调)
while True:
time.sleep(5)
result = get_transcription_result(client, task_id)
if result["TaskStatus"] == "SUCCESS":
return "\n".join([s["Text"] for s in result["Result"]["Sentences"]])
# 完整代码见GitHub仓库
2. Qwen3-235B推理核心(28行)
from transformers import AutoTokenizer
from vllm import LLM, SamplingParams
class MeetingMinuteGenerator:
def __init__(self):
self.tokenizer = AutoTokenizer.from_pretrained(
"./Qwen3-235B-A22B-Thinking-2507",
trust_remote_code=True
)
# vLLM配置(100万token支持)
self.llm = LLM(
model="./Qwen3-235B-A22B-Thinking-2507",
tensor_parallel_size=8,
gpu_memory_utilization=0.85,
max_num_batched_tokens=131072,
max_num_seqs=1,
enable_reasoning=True,
reasoning_parser="deepseek_r1",
# 长上下文优化参数
attention_backend="DUAL_CHUNK_FLASH_ATTN",
enforce_eager=True
)
self.sampling_params = SamplingParams(
temperature=0.3, # 降低随机性,适合事实提取
top_p=0.9,
max_tokens=4096,
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



