跳转到主要内容

标签(标签)

资源精选(342) Go开发(108) Go语言(103) Go(99) angular(82) LLM(75) 大语言模型(63) 人工智能(53) 前端开发(50) LangChain(43) golang(43) 机器学习(39) Go工程师(38) Go程序员(38) Go开发者(36) React(33) Go基础(29) Python(24) Vue(22) Web开发(20) Web技术(19) 精选资源(19) 深度学习(19) Java(18) ChatGTP(17) Cookie(16) android(16) 前端框架(13) JavaScript(13) Next.js(12) 安卓(11) 聊天机器人(10) typescript(10) 资料精选(10) NLP(10) 第三方Cookie(9) Redwoodjs(9) LLMOps(9) Go语言中级开发(9) 自然语言处理(9) PostgreSQL(9) 区块链(9) mlops(9) 安全(9) 全栈开发(8) ChatGPT(8) OpenAI(8) Linux(8) AI(8) GraphQL(8) iOS(8) 软件架构(7) Go语言高级开发(7) AWS(7) C++(7) 数据科学(7) whisper(6) Prisma(6) 隐私保护(6) RAG(6) JSON(6) DevOps(6) 数据可视化(6) wasm(6) 计算机视觉(6) 算法(6) Rust(6) 微服务(6) 隐私沙盒(5) FedCM(5) 语音识别(5) Angular开发(5) 快速应用开发(5) 提示工程(5) Agent(5) LLaMA(5) 低代码开发(5) Go测试(5) gorm(5) REST API(5) 推荐系统(5) WebAssembly(5) GameDev(5) CMS(5) CSS(5) machine-learning(5) 机器人(5) 游戏开发(5) Blockchain(5) Web安全(5) Kotlin(5) 低代码平台(5) 机器学习资源(5) Go资源(5) Nodejs(5) PHP(5) Swift(5) 智能体(4) devin(4) Blitz(4) javascript框架(4) Redwood(4) GDPR(4) 生成式人工智能(4) Angular16(4) Alpaca(4) 编程语言(4) SAML(4) JWT(4) JSON处理(4) Go并发(4) kafka(4) 移动开发(4) 移动应用(4) security(4) 隐私(4) spring-boot(4) 物联网(4) nextjs(4) 网络安全(4) API(4) Ruby(4) 信息安全(4) flutter(4) 专家智能体(3) Chrome(3) CHIPS(3) 3PC(3) SSE(3) 人工智能软件工程师(3) LLM Agent(3) Remix(3) Ubuntu(3) GPT4All(3) 软件开发(3) 问答系统(3) 开发工具(3) 最佳实践(3) RxJS(3) SSR(3) Node.js(3) Dolly(3) 移动应用开发(3) 低代码(3) IAM(3) Web框架(3) CORS(3) 基准测试(3) Go语言数据库开发(3) Oauth2(3) 并发(3) 主题(3) Theme(3) earth(3) nginx(3) 软件工程(3) azure(3) keycloak(3) 生产力工具(3) gpt3(3) 工作流(3) C(3) jupyter(3) 认证(3) prometheus(3) GAN(3) Spring(3) 逆向工程(3) 应用安全(3) Docker(3) Django(3) R(3) .NET(3) 大数据(3) Hacking(3) 渗透测试(3) C++资源(3) Mac(3) 微信小程序(3) Python资源(3) JHipster(3) 大型语言模型(2) 语言模型(2) 可穿戴设备(2) JDK(2) SQL(2) Apache(2) Hashicorp Vault(2) Spring Cloud Vault(2) Go语言Web开发(2) Go测试工程师(2) WebSocket(2) 容器化(2) AES(2) 加密(2) 输入验证(2) ORM(2) Fiber(2) Postgres(2) Gorilla Mux(2) Go数据库开发(2) 模块(2) 泛型(2) 指针(2) HTTP(2) PostgreSQL开发(2) Vault(2) K8s(2) Spring boot(2) R语言(2) 深度学习资源(2) 半监督学习(2) semi-supervised-learning(2) architecture(2) 普罗米修斯(2) 嵌入模型(2) productivity(2) 编码(2) Qt(2) 前端(2) Rust语言(2) NeRF(2) 神经辐射场(2) 元宇宙(2) CPP(2) 数据分析(2) spark(2) 流处理(2) Ionic(2) 人体姿势估计(2) human-pose-estimation(2) 视频处理(2) deep-learning(2) kotlin语言(2) kotlin开发(2) burp(2) Chatbot(2) npm(2) quantum(2) OCR(2) 游戏(2) game(2) 内容管理系统(2) MySQL(2) python-books(2) pentest(2) opengl(2) IDE(2) 漏洞赏金(2) Web(2) 知识图谱(2) PyTorch(2) 数据库(2) reverse-engineering(2) 数据工程(2) swift开发(2) rest(2) robotics(2) ios-animation(2) 知识蒸馏(2) 安卓开发(2) nestjs(2) solidity(2) 爬虫(2) 面试(2) 容器(2) C++精选(2) 人工智能资源(2) Machine Learning(2) 备忘单(2) 编程书籍(2) angular资源(2) 速查表(2) cheatsheets(2) SecOps(2) mlops资源(2) R资源(2) DDD(2) 架构设计模式(2) 量化(2) Hacking资源(2) 强化学习(2) flask(2) 设计(2) 性能(2) Sysadmin(2) 系统管理员(2) Java资源(2) 机器学习精选(2) android资源(2) android-UI(2) Mac资源(2) iOS资源(2) Vue资源(2) flutter资源(2) JavaScript精选(2) JavaScript资源(2) Rust开发(2) deeplearning(2) RAD(2)

介绍

转录服务在各种行业中被用来将音频或视频内容转换为文本。从转录服务中受益的一些行业包括:

