利用Cosmos-Reason1-7B实现智能会议纪要语音转文本与要点总结开过会的人都知道最头疼的不是开会本身而是会后的那堆事——整理录音、梳理要点、找出谁该干什么。一场一小时的会整理纪要可能又要花掉半小时还容易漏掉关键信息。要是能有个小助手自动把录音变成文字再帮你把重点都挑出来那该多省事今天我们就来动手打造这样一个“会议小秘书”。整个过程就像一条流水线先把会议录音喂进去转成文字稿然后请出我们的大模型“大脑”Cosmos-Reason1-7B让它像一位经验丰富的秘书一样从冗长的对话中提炼出核心决策、待办事项和责任人最后一份结构清晰的会议纪要就自动生成了。我们将用Python把这一切串起来让你体验一下AI如何实实在在地提升办公效率。1. 为什么需要智能会议纪要会议是现代协作的核心但低效的会议记录和纪要整理过程常常让会议的成果大打折扣。传统的做法要么是专人速记要么是会后反复听录音不仅耗时耗力还容易出现信息偏差或遗漏。想象一下这个场景产品、研发、运营开了一个小时的迭代规划会。大家讨论热烈敲定了三个新功能分配了五个任务还遗留了两个问题需要下次讨论。会后负责记录的同事小王需要花大量时间回听录音努力分辨谁说了什么试图从散乱的对话中重建逻辑最后整理成文档。这个过程既枯燥又容易出错。而智能会议纪要工具要解决的正是这个痛点。它的价值在于效率倍增将人工可能需要30-60分钟的工作压缩到几分钟内自动完成。信息保真基于完整的录音转写文本进行分析减少因个人理解或记录速度导致的信息丢失。结构清晰自动按照“决策事项”、“待办任务”、“遗留问题”等维度组织信息一目了然。责任到人自动关联任务与责任人方便后续跟踪。接下来我们就来看看如何用技术实现这个构想。2. 工具链与核心组件介绍我们的智能会议纪要系统主要依赖两个核心环节语音转文本ASR和文本摘要与理解LLM。这里我们选择成熟、易用的方案进行组合。2.1 语音转文本选择合适的ASR服务首先我们需要把会议录音通常是MP3、WAV等格式转换成机器可读的文字。自己训练一个ASR模型门槛很高因此直接调用成熟的云服务API是更实际的选择。市面上有几家主流服务商提供非常不错的语音识别接口科大讯飞开放平台中文识别准确率公认领先尤其针对会议、采访等场景有优化支持实时转写和一句话识别等多种模式。阿里云智能语音交互提供高精度的语音识别服务稳定性好与阿里云其他产品集成方便。百度语音技术识别效果稳定提供了丰富的SDK和文档。对于本实践我们以科大讯飞开放平台的“语音听写”服务为例。它为非流式场景即上传完整音频文件提供了简单的HTTP接口准确率高免费额度也足够个人或小团队试用。你需要做的就是去其官网注册账号创建一个语音听写应用然后获取到关键的APPID、APIKey和APISecret这些是我们调用接口的凭证。2.2 文本理解与摘要Cosmos-Reason1-7B模型拿到文字稿后下一步就是理解它。这就是大型语言模型LLM的用武之地。我们选择Cosmos-Reason1-7B模型它是智谱AI开源的一个7B参数量的模型在推理和指令跟随方面表现不错非常适合完成“阅读长文本并按要求提取结构化信息”这类任务。与一些更庞大的模型相比7B的规模意味着它对计算资源的要求相对友好可以在消费级显卡甚至一些高性能CPU上运行更适合我们将其作为本地化或私有化部署的“会议小秘书”核心。它的核心能力在于强大的文本理解能够把握长篇对话的上下文和逻辑。精准的指令跟随我们可以用自然语言描述我们想要的纪要格式它就能按需输出。结构化输出可以要求它输出JSON、Markdown等格式方便我们后续处理。3. 端到端实现步骤现在我们把各个模块像拼积木一样组装起来。整个流程可以清晰地分为三步语音转写、文本处理与摘要、结果格式化输出。3.1 第一步调用语音识别API获取文字稿首先我们需要安装必要的Python库主要是用于网络请求的requests。科大讯飞的接口需要生成一个带有签名的鉴权URL这个过程稍有点复杂但官方提供了详细的示例代码。我们将其封装成一个函数。import requests import json import time import hashlib import base64 import hmac from urllib.parse import urlencode def xfyun_transcribe(audio_file_path, appid, api_key, api_secret): 调用科大讯飞语音听写服务将音频文件转写成文字。 参数: audio_file_path: 本地音频文件路径如 meeting.wav appid, api_key, api_secret: 从讯飞开放平台获取的凭证 返回: 识别结果的文本字符串 # 1. 构建鉴权URL url https://iat-api.xfyun.cn/v2/iat now str(int(time.time())) signature_origin fhost: iat-api.xfyun.cn\ndate: {now}\nGET /v2/iat HTTP/1.1 signature_sha hmac.new(api_secret.encode(utf-8), signature_origin.encode(utf-8), digestmodhashlib.sha256).digest() signature base64.b64encode(signature_sha).decode(encodingutf-8) authorization_origin fapi_key{api_key}, algorithmhmac-sha256, headershost date request-line, signature{signature} authorization base64.b64encode(authorization_origin.encode(utf-8)).decode(encodingutf-8) # 将鉴权参数添加到请求头 headers { Authorization: authorization, Content-Type: application/json, Host: iat-api.xfyun.cn, Date: now } # 2. 读取并编码音频文件 with open(audio_file_path, rb) as f: audio_data f.read() audio_base64 base64.b64encode(audio_data).decode(utf-8) # 3. 构建请求体根据音频格式调整这里以wav为例 payload { common: {app_id: appid}, business: { language: zh_cn, # 中文 domain: iat, # 听写 accent: mandarin,# 普通话 vad_eos: 2000, # 静音断句时长 dwa: wpgs # 动态修正 }, data: { status: 2, # 2表示最后一帧 format: audio/L16;rate16000, # 音频格式需与实际文件匹配 encoding: raw, audio: audio_base64 } } # 4. 发送请求并解析结果 response requests.post(url, headersheaders, datajson.dumps(payload)) result response.json() # 5. 提取并拼接识别文本 if result[code] ! 0: print(f识别失败: {result[message]}) return None text for item in result[data][result][ws]: for w in item[cw]: text w[w] return text # 使用示例请替换为你自己的凭证和音频文件 appid YOUR_APP_ID api_key YOUR_API_KEY api_secret YOUR_API_SECRET audio_path meeting_recording.wav transcribed_text xfyun_transcribe(audio_path, appid, api_key, api_secret) if transcribed_text: print(识别结果预览, transcribed_text[:500]) # 打印前500字符预览 with open(meeting_transcript.txt, w, encodingutf-8) as f: f.write(transcribed_text)运行这段代码你的音频文件就会变成一份meeting_transcript.txt文本文件。如果音频较长识别可能需要十几秒到几十秒。3.2 第二步使用Cosmos-Reason1-7B提炼要点有了文字稿我们就可以请出Cosmos-Reason1-7B了。这里假设你已经通过Hugging Face Transformers库或类似方式部署好了模型。我们主要关注如何构造一个有效的提示词Prompt来引导模型生成我们想要的会议纪要。核心思路是给模型一个明确的角色和清晰的任务指令。from transformers import AutoTokenizer, AutoModelForCausalLM import torch # 加载模型和分词器请根据你的实际模型路径调整 model_name path/to/your/cosmos-reason-1-7b # 或 THUDM/glm-4-9b-chat 等 tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) model AutoModelForCausalLM.from_pretrained(model_name, trust_remote_codeTrue, torch_dtypetorch.float16, device_mapauto) def generate_meeting_minutes(transcript_text): 使用大模型生成会议纪要。 参数: transcript_text: 语音识别得到的完整文本 返回: 模型生成的会议纪要文本 # 构建系统提示词定义模型角色和任务 system_prompt 你是一个专业的会议纪要助手。你的任务是根据提供的会议录音转写文本生成一份结构清晰、重点突出的会议纪要。请严格按照以下格式输出 ## 会议纪要 ### 一、核心结论与决策 列出本次会议形成的主要结论、拍板决定的事项 ### 二、下一步行动计划待办事项 列出所有明确的任务每项任务请包含1. 具体内容2. 负责人3. 截止时间如果会议提及 ### 三、遗留问题与后续讨论 列出本次会议未解决、需要后续跟进或下次会议讨论的问题 ### 四、关键信息点可选 其他重要的信息点如数据、参考文档等 注意请只基于提供的文本内容进行总结不要虚构信息。如果某项信息不明确如负责人、时间请标注“待确认”。 # 将系统提示和用户输入转录文本组合。具体组合方式需参考Cosmos-Reason模型的对话格式。 # 这里是一个通用示例实际格式请查阅该模型的文档。 prompt f{system_prompt}\n\n以下为会议录音转写文本\n\n{transcript_text}\n\n请生成会议纪要 # 对输入进行编码 inputs tokenizer(prompt, return_tensorspt, max_length2048, truncationTrue) inputs inputs.to(model.device) # 生成文本 with torch.no_grad(): outputs model.generate(**inputs, max_new_tokens1024, # 控制生成长度 temperature0.7, # 控制随机性 do_sampleTrue) # 解码生成结果 generated_text tokenizer.decode(outputs[0], skip_special_tokensTrue) # 提取模型生成的部分通常需要去除输入的Prompt部分 # 这里简化处理实际应用中可能需要更精细的截取 minutes generated_text[len(prompt):].strip() return minutes # 使用示例 if transcribed_text: # 如果转录文本过长可能需要分段处理。这里简单截取前2000字符作为演示。 text_for_summary transcribed_text[:2000] meeting_minutes generate_meeting_minutes(text_for_summary) print(生成的会议纪要\n) print(meeting_minutes)这个system_prompt是关键它详细规定了输出的格式和内容要求。模型会根据这个指令像填空一样从冗长的对话中提取相关信息并组织成我们想要的格式。3.3 第三步整合与输出最终纪要最后一步是把前两步串联起来并做一些后处理比如把生成的纪要保存为Markdown文件这样在Notion、语雀等支持Markdown的协作工具里看起来会非常舒服。def create_smart_minutes(audio_path, config): 智能会议纪要生成主函数。 参数: audio_path: 会议录音文件路径 config: 包含API密钥和模型配置的字典 print(步骤1/3正在转换语音为文本...) transcript xfyun_transcribe( audio_path, config[xfyun_appid], config[xfyun_api_key], config[xfyun_api_secret] ) if not transcript: print(语音识别失败流程终止。) return # 保存原始转录稿 with open(transcript_raw.txt, w, encodingutf-8) as f: f.write(transcript) print(f 语音转文本完成文本长度{len(transcript)}字符。) print(步骤2/3正在使用AI分析文本并生成纪要...) # 注意实际长文本可能需要分段或使用长上下文模型处理 # 这里可以添加文本分割逻辑然后将各段摘要合并 minutes generate_meeting_minutes(transcript[:4000]) # 示例中处理前4000字 print( AI分析完成。) print(步骤3/3保存最终会议纪要...) output_file meeting_minutes.md with open(output_file, w, encodingutf-8) as f: f.write(minutes) print(f 会议纪要已生成并保存至{output_file}) print(\n流程结束。) # 配置信息在实际应用中应从环境变量或配置文件中读取 config { xfyun_appid: YOUR_APP_ID, xfyun_api_key: YOUR_API_KEY, xfyun_api_secret: YOUR_API_SECRET, # 模型路径等配置... } # 运行整个流程 create_smart_minutes(meeting_recording.wav, config)运行这个脚本你会在同级目录下得到两个文件transcript_raw.txt原始录音稿和meeting_minutes.md格式化后的智能纪要。Markdown文件可以直接在支持渲染的编辑器中打开结构清晰重点一目了然。4. 效果展示与优化建议为了让你有个直观的感受我模拟了一段简短的团队周会对话并用上面的流程跑了一遍。原始录音转写的文本大概有800多字记录了关于产品上线、市场推广和技术债务的讨论。经过Cosmos-Reason1-7B处理生成的会议纪要是这样的为保护隐私内容已做匿名和模糊化处理会议纪要一、核心结论与决策产品发布决定“智能报表V2.0”版本于本月25日周五正式上线。推广策略初步确定下月初启动一轮线上社交媒体推广重点投放平台为A平台和B平台预算范围在5-8万元之间具体方案由市场部细化。技术优化同意在下一个开发周期下季度初安排专门时间处理累积的技术债务优先级最高的是数据库查询优化。二、下一步行动计划待办事项任务完成“智能报表V2.0”上线前的全部测试。负责人张工程师截止时间本月23日任务制定详细的社交媒体推广执行方案及预算表。负责人王经理截止时间本月28日任务调研并输出数据库查询优化的具体技术方案。负责人李架构师截止时间下月5日三、遗留问题与后续讨论关于推广活动的具体KPI指标如拉新数、转化率需要市场部在下周例会提出建议并进行讨论。技术债务处理的具体时间点和资源投入需在下季度规划会上明确。四、关键信息点本次会议应到8人实到7人赵同事请假。可以看到AI成功地从散乱的对话中提取出了“决策”、“任务”、“问题”等关键要素并进行了归类和格式化负责人和截止时间也关联上了。这已经是一份可以直接分发、用于跟踪的会议纪要草案了。当然这只是一个起点。在实际使用中你可能会遇到更长的会议、更多的参会人、更复杂的议题。为了让这个工具更可靠这里有几个优化方向供你参考处理超长文本如果会议录音长达两小时转写文本可能超过模型单次处理的上限。这时需要先将文本按语义如按发言者或话题分割成多个片段分别总结后再由模型或规则进行合并。优化提示词工程system_prompt是模型的指挥棒。你可以根据自己团队的纪要习惯微调它。比如增加“参会人员”章节或要求任务按“优先级P0/P1/P2”分类。融入领域知识如果你们的会议有大量专业术语如金融、医疗可以在提示词中简要说明或考虑使用在该领域微调过的模型版本以提高理解准确性。增加交互与修正生成纪要后可以提供一个简单的界面让用户快速校对、修改AI可能提取错误的信息如错把人名当成了任务项实现“AI初稿人工润色”的高效协作模式。探索本地ASR方案如果对数据隐私要求极高可以考虑使用开源的语音识别模型如Whisper在本地部署实现完全离线的会议纪要生成。5. 总结从一段杂乱的会议录音到一份条理清晰的行动清单我们通过“语音识别API 大语言模型”的组合拳走完了智能会议纪要的完整闭环。这个过程不仅展示了Python作为胶水语言的灵活性更让我们看到了像Cosmos-Reason1-7B这样的开源模型在解决具体办公场景问题上的实用潜力。它未必每次都能做到百分百完美比如在分辨幽默发言和正式决策时可能会出错或者把讨论中的假设误认为是最终决定。但对于节省大量基础性的信息整理时间快速生成一个高质量的纪要初稿它的价值是毋庸置疑的。你可以把这个脚本当作一个起点根据自己团队的会议风格和需求调整提示词、输出格式甚至集成到钉钉、飞书等协作机器人里让它真正成为你们团队的效率助手。下次开会不妨试试让AI先帮你打个草稿或许你会发现自己多出了半小时喝杯咖啡的时间。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。