★★★ 本文源自AI Studio社区精品项目,【点击此处】查看更多精品内容 >>>


零.项目背景

目标:针对会议场景的长视频或者长语音,自动生成会议记录并通过摘要生成技术形成会议摘要。

一.技术流程

1.通过moviepy 提取视频中的音频,并且对音频转换采样率

# 安装 moviepy 和 ffmpy
!pip install ffmpy
!pip install moviepy

2.通过PaddleSpeech 做音频识别成文本,以及对文本进行标点恢复

# 安装 paddleSpeech
!pip install pytest-runner
!pip install paddlespeech
# 将nltk_data 拷贝到 /home/aistudio 目录
!cp -r /home/aistudio/work/nltk_data /home/aistudio

3.通过PaddleNLP中的UIE框架进行信息抽取和文本摘要抽取

# 安装 paddlenlp
!pip install --upgrade paddlenlp

二.音频提取和转换采样率

原视频放在 work/video目录,首先通过moviepy 和 FFmpeg提取音频转换指定采样率

# 从视频中抽取音频,转换采样率,16k 是适用paddlespeech的采样率def pre(self, filename):self.videoPath = './video/'+filename+'.mp4'self.audioPath = './audio/'+filename+'.wav'self.audioInputs = './audio/'+filename+'/inputs'self.audioOutputs = './audio/'+filename+'/outputs'if os.path.exists(self.audioInputs) is False:os.makedirs(r''+self.audioInputs)if os.path.exists(self.audioOutputs) is False:os.makedirs(r''+self.audioOutputs)if os.path.exists(self.audioPath):return True# 从视频中抽取音频,同时转为16k采样率音频ff = FFmpeg(inputs={self.videoPath: None}, outputs={self.audioPath: '-f {} -vn -ac 1 -ar 16000 -y'.format('wav')})ff.run()

因为PaddleSpeech 需要用16k采用率,已经音频长度限制(50s),所以还需要对长音频进行分割为短音频

# 将长音频分割为 50秒的短音频def split(self, filename):self.delfiles(self.audioInputs)self.delfiles(self.audioOutputs)audio = AudioFileClip(self.audioPath)loops = math.ceil(audio.duration/self.audioLengthMax)print(audio.duration, loops)# 每隔180秒切分if audio.duration <= self.audioLengthMax:audio.write_audiofile('./audio/'+filename+'/0.wav')else:for i in range(loops):audio = AudioFileClip(self.audioPath)start = i*self.audioLengthMaxend = (i+1)*self.audioLengthMax if loops > i + 1 else audio.durationsubaudio = audio.subclip(start, end)subaudioPath = self.audioInputs+'/'+str(i)+'.wav'print(subaudio.duration,start, end,subaudioPath)subaudio.write_audiofile(subaudioPath)cmd = "ffmpeg -i " + subaudioPath + " -ar 16000 " + self.audioOutputs+'/'+str(i)+".wav"  #ffmpeg -i 输入文件 -ar 采样率  输出文件subprocess.call(cmd, shell=True)return loops

三.音频识别

通过PaddleSpeech进行音频识别。

PaddleSpeech 是基于飞桨 PaddlePaddle 的语音方向的开源模型库,用于语音和音频中的各种关键任务的开发,包含大量基于深度学习前沿和有影响力的模型

# 音频识别,将一系列短音频识别文字,保存在 /work/text/filename 目录def text(self, filename, loops):texts = []asr = ASRExecutor()for i in range(loops):res = asr(audio_file=self.audioOutputs+'/'+str(i)+".wav")print(res)texts.append(res)text = "".join(texts)self.textSave(filename, 'input', text)return text

四.标点恢复

通过PaddleSpeech进行标点恢复,最后合并成一个正常的会议记录文本

# 标点恢复,输入文件名和长内容文本,PaddleSpeech 标点恢复有文本长度限制,这边textLengthMax 设置为500字。def punctuation(self, filename, content):text_punc = TextExecutor()loops = math.ceil(len(content)/self.textLengthMax)texts = []for i in range(loops):start, end = int(i*self.textLengthMax), int((i+1)*self.textLengthMax)print(start, end)text = content[start:end]result = text_punc(text=text)print(result)texts.append(result)text = "".join(texts)self.textSave(filename, 'output', text)return text

五.会议信息抽取

通过PaddleNLP进行文本摘要抽取和实体,关系,事件 抽取

更加实际内容进行抽取设定,最后抽取内容保存在 work/outputs 目录,里面包含必要的会议要素(如有)

