Ubuntu环境使用 Whisper 与 ZhipuAI 实现本地批量视频转录与文本标点复原(本地亲测可用)
使用 Whisper 与 ZhipuAI 实现批量视频转录与文本标点添加
在本篇博客中,我们将介绍一个实用的项目,帮助初学者了解如何使用 Whisper 和 ZhipuAI 的 API 来进行视频转录和文本处理。这个项目主要功能是将视频转录成文本,并利用大语言模型为转录文本添加标点符号,整个过程都是自动化完成的。
项目背景–傻瓜式实现完整文件夹内视频一键转录为文本!
随着视频内容的不断增加,手动对视频中的对话进行转录是一项耗时且枯燥的任务。本项目利用了 OpenAI 提供的 Whisper 模型,它是一个强大的自动语音识别(ASR)工具,可以自动将音频转录为文本。随后,为了使转录后的文本更加流畅,我们利用了智谱 AI 的 GLM4 模型来为文本添加标点符号。
这个工具能够批量处理视频文件,适合那些需要自动生成视频字幕或对视频内容进行文本分析的开发者。尤其对于 IT 新手来说,本项目可以帮助大家理解多线程处理、GPU 使用、API 调用等内容。
项目依赖与准备
在开始之前,你需要确保以下依赖已经安装:
- Python 3.8 或更高版本
- CUDA(如果你希望使用 GPU 加速)
- Whisper
- ffmpeg
- tqdm(用于进度条显示)
- psutil(用于内存监控)
- zhipuai(用于调用智谱 AI 的 API)
1、安装依赖
你可以通过以下命令来安装必要的 Python 库:
pip install torch whisper ffmpeg-python tqdm psutil zhipuai
此外,请确保你已经安装了 ffmpeg。
可参考我的安装ffmpeg教程
2、免费获取并使用智谱API
前往https://www.bigmodel.cn/ 注册,获取免费API。
3、如何运行这个项目
- 克隆或下载项目代码,确保所有依赖已经安装。
- 修改代码中的
api_key
为你自己的智谱 AI API 密钥。
client = ZhipuAI(api_key="your_api_key")
- 将你要处理的视频文件放入指定文件夹中,并修改对应路径。
# 设定视频文件夹路径
video_folder_path = Path("/hy-tmp")
- 运行脚本即可开始批量处理视频。
python transcribe_videos.py
项目代码解析–学习分享
1. 导入依赖并设置设备
在项目中,我们首先导入了所有需要的 Python 库。通过 torch.cuda.device_count()
来判断是否有可用的 GPU,从而决定是使用 GPU 还是 CPU 来进行计算。
import torch
available_gpus = torch.cuda.device_count()
use_gpu = available_gpus > 0
device = "cuda" if use_gpu else "cpu"
2. 设置线程和初始化任务队列
项目中使用了 threading
和 ThreadPoolExecutor
来实现多线程处理。具体来说,为每个 GPU 分配了 2 个线程,如果是 CPU,则只使用一个线程。任务队列用于存放需要处理的视频文件。
from queue import Queue
import threadingthreads_per_gpu = 2 if use_gpu else 1
num_threads = max(available_gpus * threads_per_gpu, 1)
task_queue = Queue()
completion_task_queue = Queue()
3. 初始化 Whisper 模型并转录视频
使用 Whisper 模型将视频的音频内容提取并转录为文本。如果音频文件已经存在,则跳过提取步骤,从而节省时间。
import whisper
import subprocessmodel = whisper.load_model("large", device=device)
def transcribe_video(video_path):audio_path = video_path.with_suffix(".mp3")if not audio_path.exists():subprocess.run(["ffmpeg", "-i", str(video_path), "-ar", "16000", "-ac", "1", "-q:a", "2", str(audio_path)], check=True)result = model.transcribe(str(audio_path), language="zh", task="transcribe")return result["text"]
4. 使用 GLM4 添加标点符号
对于标点符号的添加,项目使用了智谱 AI 的 GLM4 模型。由于大段文本可能超过 API 限制,因此将文本分割成多个小段来处理,然后合并所有的标点结果。
from zhipuai import ZhipuAI
client = ZhipuAI(api_key="your_api_key")def add_punctuation_glm4(text, max_chunk_size=2048):chunks = [text[i:i + max_chunk_size] for i in range(0, len(text), max_chunk_size)]punctuated_text = ""for chunk in chunks:response = client.chat.completions.create(model="glm-4-plus",messages=[{"role": "user", "content": chunk}],stream=True,)for res in response:punctuated_text += res.choices[0].delta.contentreturn punctuated_text
5. 批量处理视频文件
通过递归的方式遍历文件夹中的视频文件,将每个视频文件放入任务队列,并使用多线程进行处理。这样可以显著提高处理速度。
from concurrent.futures import ThreadPoolExecutordef transcribe_folder(folder_path):folder = Path(folder_path)video_files = list(folder.rglob("*.mp4"))for video_file in video_files:task_queue.put(video_file)with ThreadPoolExecutor(max_workers=num_threads) as executor:for _ in range(num_threads):executor.submit(worker_thread)
注意事项
- GPU 使用:如果你有可用的 GPU,Whisper 会自动利用 GPU 来加速转录过程。如果没有 GPU,则使用 CPU,但处理速度会慢很多。
- 内存检查:项目中加入了内存检查功能,确保系统不会因为内存不足而崩溃。
- API 调用限制:智谱 AI 的 API 可能会有调用次数或并发限制,因此在使用时要注意合理分配。
- 多线程:目前建议指定单线程运行,多线程不稳定(不修改项目代码默认项目线程为1)。
总结
通过本项目,你可以了解到如何利用开源的自动语音识别工具(如 Whisper)和大语言模型(如 GLM4)来实现批量视频转录和文本处理。这些工具和技术的结合不仅简化了转录和标点添加的过程,还展示了多线程处理在实际项目中的应用。
希望这个项目能帮助你更好地理解视频处理自动化的相关技术,欢迎大家留言讨论或提出改进建议!
相关文章:
Ubuntu环境使用 Whisper 与 ZhipuAI 实现本地批量视频转录与文本标点复原(本地亲测可用)
使用 Whisper 与 ZhipuAI 实现批量视频转录与文本标点添加 在本篇博客中,我们将介绍一个实用的项目,帮助初学者了解如何使用 Whisper 和 ZhipuAI 的 API 来进行视频转录和文本处理。这个项目主要功能是将视频转录成文本,并利用大语言模型为转…...
SPI机制
一、SPI简介 SPI(Service Provider Interface)机制是一种服务发现机制,广泛用于Java生态中。它允许框架或库通过接口解耦具体实现,用户可以在运行时动态地提供接口的实现,而不是在编译时确定。这种机制在很多场景下非…...

