windows系统怎么做ppt下载网站,做海报的素材网站,100件智能创意产品设计,浏览器网页版入口目录
一、引言
二、FFmpeg工具介绍
2.1 什么是FFmpeg
2.2 FFmpeg核心原理
2.3 FFmpeg使用示例
三、FFmpegWhisper二阶段法视频理解实战
3.1 FFmpeg安装
3.2 Whisper模型下载
3.3 FFmpeg抽取视频的音频
3.3.1 方案一#xff1a;命令行方式使用ffmpeg
3.3.2 方案二Whisper二阶段法视频理解实战
3.1 FFmpeg安装
3.2 Whisper模型下载
3.3 FFmpeg抽取视频的音频
3.3.1 方案一命令行方式使用ffmpeg
3.3.2 方案二ffmpeg-python库使用ffmpeg
3.4 Whisper将音频转为文本
3.5 视频理解完整代码
3.6 视频理解模型部署
四、总结 一、引言
上一篇对Whisper原理和实战进行了讲解第7次拿到了热榜第一。今天我们在Whisper的基础上引入ffmpeg工具对视频的音频进行抽取再使用Whisper将音频转为文本通过二阶段法实现视频内容的理解。
二、FFmpeg工具介绍
2.1 什么是FFmpeg
FFmpeg是一个开源的跨平台多媒体处理工具它可以处理音频/视频数据包括转码、转换格式、分割、合并等操作。
2.2 FFmpeg核心原理 多媒体流的解析FFmpeg能够解析各种常见的多媒体格式包括MP4, MKV, AVI, MP3, OGG等并将其转换为FFmpeg内部的统一表示格式也就是所谓的复用格式Container Format和编码格式Codec。多媒体流的编码和解码FFmpeg可以使用不同的编解码器来编码和解码音频/视频数据。例如它可以使用H.264编码来压缩视频数据使用AAC编码来压缩音频数据。过滤器FiltersFFmpeg提供了一个强大的过滤器系统可以用来处理视频和音频的各种效果例如裁剪、裁切、旋转、缩放等。流的复用和解复用FFmpeg可以将多个音频/视频流合并为一个文件也可以将一个文件分离成多个音频/视频流。并行处理FFmpeg利用多线程技术可以并行处理多个任务比如同时进行多个转码操作。 2.3 FFmpeg使用示例
ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -ab 192k -f mp3 output.mp3 -i input.mp4 指定输入文件。-vn 表示禁用视频录制。-ar 44100 设置采样率为44.1kHz。-ac 2 设置声道数为2立体声。-ab 192k 设置比特率为192k。-f mp3 设置输出格式为MP3。output.mp3 是输出文件的名称。 三、FFmpegWhisper二阶段法视频理解实战
3.1 FFmpeg安装
由于FFmpeg不支持pip安装所以需要使用apt-get
sudo apt-get update apt-get install ffmpeg
3.2 Whisper模型下载
这里与上一篇一样还是采用transformers的pipeline首先创建conda环境以及安装transformers
创建并激活conda环境
conda create -n video2text python3.11
conda activate video2text
安装transformers库
pip install transformers -i https://mirrors.cloud.tencent.com/pypi/simple
基于transformers的pipeline会自动进行模型下载当然如果您的网速不行请替换HF_ENDPOINT为国内镜像。
os.environ[HF_ENDPOINT] https://hf-mirror.comtranscriber pipeline(taskautomatic-speech-recognition, modelopenai/whisper-medium) 不同尺寸模型参数量、多语言支持情况、需要现存大小以及推理速度如下 3.3 FFmpeg抽取视频的音频
3.3.1 方案一命令行方式使用ffmpeg
首先将ffmpeg命令放入ffmpeg_command之后采用subprocess库的run方法执行ffmpeg_command内的命令。
输入的视频文件为input_file输出的音频文件为output_file。
import subprocess
def extract_audio(input_file, output_file):使用FFmpeg从MP4文件中提取音频并保存为MP3格式。:param input_file: 输入的MP4文件路径:param output_file: 输出的MP3文件路径# 构建FFmpeg命令ffmpeg_command [ffmpeg, -i, input_file, -vn, -acodec, libmp3lame, output_file]try:# 执行命令subprocess.run(ffmpeg_command, checkTrue)print(f音频已成功从 {input_file} 提取到 {output_file})except subprocess.CalledProcessError as e:print(f处理错误: {e})
3.3.2 方案二ffmpeg-python库使用ffmpeg
首先安装ffmpeg-python pip install ffmpeg-python -i https://mirrors.cloud.tencent.com/pypi/simple 引入ffmpeg库一行代码完成音频转文本
import ffmpeg
def extract_audio(input_file, output_file):使用FFmpeg从MP4文件中提取音频并保存为MP3格式。:param input_file: 输入的MP4文件路径:param output_file: 输出的MP3文件路径try:# 执行命令ffmpeg.input(input_file).output(output_file, acodeclibmp3lame, ac2, ar44100).run()print(f音频已成功从 {input_file} 提取到 {output_file})except subprocess.CalledProcessError as e:print(f处理错误: {e})
3.4 Whisper将音频转为文本
from transformers import pipeline
def speech2text(speech_file):transcriber pipeline(taskautomatic-speech-recognition, modelopenai/whisper-medium)text_dict transcriber(speech_file)return text_dict
这里采用pipeline完成openai/whisper-medium的模型下载以及实例化将音频文件输入实例化的transcriber对象即刻得到文本。
3.5 视频理解完整代码
import os
os.environ[HF_ENDPOINT] https://hf-mirror.com
os.environ[CUDA_VISIBLE_DEVICES] 2
os.environ[TF_ENABLE_ONEDNN_OPTS] 0from transformers import pipeline
import subprocessdef speech2text(speech_file):transcriber pipeline(taskautomatic-speech-recognition, modelopenai/whisper-medium)text_dict transcriber(speech_file)return text_dict
def extract_audio(input_file, output_file):使用FFmpeg从MP4文件中提取音频并保存为MP3格式。:param input_file: 输入的MP4文件路径:param output_file: 输出的MP3文件路径# 构建FFmpeg命令ffmpeg_command [ffmpeg, -i, input_file, -vn, -acodec, libmp3lame, output_file]try:# 执行命令subprocess.run(ffmpeg_command, checkTrue)print(f音频已成功从 {input_file} 提取到 {output_file})except subprocess.CalledProcessError as e:print(f处理错误: {e})import argparse
import json
def main():parser argparse.ArgumentParser(description视频转文本)parser.add_argument(--video,-v, typestr, help输入视频文件路径)parser.add_argument(--audio,-a, typestr, help输出音频文件路径)args parser.parse_args()print(args) extract_audio(args.video, args.audio)text_dict speech2text(args.audio)print(视频内的文本是\n text_dict[text])#print(视频内的文本是\n json.dumps(text_dict,indent4))if __name____main__:main()
输出为 3.6 视频理解模型部署
如果想将该服务部署成语音识别API服务可以参考之前的FastAPI相关文章。
四、总结
本文在上一篇音频转文本的基础上引入了视频转音频这样可以采用二阶段法先提取音频再音频转文字的方法完成视频内容理解。之后可以配上LLM对视频内提取的文本进行一系列应用。
希望可以帮到您如果觉得有帮助的话期待您的三连投票 如果您还有时间可以看看我的其他文章
《AI—工程篇》
AI智能体研发之路-工程篇一Docker助力AI智能体开发提效
AI智能体研发之路-工程篇二Dify智能体开发平台一键部署
AI智能体研发之路-工程篇三大模型推理服务框架Ollama一键部署
AI智能体研发之路-工程篇四大模型推理服务框架Xinference一键部署
AI智能体研发之路-工程篇五大模型推理服务框架LocalAI一键部署
《AI—模型篇》
AI智能体研发之路-模型篇一大模型训练框架LLaMA-Factory在国内网络环境下的安装、部署及使用
AI智能体研发之路-模型篇二DeepSeek-V2-Chat 训练与推理实战
AI智能体研发之路-模型篇三中文大模型开、闭源之争
AI智能体研发之路-模型篇四一文入门pytorch开发
AI智能体研发之路-模型篇五pytorch vs tensorflow框架DNN网络结构源码级对比
AI智能体研发之路-模型篇六【机器学习】基于tensorflow实现你的第一个DNN网络
AI智能体研发之路-模型篇七【机器学习】基于YOLOv10实现你的第一个视觉AI大模型
AI智能体研发之路-模型篇八【机器学习】Qwen1.5-14B-Chat大模型训练与推理实战
AI智能体研发之路-模型篇九【机器学习】GLM4-9B-Chat大模型/GLM-4V-9B多模态大模型概述、原理及推理实战
AI智能体研发之路-模型篇十【机器学习】Qwen2大模型原理、训练及推理部署实战
《AI—Transformers应用》
【AI大模型】Transformers大模型库一Tokenizer
【AI大模型】Transformers大模型库二AutoModelForCausalLM
【AI大模型】Transformers大模型库三特殊标记special tokens
【AI大模型】Transformers大模型库四AutoTokenizer
【AI大模型】Transformers大模型库五AutoModel、Model Head及查看模型结构
【AI大模型】Transformers大模型库六torch.cuda.OutOfMemoryError: CUDA out of memory解决
【AI大模型】Transformers大模型库七单机多卡推理之device_map
【AI大模型】Transformers大模型库八大模型微调之LoraConfig