# 会议信息抽取
def extract(self, filename, text):result = {}summarizer = Taskflow("text_summarization")summary = summarizer(text)print(summary)schema = ['会议时间','会议地点','会议记录人','会议议题']ie = Taskflow('information_extraction', schema=schema)res = ie(text)print(res)for label, values in res[0].items():items = []for value in values:if value['probability'] > self.ratioLimit:items.append(value['text'])result[label] = itemsresult['摘要'] = summaryresult['记录'] = textwith open('./outputs/'+filename+'.txt','w')as f:f.write(json.dumps(result, ensure_ascii=False))

以下是一个抽取结果的示例,json 格式方便后续生成word或者pdf提供数据

{"会议时间": ["今天", "今天", "六月一日"],"会议记录人": ["组织委员"],"会议议题": ["评选优秀共产党员", "评选"],"摘要": ["山东省纪委通报六起违纪行为"],"记录": "我在本次会议中,模拟党支部书记;我在本次会议中,模拟党支部副书记;我在本次会议中,模拟组织委员;我在本次会议中,模拟宣传委员;我在本次会议中,模拟纪检委员;今天,我们召开支委会,讨论年究近期工作,会前,与各位委员进行了充分沟通,确定了本次织委会的三项议题:讨论、评选优秀共产党员;二是讨论本月绩效考核;三是讨论奋战七十天,警场全达标的工作安排;下面,开始开会,首先,请组织委员清点人数,今天,阴到,作委委员五人,迟到五人,符合会议要求,可以开会;下面,先由季检委员进行连接教育,今天的连接教育,向大家通报:山东省纪委通报的六起违:一、反:中央八向归星、减刑精神问题:一、济南市市中区原书记仲鸿夯违规出入私人会所问题;二、济宁市委原丰女市长程大志违规收受李没问题;三、枣庄市工商局党组成员、副局长马洪山办公用品、办公用方面积超标、违规使用公务车问题;四、淄博市临淄区综合形政执法局党委书记、局长编辑俊违规进工款、购买德、澳、荡白酒问题;五、莱芜市莱城区环保局副主任、客员李新违规使用公车、接受监管服务对象宴请问题;六、烟台市木生区建筑工程质量监督站原党支部书记、站长任光辉违规操办女儿婚宴问题;上述六起问题、违纪行为,全部发生在中央八项规定出台以后,其中五起发生,或持区,到二零一七年,是典型的,明知故犯、顶峰违纪,这充分说明,有的党员、干部仍然心。存侥幸,对中央和省委的三零五申,炙若罔闻,不收敛,不收手,不知指,自,认为采取变通、便异方式,就能够逃避监督,必须受到严肃查处,今天的连接交育结束,下面,对三项议题,分别进行讨论:第一项:议题:讨论:评选,推荐优秀共产党员,根据上级先进评选通知要求,支委会结合工作实际,提出并通过了全员推荐及全体党员,通过无记名投票进行推荐的方案,经过党员大会民主评议、推荐,共推选出三名优秀共产党员,初步人选,分别是:月、曹丽丽、邱建,按照两名先进名额的分贝要求,请大家本着公平、公正、对同志负责任的态度,发表意见,建议评选出我们支部最优秀的党员,向管理区党委推荐!好的,我先说一下:我推荐:曹丽丽和邱建,因为他们两人在去年的新息化技术比赛中,荣获了中石化团体一等奖,为我们管理区和油田征得了荣誉,也带动了大家的学习积极性,起到了良好的示范作用,所以,我推荐他们两人;我建议:推荐:乐克盛和曹丽丽,岳克胜同志是一名老党员,虽然徐习能力不如邱建,但是他身上有着对工作特别负责任的态度,在本职岗位上非常地尽职尽责,年龄虽然大,但是在工作中,从来不含糊,款力,总是想尽办法完成各项工作,在办单中,起到了很好的表率作用;曹立宇同志在本职岗位和培训工作中的成绩也是有目共睹,所以,我的意见是:推荐月克胜和曹丽丽,我同意纪检委员的意见,曹丽丽同志对工作一直非常认真。尤其是分管的培训工作,经常加班加点,带领大家学习,在这次支持近赛中,更是发挥了很好的作用,同时,岳高胜同志,所分管的安全工作,在本次安全比武中,获得了优异的成绩,所以说,我推荐曹丽丽和岳和胜同志,我同意!组织委员的意见,邱建同志,虽然在学习方面比较优秀,也取得了非常不错的成绩,但是,现场的应用学习的带动性方面,还有待提高,他们班战的员工,还有重金工,鉴定,没有通过的,这种情况,以后,应该还好地利用平时工作的机会,不断提高班占人员的技能水平,这是我个人的意见,刚才大家都谈了各自的意见,我来谈谈我的建议:我建议推荐月客盛、曹丽丽两名同志,因为他们在工作中尽职尽责,干一行,按一行,最后,我们进行投票,表决,选出两名优秀共产党员,首先,由宣传委员发放选票,大家请看选票,选票上有三名党员的名字,同意的代名字,下面画对号,不同意的画叉,每张选票选两名,优秀党员,多选作废,请大家填写选票,填完选票后,交给纪检委员,想票,回出,完毕,发出五张,回收,五张,好,由季节委员、宣传委员统计,选票,五,要的,我就上一下,现在宣布投票结果,约克胜五票,曹丽丽四票,邱建一票,根据投票情况,本次织委会推选岳克胜、曹丽丽为优秀共产党员,下周,利用党员大会的时间,向全体党员通好,党支部副书记,把会议的评选结果向管理区党委上报,下面进行第二项议题,讨论,本月绩效考核,会前,已与相关。委员进行了沟通,行,成了初步方案,下面由副书记对照考核内容,进行讨论,下面,我来介绍一下,本月的这个考核情况,于是,本月采油厂案件,范保科检查,考核,十四项问题,考发结额是两千元,其中有六项,属于以上报代,整改的问题,不予考核,另外八项,共计八百元,属于班组管理问题,要对,下到相关班组,合责任人,第二个,本月,我们评处了三个优学,现场,供六百元,按照相关考核规定,全额兑下到相应岗位,呃,以下是本月奖成分配明细表,并发给大家了,请大家分别发表意见!行,我来先说说我的意见,本月中午,加班和衣锦穿孔挖坑,经过现场落实之后,啊,啊,难度特别大,以往的三十元的奖励标准偏低,我建议再增加十员,对于其他,没有意义,我这里有一项问题,就一口,注:睡井的奖值问题,存在,意义,就是和山西杠五十二,入水井下法栏收入的渗漏的问题,搬站,已经进行过多次整改,但是需要作业动力,才能更换,下法栏,在更换之前,进行,由管理区协调,安全,协调,采用场,不要再进行,江惩,其他的,没有意见,我认为,在问题得到妥善的整改之前,还要督促班站做好寻护和检查,避免问题的进一步扩大,现在总结一下,关于养成,明细,李四同志,奖励,增加十元,大家对这个决议有没有意见?现在进行举手表决,同意的,请举手,好,请放下,不同意的,请举手,没有弃权的,请举手,没有好,经过举手,表决,一致,通过,本月绩效考核方案,请党支部副书记抓好组织!实施:下面,讨论第三项议题:奋战七十天,警场全达标工作安排,这项工作,时间紧,任务重,警场情况也比较复杂,会钱,各支委成员进行了酝酿,沟通,按照采油厂有关要求,和支尾成员的意见,建议,只部结合具体实际,拟定了实施方案,实施方案已经下发给了大家,请大家提出修改的建议,我先谈一下我个人的看法,这个具体的工作部署中,对这个达标提收阶段的时间安排和建议,改到六月一日,这样,从六月一日到十五日,这段时间,我们可以对前期工作进行自查,查漏补缺,这样对下一步的营检会有必较大的帮助,我个人的意见,我同意,邢书记的意见,对于其他没有意义,我同意,同时,建议,随时发现问题,及时督促整改,防止问题,积多极大,对整改前后的照片,做好收集,归档,其他的没有意义,我没有意见,好,大家对达标提升阶段的时间安排,改制,六月一日,都没有意见,大家对实施方案有没有意见?现在进行举手表决,同意的,请举手,请放下,不同意的,请举手,没有,弃权的,请举手,没有好,经过举手,表决,一致通过,奋战七十天,警场前达标工作实施方案,事时,召开党员大会,向全体党员通报,并组织实施,会后,请各支委签字确认,决议,组织委员要将记录归档,请各支委签字,确认,决议,组织委员要将记录归档,好,赛会!"
}