生信分析流程:从数据准备到结果解释的完整指南
介绍 生物信息学(生信)分析是一个复杂的过程,涉及从数据准备到结果解释的多个步骤。随着高通量测序技术的发展和生物数据的迅猛增长,了解和掌握生信分析的标准流程变得尤为重要。这不仅有助于提高分析的准确性,还能优…...
golang语法
参考链接:https://www.runoob.com/go/ 创建变量 // 3种方法 var a int a : 10 // 类型推断 a : make() // 复合类型循环 // 3种循环 for i : 0; i < 10; i {// 循环体} // 传统for循环 for index, num : range nums {// 循环体} // nums是可迭代的复合类型…...

【fisco学习记录2】多群组搭建
说明 文档参考: 多群组部署 — FISCO BCOS 2.0 v2.11.0 文档 (fisco-bcos-documentation.readthedocs.io) 多群组搭建之前,先暂停之前的单群组,并删除: cd fisco bash nodes/127.0.0.1/stop_all.sh rm -rf nodes/ 实现图&…...
深度解读:路由交换、负载均衡与防火墙的网络交响
一、路由交换:网络流动的“大动脉” 1. 路由:决定命运的“路径规划师” 路由技术如同现代交通网络中的导航系统,决定了数据从起点到终点的最佳路径。路由器基于网络层IP地址,对每个数据包进行精确的路径选择,并确保其…...

linux线程 | 线程的控制(二)
前言: 本节内容是线程的控制部分的第二个小节。 主要是列出我们的线程控制部分的几个细节性问题以及我们的线程分离。这些都是需要大量的代码去进行实验的。所以, 准备好接受新知识的友友们请耐心观看。 现在开始我们的学习吧。 ps:本节内容适合了解线程…...

