介绍 Whisper 模型

介绍 Whisper 模型

Whisper 是一个通用的语音识别模型。它在大规模多样化的音频数据集上进行训练,并且能够执行多任务处理,包括多语言语音识别、语音翻译和语言识别。

核心方法

Whisper 使用的是 Transformer 序列到序列模型,训练于多种语音处理任务。这些任务包括多语言语音识别、语音翻译、口语语言识别和语音活动检测。这些任务被联合表示为解码器需要预测的一系列标记,这样一个模型可以取代传统语音处理管道中的多个阶段。多任务训练格式使用了一组特殊标记,作为任务说明符或分类目标。

Approach

环境设置

我们使用 Python 3.9.9 和 PyTorch 1.10.1 来训练和测试我们的模型,但代码库预计兼容 Python 3.8-3.11 和最新的 PyTorch 版本。代码库还依赖于几个 Python 包,最显著的是 OpenAI’s tiktoken 用于快速分词实现。

安装或更新 Whisper 最新版本的命令:

pip install -U openai-whisper

或者,以下命令将拉取并安装该仓库的最新提交以及其 Python 依赖项:

pip install git+https://github.com/openai/whisper.git

更新包到最新版本的命令:

pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git

还需要在系统上安装命令行工具 ffmpeg,可以从大多数包管理器中获取:

# 在 Ubuntu 或 Debian 上
sudo apt update && sudo apt install ffmpeg

# 在 Arch Linux 上
sudo pacman -S ffmpeg

# 在 MacOS 上使用 Homebrew (https://brew.sh/)
brew install ffmpeg

# 在 Windows 上使用 Chocolatey (https://chocolatey.org/)
choco install ffmpeg

# 在 Windows 上使用 Scoop (https://scoop.sh/)
scoop install ffmpeg

可能还需要安装 rust,以防 tiktoken 未提供适用于你平台的预构建轮子。如果在上述 pip install 命令期间看到安装错误,请按照 Getting started page 安装 Rust 开发环境。另外,可能需要配置 PATH 环境变量,例如 export PATH="$HOME/.cargo/bin:$PATH"。如果安装失败并提示 No module named 'setuptools_rust',需要安装 setuptools_rust,例如运行:

pip install setuptools-rust

可用模型和语言

Whisper 提供五种模型尺寸,四种具有仅英文版本,提供速度和准确性之间的权衡。以下是可用模型的名称及其近似内存需求和相对于大模型的推理速度;实际速度可能因多种因素(包括可用硬件)而有所不同。

SizeParametersEnglish-only modelMultilingual modelRequired VRAMRelative speed
tiny39 Mtiny.entiny~1 GB~32x
base74 Mbase.enbase~1 GB~16x
small244 Msmall.ensmall~2 GB~6x
medium769 Mmedium.enmedium~5 GB~2x
large1550 MN/Alarge~10 GB1x

针对仅英文应用的 .en 模型通常表现更好,特别是 tiny.enbase.en 模型。对于 small.enmedium.en 模型,这种差异变得不太显著。

Whisper 的性能因语言而异。下图展示了 large-v3large-v2 模型按语言划分的性能,使用 WERs(词错误率)或 CER(字符错误率,以 Italic 表示)在 Common Voice 15 和 Fleurs 数据集上进行评估。其他模型和数据集的 WER/CER 指标可以在 论文 的附录 D.1、D.2 和 D.4 中找到,翻译的 BLEU(Bilingual Evaluation Understudy)分数在附录 D.3 中。

在这里插入图片描述

命令行使用

以下命令将使用 medium 模型转录音频文件中的语音:

whisper audio.flac audio.mp3 audio.wav --model medium

默认设置(选择 small 模型)适用于转录英语。要转录包含非英语语音的音频文件,可以使用 --language 选项指定语言:

whisper japanese.wav --language Japanese

添加 --task translate 将语音翻译成英语:

whisper japanese.wav --language Japanese --task translate

运行以下命令查看所有可用选项:

whisper --help

查看 tokenizer.py 获取所有可用语言列表。

Python 使用

也可以在 Python 中执行转录:

import whisper

model = whisper.load_model("base")
result = model.transcribe("audio.mp3")
print(result["text"])

在内部,transcribe() 方法读取整个文件,并使用滑动的 30 秒窗口处理音频,对每个窗口进行自回归序列到序列的预测。