五.一键生成会议记录示例

原始视频已经上传至 work/video 目录下

生成的文件在 work/outputs 目录下

meeting_formal 为视频文件名。通过修改 work/main.py 目录配置,可以一直到自己的项目中

# 运行
%cd /home/aistudio/work/
!python main.py meeting_formal

六.总结

通过对moviepy,ffmpeg,paddlespeech,paddlenlp的组合运用,从长视频或音频中生成会议记录,根据实际的会议内容,设置不同的抽取参数,生成合适的会议关键数据

智能会议纪要生成,从音视频到一键生成会议特征数据相关推荐

  1. 音视频技术在云会议场景的拓展和未来

    音视频技术不断发展,云会议场景在人们生活中也越来越常见.那么如何将云会议场景中的音视频技术不断提升改善?本次分享会我们邀请到了来自腾讯会议的商世东先生,他将与我们分享云视频技术在腾讯会议里面的一些领域 ...

  2. 可以一键生成crud的php框架,一键生成CRUD - FastAdmin框架文档 - FastAdmin开发文档

    一键生成CRUD 最后更新时间:2021-01-05 19:54:10 在FastAdmin中可以快速的一键生成CRUD,其中包括控制器.模型.视图.验证器.语言包.JS. 准备工作 在数据库中创建一 ...

  3. 随机排列_图片视频特效一键生成,27 种特效可随机排列组合!

    酷友们,大家好! 相信很多酷友喜欢刷抖音,抖音视频中有很多特效也很酷.其实这些特效称作故障艺术(Glitch Art),就是利用事物形成的故障,进行艺术加工,使这种故障缺陷反而成为一种艺术品,具有特殊 ...

  4. Moviepy音视频开发:生成过场剪辑显示特定信息和倒计时信息

    #### ☞ ░ [老猿Python博文目录](https://blog.csdn.net/LaoYuanPython/article/details/98245036) ░ 一.引言 这两天要剪辑一 ...

  5. lisp坐标一键生成_联排建筑一键生成?你的SU有外挂吧!

    今天小吧要给你们安利一款 超厉害的插件--联排建筑 ▼ 这些都可以一键生成哟 绘制建筑 插件介绍 联排建筑 SUAPP编号450 作者:Eneroth3 插件下载地址 http://www.suapp ...

  6. 音视频从入门到精通——FFmpeg数据结构分析

    FFmpeg数据结构分析 FFmpeg解码流程 重要结构体之间的关系 AVFormatContext iformat:输入媒体的AVInputFormat,比如指向AVInputFormat ff_f ...

  7. 公众号 自动生成海报 python_用python一键生成一张全部微信好友的头像墙

    前言 用 python 代码写了一个一键生成合成微信好友头像的程序,效果如下: 不会写代码?没关系!只要你会使用电脑就 ok! 因为除了用代码方式生成外,还建了一个 .exe 的程序,在电脑点击运行就 ...

  8. admin.php生成地址,FastAdmin命令行一键生成API文档

    一键生成API文档 FastAdmin中的一键生成API文档可以在命令行或后台一键生成我们API接口的接口测试文档,可以直接在线模拟接口请求,查看参数示例和返回示例. 准备工作 请确保你的API模块下 ...

  9. webRTC(四):Webrtc音视频数据采集录制采集屏面数据

    WebRTC音视频数据采集 var constraints={video: true,audio: true,}navigator.mediaDevices.getUserMedia(constrai ...

最新文章

  1. Keil调试局部变量显示not in scope的问题解决
  2. Selenium3自动化测试——4. 获取百度备案信息
  3. cad去水印_CAD神技巧神插件,助你绘图效率提高N倍!
  4. loadrunner中对https证书的配置
  5. 2021计算机应用基础形考答案模块2,国家开放大学计算机应用基础模块2形考答案-20210603091431.docx-原创力文档...
  6. jni调用java类_JNI之C++调用Java类 —— java.lang.String
  7. adb logcat 保存_adb logcat命令查看并过滤android输出log
  8. ASP.NET MVC中Area的另一种用法
  9. ea6500 v1 刷梅林_【求助】EA6500 V1和RT-AC66U硬件配置接近,怎么没有EA6500V1可以刷的梅林...
  10. 斯皮尔曼相关系数计算的python代码
  11. 新手CrossApp 之ScrollView小结
  12. XMind 8 Update 7 激活
  13. H5 打开微信小程序 公众号
  14. gitbub(cp:http://www.linuxidc.com/Linux/2014-03/97821.htm)
  15. 网页视频改变加速倍数的方法
  16. 为什么站点访问慢?请收好这份 Web 服务器性能提升的总结
  17. DP(Nietzsche)的hu测 T1(状压dp)
  18. Mac下AndroidStudio无法识别安卓手机问题解决
  19. 怎样将PDF文档进行翻译?PDF文档翻译简单方法介绍
  20. 孩子学习计算机影响视力吗,影响孩子视力的3大原因,不是电脑!不是手机!...

热门文章

  1. Python使用requests和BeautifulSoup爬取网站内容
  2. 22 Herschel(1850)和麦克斯韦(1860)的推导
  3. word论文尾注格式处理
  4. 如关于 sinx 与 cosx 是用如下两个多项式来近似表达的
  5. 关于FX3ga PLC modbus的使用
  6. 关于浏览器兼容性问题
  7. BBC Worldwide:数字应用利润化
  8. 银河麒麟V10 sp2 计划任务at
  9. 简单的彩票大乐透选号工具
  10. PMP考试的报名时间