摘要:随着视频内容的爆炸式增长,如何快速、准确地提取视频中的关键信息已成为亟待解决的问题。在人工智能技术的推动下,自动化视频内容总结正在成为一项颇具前景的研究方向。本次介绍的技术基于openMind和MindSpore NLP,结合Whisper模型和OpenAI的
随着视频内容的爆炸式增长,如何快速、准确地提取视频中的关键信息已成为亟待解决的问题。在人工智能技术的推动下,自动化视频内容总结正在成为一项颇具前景的研究方向。本次介绍的技术基于openMind和MindSpore NLP,结合Whisper模型和OpenAI的接口,能够高效完成视频的转录和内容总结。这项技术不仅支持高效的文本提取,还提供智能化的总结能力,为视频内容的管理与分析提供了一种简易可行的方案。
一、核心功能介绍
1、视频音频提取
为了实现视频内容的总结,首先需要提取视频中的音频。通过使用FFmpeg技术,可以快速从视频中分离音频文件。以下是音频提取的代码示例:
def extract_audio_from_video(video_path, output_audio_path): """ 使用ffmpeg从视频中提取音频。 参数: video_path (str): 视频文件的路径。 output_audio_path (str): 提取的音频文件保存路径。 """ stream = ffmpeg.input(video_path) stream = ffmpeg.output(stream, output_audio_path) ffmpeg.run(stream)
这一步之后,视频中的音频将会被提取出并保存为wav格式。
2、音频转录为文本
在完成音频提取后,利用Whisper模型对音频进行转录,将语音内容转换为文本。Whisper模型以其高效的转录能力,可以生成带时间戳的文本内容。
# 步骤2:使用Whisper模型将音频转录为文本def transcribe_audio_to_text(audio_path): model = whisper.load_model("base") # 选择适当大小的模型 result = model.transcribe(audio_path) return result
输出的是音频文件转换结果,由于这里的视频是中文的,因此输出为中文。
3. 视频内容自动总结
为了对视频内容进行总结,结合openMind的强大能力,设计了一套自动化总结流程。通过预设提示语(Prompt),系统能够生成清晰、结构化的总结内容。总结内容包括开始时间、片段标题(带emoji)和内容摘要。
def get_response(messages): """ 使用openMind的pipeline生成视频内容的总结。 参数: messages (list): 包含系统和用户提示的字典列表。 返回: str: 模型生成的总结内容。 """ client = openmind.OpenAI( api_key=" sk-xxxx", # API Key base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", ) completion = client.chat.completions.create( model="qwen-max", messages=messages ) return completion def summarize_video(video_path): """ 主函数:对视频内容进行总结。 参数: video_path (str): 视频文件的路径。 返回: str: 视频内容的总结。 """ result = video_to_text(video_path) cc = opencc.OpenCC("t2s") # 繁体转简体中文转换器 time_res = "" for segment in result['segments']: res = cc.convert(segment['text']) time_res += f"{segment['start']}秒-{segment['end']}秒:{res}\n" res = cc.convert(result['text']) # OpenMind的提示 sys_prompt = ( "你是一位视频内容分析助手,你需要从给定的视频文本中提取关键信息,并生成一份清晰的总结。总结内容要求如下:" "\n1. 每个视频片段的总结应包含三部分:开始时间、标题(带emoji)和内容摘要。" "\n2. 使用简短而准确的时间戳,格式为\"xxx秒\"。" "\n3. 请确保标题以emoji开头,以概括每段内容的核心要点,标题要简洁。" "\n4. 结合片段内容,使用合适的emoji(例如�� 表示学习内容,�� 表示技术概念,��️ 表示工具介绍等)。" "\n5. 请用简洁的中文陈述每个视频片段的要点,确保内容通俗易懂,富有逻辑性,不要太短。" "\n6. 整个总结应以段落形式呈现,保持条理清晰。" ) messages = [{'role': 'system', 'content': sys_prompt}] user_input = f"以下是视频内容:\n{res}\n以下是字幕时间:\n{time_res}" messages.append({'role': 'user', 'content': user_input}) assistant_output = get_response(messages).choices[0].message.content return assistant_output
由于前面获得了带时间戳的文本内容,因此可以将时序信息和文本信息都传递给大模型。
最终输出:
二、效果分析
总结内容按照时间顺序逐段排列,每段都明确标注了开始时间,便于快速定位视频内容。使用了清晰的段落形式呈现,逻辑条理性较强。每段内容的标题使用了emoji,增强了可读性和吸引力。标题简洁且贴合内容主题(例如 �� 标识症状描述,�� 标识生活注意事项),便于用户快速浏览和获取关键信息。
各段摘要内容通俗易懂,避免了复杂术语的堆砌,适合非专业读者。内容较为全面,涵盖了症状、诊断、治疗和注意事项等重要信息。每段总结包含时间戳,使内容对视频的引用非常直观,符合需求。
三、体验空间
部署在https://modelers.cn/spaces/xyb/video_summary
上传视频后,需要提供自己的DashScope的API,默认使用Qwen-max模型,默认音频转文字模型使用Whisper-base,点击“生成总结”得到输出。
三、总结
基于MindSpore NLP和openMind的简单视频总结技术,提供了一个完整、高效的解决方案,展示了强大的文本生成和处理能力。同时,依托魔乐社区(Modelers) 的开放生态,我们不仅能够快速获取高质量的模型资源,还能借助社区提供的工具和文档,简化项目开发流程。魔乐社区的丰富资源和活跃的技术交流氛围,为开发者提供了一个理想的平台,将前沿技术快速落地并实现应用。
通过本项目,深刻体现了开源框架和开发者社区在推动人工智能技术创新和应用中的重要价值。未来,借助魔乐社区、MindSpore NLP 和 openMind 的持续发展,我们相信更多复杂的 AI 应用场景将变得触手可及,助力开发者实现更加高效、智能和便捷的技术解决方案!
来源:DataFunTalk