npm install报错一堆sass gyp ERR!
执行npm install ,出现一堆gyp含有sass错误的情况下。 解决办法: 首页可能是node版本问题,太高或者太低,也会导致npm install安装错误(不会自动生成node_modules文件),本次试验,刚开…...
微知-BlueField DPU在lspci中显示Flash Recovery是什么意思?
效果: lspci |grep BlueField10:00.0 Memory controller: Mellanox Technologies MT42822 Family [BlueField-2 SoC Flash Recovery] (rev 01)*原因: 表示此时flash是empty空的,或者在flash中的FW是无法工作的。比如烧录错误。 这里指的一提…...
【前端知识点】前端笔记
css 引入css文件的文件路径 <!-- 引入外部 CSS 文件 --> <!-- 当前文件所在文件夹目录 --> <link rel"stylesheet" href"./"> <!-- 当前文件所在父文件夹目录 --> <link rel"stylesheet" href"../">j…...
Sping Cache 使用详解
缓存是提升应用性能的常用手段。它通过将耗时的操作结果存储起来,下次请求可以直接从缓存中获取,从而避免重复计算或查询数据库,显著减少响应时间和服务器负载。Spring 框架提供了强大的缓存抽象 Spring Cache,它简化了缓存的使用…...
动手学深度学习60 机器翻译与数据集
1. 机器翻译与数据集 import os import torch from d2l import torch as d2l#save d2l.DATA_HUB[fra-eng] (d2l.DATA_URL fra-eng.zip,94646ad1522d915e7b0f9296181140edcf86a4f5)#save def read_data_nmt():"""载入“英语-法语”数据集"&qu…...
Python网络爬虫技术
Python网络爬虫技术详解 引言 网络爬虫(Web Crawler),又称网络蜘蛛(Web Spider)或网络机器人(Web Robot),是一种按照一定规则自动抓取互联网信息的程序或脚本。它们通过遍历网页链…...

黑马程序员-redis项目实践笔记1
目录 一、 基于Session实现登录 发送验证码 验证用户输入验证码 校验登录状态 Redis代替Session登录 发送验证码修改 验证用户输入验证码 登录拦截器的优化 二、 商铺查询缓存 缓存更新策略 数据库和缓存不一致解决方案 缓存更新策略的最佳实践方案 实现商铺缓…...

ES-入门聚合查询
url 请求地址 http://192.168.1.108:9200/shopping/_search {"aggs": { //聚合操作"price_group":{ //名称,随意起名"terms":{ //分组"field": "price" //分组字段}}} } 查询出来的结果是 查询结果中价格的平均值 {&q…...
七维大脑: 探索人类认知的未来之路
七维大脑: 探索人类认知的未来之路 随着科技的不断发展,人们对于大脑的认知也在不断扩展。近年来,科学家们提出了一个名为“七维大脑”的概念,试图通过七个维度来理解人类的认知过程。这个概念的提出,让人们开始思考&…...

spring |Spring Security安全框架 —— 认证流程实现
文章目录 开头简介环境搭建入门使用1、认证1、实体类2、Controller层3、Service层3.1、接口3.2、实现类3.3、实现类:UserDetailsServiceImpl 4、Mapper层3、自定义token认证filter 注意事项小结 开头 Spring Security 官方网址:Spring Security官网 开…...
Django+vue自动化测试平台---正式开源!!!
自动化测试:接口、Web UI 与 App 的全面探索 在此郑重声明:本文内容未经本人同意,不得随意转载。若有违者,必将追究其法律责任。同时,禁止对相关源码进行任何形式的售卖行为,本内容仅供学习使用。 Git 地…...

电子电气架构 --- 智能网联汽车未来是什么样子?
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…...

docker安装elasticsearch(es)+kibana
目录 docker安装elasticsearch 一.准备工作 1.打开docker目录 2.创建elasticsearch目录 3.打开elasticsearch目录 4.拉取elasticsearch镜像 5.检查镜像 二.挂载目录 1.创建数据挂载目录 2.创建配置挂载目录 3.创建插件挂载目录 4.权限授权 三.编辑配置 1.打开con…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...

基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...