【开源工具】使用Whisper提取视频、语音的字幕

这里写目录标题

  • 一、语音转字幕操作步骤
    • 1、下载安装包Assets\WhisperDesktop.zip[^2]
    • 2、加载模型
      • 2.1 下载模型
        • 2.1.1 进入Hugging Face[^3]的仓库
        • 2.1.2 选择需要下载的模型
        • 2.1.3 配置模型路径
    • 3、语音转字幕
    • 4、实时语言转录功能
  • 二、相关简介[^1]
    • 特点
    • 开发人员指南
      • 构建说明
      • 其他注意事项
      • 绩效说明
      • 进一步优化
      • 缺少的功能
      • 结尾语

一、语音转字幕操作步骤

1、下载安装包Assets\WhisperDesktop.zip1

2、加载模型

运行WhisperDesktop.exe,
启动后加载模型“load model,please wait…”,等待其将模型加载到内存。

2.1 下载模型

刚开始是没有模型的,需要到Hugging Face2的仓库里面下载模型并配置相关路径

2.1.1 进入Hugging Face2的仓库

点击ggerganov/whisper.cpp进入Hugging Face仓库

2.1.2 选择需要下载的模型

在Hugging Face仓库,选择Files and versions,选择以下两种模型:

  • ggml-large.bin
  • ggml-medium.bin
    在这里插入图片描述

2.1.3 配置模型路径

在Load Whisper Model 页,Model Path选择好模型的路径D:\WhisperDestop\ggml-whisper.bin,点击OK,等待其将模型加载到内存。

3、语音转字幕

在Transcribe Audio File页面:

  1. Language:Chinese(视频或语音说话使用的语种)
  2. Translate: (把识别出来的文本给翻译成英文输出)
  3. Transcribe File:C:\xxx.mp4(选择你要提取字幕的视频、音频等)
  4. Output Format:SubRip subtitles(输出格式)
    • None:
    • Text file:纯文本
    • Text with timestamps
    • SubRip subtitles:字幕(标准的字幕格式 时段+文字)
      可以将后缀改为.srt格式,这样的文件可以直接拖放到剪辑软件里面,他会自动给你排列好,像这样的字幕是不需要咱们来对时间的
    • WebVTT subtitles

4、实时语言转录功能

开启实时语言转录之后,你对它说话的话,他会自动把你说的话转换成文字并记录下来

二、相关简介3

特点

  • 基于DirectCompute的供应商无关GPGPU;该技术的另一个名称是“Direct3D 11中的计算着色器”

  • 简单的C++实现,除了基本的操作系统组件之外没有运行时依赖项

  • OpenAI的实现快得多。
    在我的台式电脑上,使用GeForce 1080Ti GPU,中等型号,用PyTorchCUDA转录3:24分钟的语音需要45秒,但我的实现和DirectCompute只需要19秒。
    有趣的是:这是9.63 GB的运行时依赖项,而Whisper.dll431 KB

  • 混合F16/F32精度:自D3D v10.0版本起,Windows需要支持R16_FLOAT缓冲区

  • 内置性能探查器,用于测量单个计算着色器的执行时间

  • 内存使用率低

  • 用于音频处理的Media Foundation支持大多数音频和视频格式(Ogg Vorbis除外),以及大多数在Windows上工作的音频捕获设备(一些专业设备除外,它们只实现ASIO API)。

  • 用于音频捕获的语音活动检测。
    该实现基于Mohammad MoattarMahdi Homayoonpoor 2009年的文章“一种简单但高效的实时语音活动检测算法”。

  • 易于使用的COM型APInuget上提供了惯用的C#包装。1.10版引入了对PowerShell 5.1的脚本支持,这是Windows上预装的旧版本“Windows PowerShell”

  • 可用的预构建二进制文件

唯一支持的平台是64位 Windows
应该在Windows 8.1或更新版本上工作,但我只在Windows 10上测试过。
该库需要一个支持Direct3D 11.0GPU,在2023年,它的意思只是“任何硬件GPU”。最新的不支持D3D 11.0GPU2011年的Intel Sandy Bridge

CPU方面,库需要AVX1F16C支持。

开发人员指南