以下是 whisper.detect_language()whisper.decode() 的示例用法,它们提供了对模型的低级访问。

import whisper

model = whisper.load_model("base")

# 加载音频并填充/修剪至 30 秒
audio = whisper.load_audio("audio.mp3")
audio = whisper.pad_or_trim(audio)

# 制作 log-Mel 频谱图并移至与模型相同的设备
mel = whisper.log_mel_spectrogram(audio).to(model.device)

# 检测口语语言
_, probs = model.detect_language(mel)
print(f"Detected language: {max(probs, key=probs.get)}")

# 解码音频
options = whisper.DecodingOptions()
result = whisper.decode(model, mel, options)

# 打印识别的文本
print(result.text)

更多示例

请使用 🙌 Show and tell 讨论类别,分享 Whisper 的更多示例用法和第三方扩展,例如 Web 演示、与其他工具的集成、不同平台的移植等。

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

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

相关文章

vue项目问题汇总

1.el-select: 下拉框显示到了top:-2183px , 添加属性 :popper-append-to-body"false" 2. el-upload: 选过的文件在使用过后记得清空,因为如果有limit1的时候,没有清空会导致不触发onchange 使用自定义上传方法http-request的时…

基于android开发平台的聊天软件实现(论文+源码)_kaic

摘要:互联网时代的到来使得手机通讯变得更为普及和强大,人们可以随时随地地进行交流。由于工作的繁忙以及生活节奏的加快,人们无法有更多时间展开面对面的交谈,导致在线聊天软件的使用更加频繁,所以本文尝试设计了一款…

Excel报表

(Apache POI) 入门案例 P164 使用POI需要导入下面2个坐标&#xff1a; <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId> </dependency> <dependency><groupId>org.apache.poi</groupId>&…

docker-compose部署FastDFS分布式文件系统

文章目录 一、技术选型二、fastDFS组成部分三、docker-compose文件四、客户端nginx配置五、存储器spring Boot集成参考文献 一、技术选型 还有一个更好的google FS&#xff08;但是他不开源&#xff0c;我也没找到社区版一类的可以不要钱使用的&#xff09;。 最后考虑到我们存…

AD学习记录

1. 负信号&#xff1a; \WR或者W\R\ 2.快捷键&#xff1a; MMS VGS X/W CTLRW原理图画总连接线&#xff0c;shift快速复制 TAA管理器&#xff0c;TG封装管理器 3. 选中后按住ctlr进行位移 4.原理图里切换原理图库&#xff1a; 5.重要警报&#xff1a;&#xff0…

CleanMyMacX4.15.4如何优化苹果电脑系统缓存,告别MacBook卡顿,提升mac电脑性能

你是否曾为苹果电脑存储空间不够而烦恼&#xff1f;是否曾因系统运行缓慢而苦恼&#xff1f;别担心&#xff0c;今天我要给大家种草一个神器——CleanMyMac&#xff01;这款软件可以帮助你轻松解决苹果电脑的种种问题&#xff0c;让你的电脑焕然一新&#xff01; 让我来给大家介…

论文学习day01

1.自我反思的检索增强生成&#xff08;SELF-RAG&#xff09; 1.文章出处&#xff1a; Chan, C., Xu, C., Yuan, R., Luo, H., Xue, W., Guo, Y., & Fu, J. (2024). RQ-RAG: Learning to Refine Queries for Retrieval Augmented Generation. ArXiv, abs/2404.00610. 2.摘…

使用消息队列(MQ)实现MySQL持久化存储与MySQL server has gone away问题解决

在现代应用程序开发中&#xff0c;消息队列&#xff08;MQ&#xff09;扮演着重要的角色。它们可以帮助我们解决异步通信和解耦系统组件之间的依赖关系。而其中一个常见的需求是将消息队列中的数据持久化到数据库中&#xff0c;以确保数据的安全性和可靠性。在本文中&#xff0…

java第二十四课 —— super 关键字 | 方法重写

super 关键字 基本介绍 super 代表父类的引用&#xff0c;用于访问父类的属性、方法、构造器。 基本语法 访问父类的属性&#xff0c;但不能访问父类的 private 属性。 super.属性名; 访问父类的方法&#xff0c;不能访问父类的 private 方法。 super.方法名(参数列表); 访…

Java的一些内容