医疗保健专业人员

医疗转录在医疗保健行业发挥着至关重要的作用,可以高精度地转录医生的记录并维护医疗记录。

法律/法律行业

律师事务所、律师助理、法庭记者和律师将转录服务用于法律目的,如转录证词和法庭听证会。

企业

企业使用转录服务将董事会会议、会议、采访和其他活动转录成无错误的转录本,以便更好地决策和将来参考。

媒体与大众传播

媒体专业人员,包括记者、视频制作人、电影制作人和文案,使用转录服务为文章、新闻稿和字幕转录采访和其他内容。

数字营销

数字营销人员和内容战略家使用转录师将播客、网络研讨会和其他材料转换为文本,用于博客文章和内容创作。

其他行业

其他受益于转录服务的行业包括市场研究人员、视频和音频播客、自由撰稿人、作家和主讲人。

正如我们所看到的,有相当多的领域使用转录技术。因此,提供快速转录速度的解决方案需求量很大。在这篇文章中,我们将研究OpenaAI的Whisper Large V3用于快速转录,我们还将通过修改变压器管道中的各种参数,逐步将转录速度提高到极高的极限。

在E2E Cloud上启动

GPU要求

由于我们将引入Flash Attention(一种旨在加快变压器管道速度的算法),我们将使用A100 GPU,因为它们与Flash Attention兼容。为此,我们将使用E2E提供的云计算服务。让我们在E2E平台上为NVIDIA A100 GPU创建一个GPU节点。

确保在启用CUDA-11的情况下选择第二个选项,因为我们的实验需要它。

下载所需的库

!pip install -q --upgrade torch torchvision torchaudio
!pip install -q git+https://github.com/huggingface/transformers
!pip install -q accelerate optimum
!pip install -q ipython-autotime

!sudo apt install ffmpeg

然后,让我们将扩展自动时间加载到Jupyter笔记本上,以跟踪我们细胞的运行时间。

%load_ext autotime

接下来,导入所需的库。

import torch
from transformers import pipeline

下载测试音频文件

在本文中,我们将使用Sam Altman和Lex Fridman之间的播客音频。音频长达2.5小时。它可以使用以下命令从我们创建的“拥抱脸”数据集中下载。

!wget https://huggingface.co/datasets/reach-vb/random-audios/resolve/main/sam_altman_lex_podcast_367.flac

案例1:使用基础变压器模型

对于第一种情况,我们将只使用我们的基本转换器模型,而不对参数进行任何调整,然后查看转录时间。

pipe = pipeline("automatic-speech-recognition",
                "openai/whisper-large-v2",
                device="cuda:0")

outputs = pipe("sam_altman_lex_podcast_367.flac",
               chunk_length_s=30)


所以这花了19分46秒来转录整个音频。

输出前200个单词进行质量检查:

outputs["text"][:200]

案例2:分批

transformer中的批处理是指将多个输入序列分组为一个批以供模型处理的过程。这样做是为了提高模型在训练和推理过程中的效率。

outputs = pipe("sam_altman_lex_podcast_367.flac",
               chunk_length_s=30,
               batch_size=8)


用这种方法,转录时间下降到5分32秒,大约是我们原始时间的28%。

输出[“文本”][:200]

案例3:半精度

pipe = pipeline("automatic-speech-recognition",
                "openai/whisper-large-v2",
                torch_dtype=torch.float16,
                device="cuda:0")

在上面的代码中,torch.foat16指的是半精度浮点格式,也称为FP16。与FP32或FP64等高精度格式相比,半精度减少了神经网络的内存使用,允许训练和部署更大的网络,并在更短的时间内传输数据。

outputs = pipe("sam_altman_lex_podcast_367.flac",
               chunk_length_s=30,
               batch_size=16,
               return_timestamps=True)


输出[“文本”][:200]

案例4:BetterTransformer

当使用to_betterttransformer()将模型转换为BetterTransformer时,它受益于Transformers注意力机制的加速实现,从而更快地进行推理并提高内存效率。

pipe = pipeline("automatic-speech-recognition",
                "openai/whisper-large-v2",
                torch_dtype=torch.float16,
                device="cuda:0")

pipe.model = pipe.model.to_bettertransformer()

outputs = pipe("sam_altman_lex_podcast_367.flac",
               chunk_length_s=30,
               batch_size=16,
               return_timestamps=True)
               


案例5:更好的变压器+更大的批量

较大的批量大小可以通过跨示例并行化操作来提供计算效率。这可以加快训练,因为同时执行更多的计算。


案例6:引起注意/Flash Attention     

Flash Attention是一种注意力算法,用于更有效地减少内存瓶颈和缩放基于转换器的模型,从而实现更快的训练和推理。它利用了平铺和重新计算等经典技术,显著提高了速度,大幅减少了内存使用。

首先安装以下库:

pip uninstall -y ninja && pip install ninja
pip install wheel setuptools
pip install flash-attn --no-build-isolation

在使用Flash Attention之前,您必须重新启动内核。所以请这样做。

pipe = pipeline("automatic-speech-recognition",
                "openai/whisper-large-v2",
                torch_dtype=torch.float16,
                model_kwargs={"use_flash_attention_2": True},
                device="cuda:0")

outputs = pipe("sam_altman_lex_podcast_367.flac",
               chunk_length_s=30,
               batch_size=24,
               return_timestamps=True)


输出[“文本”][:200]

结论

下表列出了我们使用的不同方法的转录时间:


正如我们所看到的,转录时间逐渐减少,直到我们达到2分2秒的疯狂快速转录时间。

工具书类

https://github.com/Vaibhavs10/insanely-fast-whisper/blob/main/notebooks/infer_transformers_whisper_large_v2.ipynb

文章链接