构建说明

  1. 克隆此存储库

  2. Visual Studio 2022中打开WhisperCpp.sln。我使用的是免费软件社区版,版本17.4.4

  3. 切换到Release 配置

  4. 在解决方案的Tools子文件夹中生成并运行CompressShaders C#项目。要运行该项目,请在visual studio中右键单击“设置为启动项目”,然后在VS的主菜单中单击“调试/启动而不调试”。成功完成后,您应该会看到一个控制台窗口,其中有一行如下所示:
    压缩的46个计算着色器,123.5 kb->18.0 kb

5.构建Whisper项目以获得本机DLL,或用于C#包装器和nuget包的WhisperNet或示例。

其他注意事项

如果你要在使用Visual C++2022或更新版本构建的软件中使用该库,你可能会以.msm合并模块或vc_redist.x64.exe二进制文件的形式重新分发Visual C++运行时DLL

如果你这样做,右键单击Whisper项目、属性、C/C++、代码生成,将“Runtime Library”设置从Multi-threaded (/MT)切换到Multi-threaded DLL (/MD),然后重建:二进制文件将变得更小。

该库包括RenderDoc GPU调试器集成。
RenderDoc启动程序时,按住F12键以捕获计算调用。

如果要调试HLSL着色器,请使用DLL的调试构建,其中包括着色器的调试构建。您将在调试器中获得更好的用户体验。
该存储库包括许多仅用于开发的代码:耦合替代模型实现、一些计算着色器的兼容FP64版本、调试跟踪和比较跟踪的工具等。

这些东西被预处理器宏constexpr标志禁用了,我希望保留在这里没问题。

绩效说明

我在办公地点选择了几款GPU进行有限的测试。

具体来说,我已经为英伟达 1080TiRyzen 7 5700G内部的Radeon Vega 8Ryzen 5 5600U内部的Radeon Vega 7进行了优化。

总结如下。

英伟达为大型型号提供了5.8的相对速度,为中型型号提供了10.6的相对速度。

AMD Ryzen 5 5600U APU为中型型号提供了约2.2的相对速度。不太好,但仍然比实时快得多。

我也在英伟达 1650上测试过:比1080Ti慢,但很好,比实时快得多。

我还测试了酷睿i7-3612QM内部的Intel HD Graphics 4000,中等型号的相对速度为0.14,小型型号为0.44。这比实时慢得多,但我很高兴发现我的软件即使在2012年推出的集成移动GPU上也能工作。

我不确定离散AMD GPU或集成Intel GPU的性能是否理想,它们没有专门针对它们进行优化。
理想情况下,它们可能需要两个最昂贵的计算着色器(mulMatTiled.hlslmulMatByRowTiled.hlsl)的稍微不同的构建。
也许还有其他调整,比如Whisper/D3D/device.h头文件中的useReshapedMatMul()值。

我不知道如何衡量,但我有一种感觉,瓶颈是内存,而不是计算。
黑客新闻上有人测试了3060Ti,即带有GDDR6内存的版本。与1080Ti相比,该GPU具有1.3倍FP32 FLOPS,但具有0.92倍VRAM带宽。该应用程序在3060Ti上慢了约10%。

进一步优化

我只花了几天时间优化这些着色器的性能。
也许可以做得更好,以下是一些想法。

  • 与FP32相比,Radeon Vega或nVidia 1650等较新的GPU具有更高的FP16性能,但我的计算着色器仅使用FP32数据类型。
    一半的细致,两倍的乐趣

  • 在当前版本中,FP16张量使用着色器资源视图向上转换加载的值,使用无序访问视图向下转换存储的值。
    切换到字节地址缓冲区,加载/存储完整的4字节值,并使用f16t32/f32-tof16内部函数在HLSL中进行上变频/下变频可能是个好主意。

  • 在当前版本中,所有着色器都是脱机编译的,Whisper.dll包含DXBC字节码。
    HLSL编译器D3DCompiler_47.dll是一个操作系统组件,速度非常快。对于昂贵的计算着色器,最好提供HLSL而不是DXBC,并在启动时使用宏的特定于环境的值进行编译。

  • 将整个东西从D3D11升级到D3D12可能是个好主意。
    较新的API更难使用,但它包含了D3D11没有的潜在有用功能:wave intrinsic和explicit FP16.。

缺少的功能

未实现自动语言检测。
在当前版本中,实时音频捕获的延迟很高。
具体而言,根据语音检测,该数字约为5-10秒。
至少在我的测试中,当我提供的音频片段太短时,模型并不满意。

