大型语言模型GPT-4已经发布了一段时间,基于它的应用也层出不穷。这些应用程序的强大功能帮助了许多用户处理大量的任务场景。这里要分享的是OpenAI的一份官方文档,详细介绍了使用其语音识别模型Whisper和大语言模型GPT-4创建会议纪要生成器的全过程。
本教程将介绍如何使用OpenAI的Whisper和GPT-4模型开发一个自动会议记录生成器。该应用程序的功能是转录会议音频,总结讨论内容,提取关键点和行动项,并进行情感分析。
基本技能
本教程假设读者对Python和OpenAI API密钥有基本的了解。您可以使用本教程中提供的音频或您自己的音频。
此外,还需要安装python-docx和OpenAI库。您可以使用以下命令创建新的Python环境并安装所需的软件包:
Python-m vennev source env/bin/ActivatePip Install open aipip Install Python-docx使用Whisper转录音频。
转录会议音频的第一步是将会议音频文件传递给OpenAI的/v1/audio API。Whisper是一个支持音频API的模型,可以将口语转换成文本。首先,您将避免传递提示或温度参数(用于控制模型输出的可选参数),并坚持使用默认值。
接下来,导入需要的软件包,定义一个函数——这个函数的作用就是用Whisper读取音频文件并转录出来:
import open ai from docx import document def transcripte _ audio(audio _ file _ path):with open(audio _ file _ path,& # 39;rb & # 39)作为audio _ file:transcription = open ai。audio . transcripte(& # 34;耳语-1 & # 34;,audio_file)返回转录[& # 39;正文& # 39;]在这个函数中,audio_file_path是您想要转录的音频文件的路径。该函数将打开文件并将其传递给Whisper ASR模型(whisper-1)进行转录。返回的结果是原始的文本形式。需要强调的是,openai。Audio.transcribe函数需要传入实际的音频文件,而不仅仅是文件在本地或远程服务器上的路径。这意味着,如果您在可能不存储音频文件的服务器上运行代码,您可能需要一个预处理步骤来首先将音频文件下载到设备上。
使用GPT-4对转录文本进行总结和分析
获得转录的文本后,使用ChatCompletions API将其传递给GPT-4。GPT-4是OpenAI推出的最好的大规模语言模型,将用于生成摘要,提取关键点和动作项,并进行情感分析。
本教程将使用不同的功能为每一个不同的任务,我们希望GPT-4执行。这不是完成这个任务的最有效的方法(你可以把这些指令放到一个函数里),但是把这些任务分开可以让摘要质量更高。
为了分离这些任务,函数meeting_minutes被定义为应用程序的主要函数:
def会议_纪要(转录):abstract _ summary = abstract _ summary _ extraction(转录)key _ points = key _ points _ extraction(转录)action _ items = action _ item _ extraction(转录)情操=情操_分析(转录)return { & # 39摘要_摘要& # 39;:摘要_摘要,& # 39;关键点& # 39;:关键点,& # 39;action _ items & # 39:action_items,& # 39;感悟& # 39;:sentient}在这个函数中,转录是从Whisper获取的文本。转录可以被转发到其他四个功能,每个功能执行一个特定的任务:abstract_summary_extraction用于生成会议摘要,key_points_extraction用于提取要点,action_item_extraction用于识别行动项,sentinel _ analysis用于执行情感分析。如果您想添加其他功能,可以使用如上所示的相同框架。
下面是每个函数的工作原理:
抽象提取
abstract_summary_extraction的作用是将转写的文字归纳为一个简明的概要,目的是保留最重要的要点,避免不必要的细节或题外话。实现这个过程的主要机制是下面的系统消息。通过所谓的提示工程设计,有许多不同的可能方法可以得到类似的结果。如果你想知道如何最有效地做到这一点,你可以查看open ai:https://platform.openai.com/docs/guides/gpt-best-practices.提供的GPT最佳实践指南中提供的深入建议
def abstract_summary_extraction(转录):response = openai。chat completion . create(model = & # 34;GPT-4 & # 34;,温度=0,消息=[{ & # 34;角色& # 34;: "系统& # 34;, "内容& # 34;: "你是一个受过语言理解和总结训练的高技能人工智能。我希望你阅读下面的文字,并将其总结成一个复杂的摘要段落。旨在保留最重要的观点,提供一个连贯和可读的总结,可以帮助一个人理解讨论的要点,而不需要阅读整个文章。请避免不必要的细节或离题。"}, { "角色& # 34;: "用户& # 34;, "内容& # 34;:转录} ])返回响应[& # 39;选择& # 39;][0]['消息& # 39;]['内容& # 39;]关键点提取
要点摘录的功能是识别并列出会议中讨论的要点。这些要点应该包括对会议讨论的实质至关重要的最重要的想法、发现或主题。类似地,控制这些点的标识的主要机制是系统消息。这里你可能需要给出一些额外的信息来解释你的项目或者公司的商业模式,比如:“我们是一家向消费者销售赛车的公司。我们在做什么,我们的目标是什么。这些附加信息可以大大提高模型提取相关信息的能力。
def key_points_extraction(转录):response = openai。chat completion . create(model = & # 34;GPT-4 & # 34;,温度=0,消息=[{ & # 34;角色& # 34;: "系统& # 34;, "内容& # 34;: "你是一个精通人工智能的人,擅长将信息提炼为关键点。根据下面的文字,确定并列出讨论或提出的要点。这些应该是对讨论的本质至关重要的最重要的想法、发现或主题。你的目标是提供一个列表,让人们可以快速阅读并理解讨论的内容。"}, { "角色& # 34;: "用户& # 34;, "内容& # 34;:转录} ])返回响应[& # 39;选择& # 39;][0]['消息& # 39;]['内容& # 39;]行动项目选择
action_item_extraction函数的功能是确定会议期间商定或提及的任务、分配或行动。这可能包括分配给特定个人的任务或集体决定的行动。虽然本教程不会详细讲解,但是聊天完成API提供了一个功能,允许用户在任务管理软件中自动创建任务,并将其分配给相关人员。
def action_item_extraction(转录):response = openai。chat completion . create(model = & # 34;GPT-4 & # 34;,温度=0,消息=[{ & # 34;角色& # 34;: "系统& # 34;, "内容& # 34;: "你是分析对话和提取行动项目的AI专家。请检查文本,并确定已达成一致或需要完成的任何任务、分配或行动。这些可能是分配给特定个人的任务,或者是小组决定采取的一般行动。请简明扼要地列出这些行动项目。"}, { "角色& # 34;: "用户& # 34;, "内容& # 34;:转录} ])返回响应[& # 39;选择& # 39;][0]['消息& # 39;]['内容& # 39;]情感分析
情感分析的功能是分析会议讨论的整体情感。它考虑到了情绪、语言所传达的情感以及单词和短语所处的语境。对于低复杂度的任务,除了gpt-4,gpt-3.5-turbo也值得一试。你可以看看是否能得到类似的性能水平。你也可以把情绪_分析函数的结果传递给其他函数,看看对话的情绪会如何影响其他属性,这可能也是有用的。
def情操_分析(转录):response = openai。chat completion . create(model = & # 34;GPT-4 & # 34;,温度=0,消息=[{ & # 34;角色& # 34;: "系统& # 34;, "内容& # 34;: "作为一个在语言和情感分析方面有专长的AI,你的任务是分析下面这段文字的情绪。请考虑讨论的整体基调,所用语言传达的情感,以及单词和短语使用的上下文。指出情绪总体上是积极的、消极的还是中性的,并在可能的情况下为你的分析提供简要的解释。"}, { "角色& # 34;: "用户& # 34;, "内容& # 34;:转录} ])返回响应[& # 39;选择& # 39;][0]['消息& # 39;]['内容& # 39;]导出会议纪要
生成会议纪要后,我们通常需要将它们保存为人类可读且易于分发的格式。这种报告的常见格式是Microsoft Word。Python docx软件库是一个用于创建Word文档的常见开源软件库。如果您想要构建一个端到端的会议纪要应用程序,您可以考虑删除这个导出步骤,并在后续电子邮件中发送摘要。
为了实现这个导出过程,可以定义一个函数save_as_docx,将原始文本转换成Word文档。
def save_as_docx(minutes,filename): doc = Document() for key,value in minutes.items(): #用空格替换下划线,并将标题heading = & # 39'。join(word . capital()for word in key . split(& # 39;_'))doc.add_heading(标题,级别= 1) doc。add _ paragraph (value) #在节doc之间添加一个换行符。add _ paragraph () doc。save (filename)在这个功能中,纪要是一个字典,里面包含了会议的总结、要点、行动事项和情绪分析。Filename是要创建的Word文档文件的名称。该函数创建一个新的Word文档,将标题和内容添加到摘要的每个部分,然后将文档保存到当前工作目录。
最后,您可以将所有内容放在一起,并从音频文件中生成会议纪要:
音频文件路径= & # 34;Earningscall.wav & # 34转录=转录_音频(音频_文件_路径)分钟=会议_分钟(转录)打印(分钟)另存为_docx(分钟,& # 39;meeting _ minutes.docx & # 39)这段代码会先转录音频文件Earningscall.wav,然后生成并输出会议纪要,再将会议纪要保存为Word文档,命名为meeting_minutes.docx。
这是会议纪要的基本流程。请尝试通过即时工程设计优化其性能,或者通过本地函数调用构建一个端到端的系统。
参考链接:https://platform.openai.com/docs/tutorials/meeting-minutes
剧终
授权请联系本微信官方账号。
投稿或寻求报道:content@jiqizhixin.com。
微信扫码
QQ扫码
您的IP:10.1.201.110,2026-04-07 03:54:39,Processed in 0.42515 second(s).