transient的作用 transient是Java语言的关键字&#xff0c;用来表示一个成员变量不是该对象序列化的一部分。当一个对象被序列化的时候&#xff0c;transient型变量的值不包括在序列化的结果中。而非transient型的变量是被包括进去的。 注意static修饰的静态变量天然就是不可序…

Python **运算符(python**kwargs:参数解包)(kwargs:keyword arguments)

文章目录 Python中的 ** 运算符&#xff1a;参数解包参数解包基础语法和示例 在函数定义中使用 **示例代码 使用场景和好处1. 灵活性&#xff1a;使用 **kwargs 允许函数设计得更加灵活&#xff0c;可以接受未来可能增加的新参数而无需修改函数定义。2. 可读性和可维护性&#…

C#开发-集合使用和技巧(四)集合中常用的查询方法

集合中常用的查询方法 测试数据准备&#xff1a;查询方法详解**Where**条件查询定义和注释&#xff1a;功能详细说明&#xff1a;应用实例查找所有设备类型为“生产设备”的对象 结果测试&#xff1a;查询所有测试结果大于90的设备多条件查询&#xff1a;类型为生产设备同时测试…

# RocketMQ 实战:模拟电商网站场景综合案例(六)

RocketMQ 实战&#xff1a;模拟电商网站场景综合案例&#xff08;六&#xff09; 一、RocketMQ 实战 &#xff1a;项目公共类介绍 1、ID 生成器 &#xff1a;IDWorker&#xff1a;Twitter 雪花算法。 在 shop-common 工程模块中&#xff0c;IDWorker.java 是 ID 生成器公共类…

Centos7系统下Docker的安装与配置

文章目录 前言下载Docker安装yum库安装Docker启动和校验配置Docker镜像加速卸载Docker 前言 此博客的内容的为自己的学习笔记&#xff0c;如果需要更具体的内容&#xff0c;可查看Docker官网文档内容 注意&#xff1a;以下命令在root管理员用户下运行&#xff0c;如果在普通用…

基于单片机的无线遥控自动翻书机械臂设计

摘 要&#xff1a; 本设备的重点控制部件为单片机&#xff0c;充分实现了其自动化的目的。相关研究表明&#xff0c;它操作简单便捷&#xff0c;使残疾人在翻书时提供了较大的便利&#xff0c;使用价值性极高&#xff0c;具有很大的发展空间。 关键词&#xff1a; 机械臂&…

gbase8s数据库阻塞检查点和非阻塞检查点的执行机制

1. 检查点的描述 为了便于数据库系统的复原和逻辑恢复&#xff0c;数据库服务器生成的一致性标志点&#xff0c;称为检查点&#xff0c;其是建立在数据库系统的已知和一致状态时日志中的某个时间点检查点的目的在于定期将逻辑日志中的重新启动点向前移动 如果存在检查点&#…

零基础入门学用Arduino 第三部分(二)

重要的内容写在前面&#xff1a; 该系列是以up主太极创客的零基础入门学用Arduino教程为基础制作的学习笔记。个人把这个教程学完之后&#xff0c;整体感觉是很好的&#xff0c;如果有条件的可以先学习一些相关课程&#xff0c;学起来会更加轻松&#xff0c;相关课程有数字电路…

即时聊天系统

功能描述 该项目是一个前后端分离的即时聊天项目&#xff0c;前端采用vue2、后端使用springboot以mysql8.0作为数据库。 项目功能包含了单聊、群聊功能。在此基础上增加了对好友的功能操作&#xff0c;如备注设为通知、视频聊天、语音聊天、置顶、拉入黑名单、清空聊天记录等。…

如何在两个不同的conda环境中实现jupyter notebook共同使用,避免重复下载

前提&#xff1a;有2个conda环境&#xff0c;yes和py38_pytorch 其中&#xff0c;yes已经安装了jupyter notebook;py38_pytorch没有jupyter notebook 现在&#xff0c;实现在py38_pytorch用jupyter notebook 步骤&#xff1a; 1、激活py38_pytorch conda activate py38_p…

gma 2.0.10 (2024.06.16) | GmaGIS V0.0.0a4 更新日志

安装 gma 2.0.10 pip install gma2.0.10网盘下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1P0nmZUPMJaPEmYgixoL2QQ?pwd1pc8 提取码&#xff1a;1pc8 注意&#xff1a;此版本没有Linux版&#xff01; 编译gma的Linux虚拟机没有时间修复&#xff0c;本期Linux版…