我已经增加了延迟并结束了这一天,但理想情况下,这需要一个更好的解决方案来优化用户体验。

结尾语

在我看来,这是一个无偿的业余项目,我在2022-23年的寒假里完成了。

代码可能有一些bug。

软件是“原封不动”提供的,没有任何形式的担保。

感谢Georgi Gerganov实现了whisper.cpp以及GGML二进制格式的模型。

我不会编写Python程序,也对ML生态系统一无所知。

如果没有一个好的C++参考实现来测试我的版本,我甚至不会启动这个项目。

whisper.cpp项目有一个例子,它使用相同的GGML实现来运行另一个OpenAI的模型GPT-2。

用这个项目中已经实现的计算着色器和相关基础设施来支持ML模型应该不难。

如果你觉得这很有用,如果你考虑向“Come Back Alive”基金会捐款,我将不胜感激。


  1. http://github.xiaoc.cn/Const-me/Whisper/releases/tag/1.11.0 ↩︎

  2. https://www.huggingface.co/ggerganov/whisper.cpp ↩︎ ↩︎

  3. http://github.xiaoc.cn/Const-me/Whisper ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/34486.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

英国 Tortoise Media发布2023年全球AI指数排名;美团宣布完成收购光年之外

🦉 AI新闻 🚀 美团宣布完成收购光年之外,加强人工智能竞争力 摘要:美团在公告中宣布于2023年6月29日盘后收购光年之外的全部权益,以加强其在快速增长的人工智能行业中的竞争力。光年之外是中国领先的通用人工智能创新…

SpringBoot整合RabbitMQ实现消息延迟队列(含源码)

环境依赖 SpringBoot 3.1.0 JDK 17 前期准备 安装MQ: liunxdockerrabbitmq安装延迟队列插件 实例 实现延迟队列的一种方式是在 RabbitMQ 中使用消息延迟插件,这个插件可以让你在消息发送时设置一个延迟时间,超过这个时间后消息才会被消费者接收到…

【JVM内存模型】—— 每天一点小知识

💧 J V M 内存模型 \color{#FF1493}{JVM内存模型} JVM内存模型💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客🎐 🐳 《数据结构与算法》专栏的文章图文并茂&#x…

智谱AI-算法实习生(知识图谱方向)实习面试记录

岗位描述 没错和我的经历可以说是match得不能再match了,但是还是挂了hh。 面试内容 给我面试的是唐杰老师的博士生,方向是社交网络数据挖掘,知识图谱。不cue名了,态度很友好的 ,很赞。 date:6.28 Q1 自…

【Spark】介绍,部署与快速入门

文章目录 介绍核心模块Spark CoreSpark SQLSpark StreamingSpark MLlibSpark GraphX 部署命令行Web UI提交应用Local 模式Standalone配置文件添加 JAVA_HOME 环境变量和集群对应的 master 节点启动集群配置历史服务添加日志存储路径添加日志配置webui 配置高可用 Yarn模式配置文…

使用npm install -g @vue/cli 命令安装最新的脚手架与Vue版本不匹配的问题

使用npm install -g vue/cli 命令安装最新的脚手架 创建项目时不要选择Vue版本,让它默认选择(默认选择 Vue2)否则会出现 vue版本和脚手架版本vue-cli 不兼容的问题(怪哉) 脚手架兼容vue2 不兼容vue3 ? 不理…

2023 年 10 大前端发展趋势

新技术的出现和老技术的淘汰让前端开发者们需要不断地学习和更新知识。特别是在经济不好的情况下,是否掌握新的技术很大程度决定着你是否被淘汰。 虽然应用程序试图将网站替代,但前端 Web 开发业务仍在快速变化和增长,前端开发人员的功能并没…

配置Jenkins slave agent(通过jnlp)方式连接

上一章,使用ssh的方式添加了两个agent,并都成功完成了构建任务,这一章使用jnlp的方式配置agent,jnlp方式配置agent有个好处,就是agent是主动去找到Master请求连接的,master->agent的通道可以配置一个age…

Leetcode-每日一题【234.回文链表】

题目 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1]输出:true 示例 2: 输入:head…

要从HTML中提取img标签的src属性(图片链接),可以使用正则表达式方式。

