综合设计——多源异构数据采集与融合应用综合实践

发布时间 2023-12-14 21:21:24作者: kanata_konoe
这个项目属于哪个课程 2023数据采集与融合技术 (福州大学 - 福州大学计算机与大数据学院)
组名、项目简介 组名:你在跟我作队
项目需求:(1)音视频转文字准确性 (2)实时性 (3)多语种支持 (4)扩展性
项目目标:①搭建轻量级网站平台提供交互。②利用大模型及第三方库解析音视频及图片。③性能测试及优化
项目开展技术路线:(1)HTML/CSS/JavaScript前端编写(2)Python flask请求处理、URL路由、模板渲染,快速搭建轻量级交互式web。(3)Whisper大模型解析视频,多语言语音识别、翻译。pytesseract库及Tesseract识别引擎提取图片文字。
团队成员学号 组长:陈星宇 102102135
组员:
冯展  052101102
王剑瑜 102102113
吴钦堋 052106102
李嘉骏 102102122
戴坤松 032004111
这个项目的目标 (1)搭建轻量级网站平台。(2)输入视频网址,利用大模型解析视频,将音视频转文字,概括视频主要内容,同时获取评论,提炼观看者对视频内容看法。输入图片网址,提取图片上文字。(3)将上述处理结果通过搭建的web网页进行交互式输入输出。(4)性能测试与优化,提高转文字准确性,实时性,多语种,可扩展性和灵活性
其他参考文献 《语音识别技术的研究与发展》
《基于深度学习的语音识别研究》
《Whisper: A Self-supervised Speech Pre-training Method》
《Large-scale Weakly Supervised Pre-training for Speech Recognition》
《Improving the Robustness of Whisper with Domain-Adaptive Training》

项目概述

在当今的信息时代,视频是一种非常流行和有效的传播媒介,它可以展示丰富的内容和形式,吸引人们的注意力和兴趣。然而,视频也有一些缺点,比如占用较大的存储空间和网络带宽,需要较长的观看时间,难以快速获取关键信息等。因此,有时候我们需要从视频中提取出文字的摘要,方便我们进行查阅、复习、引用等操作。

为了解决这个问题,我们利用了whisper和大语言模型这两个人工智能技术,制作了一个视频总结工具,可以从视频中提取语音,转换为文本,并生成摘要。我们的项目目的是为了帮助用户快速了解视频的主要内容,节省观看时间和带宽,提高学习和工作的效率。

项目需求:

  1. 音视频转文字准确性
  2. 实时性
  3. 多语种支持
  4. 扩展性

项目目标:

  1. 搭建轻量级网站平台提供交互
  2. 利用大模型及第三方库解析音视频及图片
  3. 性能测试及优化

项目开展技术路线:

  1. HTML/CSS/JavaScript前端编写
  2. Python flask请求处理、URL路由、模板渲染,快速搭建轻量级交互式web。
  3. Whisper大模型解析视频,多语言语音识别、翻译。pytesseract库及Tesseract识别引擎提取图片文字。

个人负责部分

我负责的部分是视频转语音、大语言模型的对接。

视频转语音

视频来源是 bilibili ,我采用了开源的视频下载工具 you-get,其介绍如下:

You-Get is a tiny command-line utility to download media contents (videos, audios, images) from the Web, in case there is no other handy way to do it.

采用现成的方案是因为 you-get 可以直接解析视频链接,同时集成了下载器。因此我们无需进行相关编码,节省了时间,同时也降低程序出错的可能性。由于 you-get 是命令行工具,因此我们不能在 python 文件中直接进行 import 操作,为此,我使用了 subprocess 让程序可以和命令行交互从而实现视频下载。

def get_video_info(url):
    command = 'you-get --json ' + url
    p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    return json.loads(p.stdout.read().decode())


def download(url, filename):
    command = 'you-get -o ./ -O ' + filename + ' ' + url
    p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    return p.stdout.read().decode()

视频下载完成后使用 ffmpeg 进行转码,将其转换为mp3

def convert_to_mp3(filename):
    input_file = glob.glob(filename + '.*')[0]
    output_file = filename + '.mp3'
    ffmpeg.input(input_file).output(output_file).run()
    os.remove(input_file)
    return output_file

最后使用 whisper 进行语音转文字

Whisper is a general-purpose speech recognition model. It is trained on a large dataset of diverse audio and is also a multitasking model that can perform multilingual speech recognition, speech translation, and language identification.

代码如下

model = whisper.load_model('medium')
result = model.transcribe(filename + '.mp3')

medium模型效果较好,但是速度较慢且占用显存较大,在最后的部署中可能需要进行调整。

大模型的对接

视频总结的大模型我选择了文心一言,理由如下:

  1. 对大陆地区友好,无地区限制
  2. 提供了便捷的api
  3. 提供了测试用的token,只需要使用飞桨的access key即可调用

但是其也有一定缺点:

  1. 上下文字数限制4800字,无法总结长视频,相较gpt
  2. 测试api反应较慢 如果有钱我也用gpt

对文心一言的prompt如下:

请根据视频的字幕对视频内容进行总结,字幕可能有错别字以及语义错误,请忽略这些错误。在下一段对话中我会把字幕给你

受字数限制,我们无法将时间码一并提交,且提交内容不含标点符号,但是文心一言返回的结果依旧处于可用范围内。

示例:(BV1yH4y1q7Bn,总结内容受字幕错别字影响,但总体无错误,错误部分以用删除线标出)

这段视频中描述了修理一台 被称为"G哥"的 笔记本电脑的过程,针对该电脑出现的黑屏问题,作者尝试了多种方法进行解决。首先,作者提到了一种可能的解决方案,即更换屏幕,但该电脑的屏幕并没有任何物理损坏,因此这个方法并不适用。随后,作者又尝试了重新安装系统和更新EC(Electronic Control)等操作,但都没有解决问题。最终,作者发现了一个可行的解决方案,即通过调整电源管理设置来解决问题。作者发现,当电脑处于低电量时,会自动降低CPU频率以节省电量,导致电脑运行缓慢,进而出现黑屏等问题。通过调整电源管理设置,使电脑在低电量时不会降低CPU频率,即可解决该问题。

Gitee链接

链接

文件改为了 ipynb 格式,可直接在 jupyter notebook 中运行,也可以直接查看文件已有的历史运行结果。