1. 定义提取src属性的正则表达式: const srcRegex /<img\s(?:[^>]*?\s)?src\s*\s*(["])((?:[^\1"]|\\\1|.)*?)\1/g 这个正则会匹配类似<img src"http://example.com/1.jpg">中的src属性和括号中的连接。2. 调用字符串的matchAll()方法…

【数据仓库】Apache Doris介绍

Apache Doris介绍 Apache Doris应用场景 Apache Doris核心特性 Apache Doris架构 Doris数据模型三种 Aggregate模型介绍 Uniq模型介绍 在某些多维分析场景下,用户更关注的是如何保证Key的唯一性Key 唯一性约束。因此&#xff0c;我们引入了 Unig 的数据模型。该模型本质上是聚…

redis高可用(二)

redis高可用&#xff08;二&#xff09; 一、主从复制 1.概念 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点(Master)&#xff0c;后者称为从节点(Slave)&#xff1b;数据的复制是单向的&#xff0c;只能由主节点到…

爬虫入门指南(5): 分布式爬虫与并发控制 【提高爬取效率与请求合理性控制的实现方法】

文章目录 前言多线程与多进程多线程多进程多线程和多进程的选择 使用Scrapy框架实现分布式爬虫1. 创建Scrapy项目2. 配置Scrapy-Redis3. 创建爬虫4. 启动爬虫节点5. 添加任务到队列 并发控制与限制请求频率并发控制限制请求频率 未完待续... 前言 在进行爬虫任务时&#xff0c;…

开源 sysgrok — 用于分析、理解和优化系统的人工智能助手

作者&#xff1a;Sean Heelan 在这篇文章中&#xff0c;我将介绍 sysgrok&#xff0c;这是一个研究原型&#xff0c;我们正在研究大型语言模型 (LLM)&#xff08;例如 OpenAI 的 GPT 模型&#xff09;如何应用于性能优化、根本原因分析和系统工程领域的问题。 你可以在 GitHub …

Scrapy框架--settings配置 (详解)

目录 settings配置 官网-参考配置 配置文档 Scrapy默认BASE设置 settings配置 Scrapy框架中的配置文件&#xff08;settings.py&#xff09;是用来管理爬虫行为和功能的关键部分。它是一个Python模块&#xff0c;提供了各种配置选项&#xff0c;可以自定义和控制爬虫的行为。…

Excel实用技巧 如何将EXCEL中在同个单元格中的汉字和数字分开

右边字符串&#xff0c;左边数字 RIGHT(A1,LENB(A1)-LEN(A1)) LEFT(A1,2*LEN(A1)-LENB(A1)) 左边字符串&#xff0c;右边数字 LEFT(A1,LENB(A1)-LEN(A1)) RIGHT(A1,2*LEN(A1)-LENB(A1))

关注个人信息安全

近日&#xff0c;某高校毕业生在校期间窃取学校内网数据&#xff0c;收集全校学生个人隐私信息的新闻引发了人们对互联网生活中个人信息安全问题的再度关注。在大数据时代&#xff0c;算法分发带来了隐私侵犯&#xff0c;在享受消费生活等便捷权利的同时&#xff0c;似乎又有不…

jupyter-notebook使用指南

jupyter-notebook使用指南 jupyter-notebook安装[python版][anaconda版] jupyter-notebook如何导出PDF&#xff1f;【没解决&#xff0c;直接看最后&#xff0c;不要跟着操作&#xff01;】正常导出步骤安装Pandoc安装Xelatex问题没解决&#xff0c;懒得安装了&#xff0c;放弃…

【数据可视化】大作业(意向考研高校的数据可视化)

文章目录 前言一、数据介绍1.1 基本信息1.2 考研信息1.3 导师信息 二、预处理及分析2.1 数据预处理2.1.1 考研信息预处理2.1.2 导师信息预处理 2.2 数据分析 三、可视化方法及结果3.1 可视化方法3.2 可视化结果展示3.2.1 基本信息3.2.2 考研信息3.2.3 导师信息 四、总结五、附录…

WWDC2023 Metal swift 头显ARKit支持c c++ 开发

1 今年WWDC&#xff0c;我们看见了苹果的空间计算设备&#xff0c;visionOS也支持了c c API. 这有什么好处呢&#xff0c;不是说能够吸引更多c c开发者加入苹果开发者阵营&#xff0c;而是我们过去的很多软件&#xff0c;可以轻松对接到苹果的头显设备&#xff0c;让我们的软件…