ASR - OpenAI whisper
文章目录
- 关于 whisper
- Approach
- Setup
- 1、安装 whisper
- 2、安装依赖 ffmpeg
- 3、安装依赖 rust
- 可用的模型和语言
- 命令行用法
- Python usage
- 更多示例
- 参考
关于 whisper
Whisper is a general-purpose speech recognition model.
It is trained on a large dataset of diverse audio and is also a multi-task model that can perform multilingual speech recognition as well as speech translation and language identification.
whisper 作者:Alec Radford、Jong Wook Kim
- github : https://github.com/openai/whisper
- Introducing Whisper : https://openai.com/blog/whisper/
- 论文:https://cdn.openai.com/papers/whisper.pdf
- huggingface spaces - whisper : https://huggingface.co/spaces/openai/whisper
其他资料/教程
- AI匠:来自OpenAI的Whisper语音识别模型
https://www.bilibili.com/video/BV1SN4y1K7m9
Approach
Whisper 使用 Transformer seq2seq 模型针对各种语音处理任务进行训练,包括多语言语音识别、语音翻译、口语识别和语音活动检测。
所有这些任务都被联合表示为解码器预测的令牌序列,允许使用单个模型替换传统语音处理管道的许多不同阶段。
多任务训练格式使用一组特殊标记作为任务说明符或分类目标。
Whisper是一个自动语音识别(ASR)系统,经过68万小时的多语言和多任务监控数据训练,这些数据是从网络上收集的。( 65%(438218小时)是英语音频和匹配的英语文本,大约18%(125739小时)是非英语音频和英语文本,而最后17%(117113小时)则是非英语音频和相应的文本。非英语部分共包含98种不同语言。)
我们表明,使用这样一个大而多样的数据集可以提高对口音、背景噪音和技术语言的鲁棒性。
此外,它还支持多种语言的转录,以及将这些语言翻译成英语。
Whisper 是开源模型和推理代码,为构建有用的应用程序和进一步研究健壮的语音处理奠定了基础。
Whisper架构是一种简单的端到端方法,实现为编码器-解码器 Transformer。
输入音频被分割成30秒的块,转换成对数梅尔谱图,然后传递给编码器。
解码器经过训练以预测相应的文本标题,并与特殊标记混合,这些标记指示单个模型执行诸如语言识别、短语级时间戳、多语言语音转录和英语语音翻译等任务。
其他现有方法经常使用更小、更紧密配对的音频文本训练数据集,或使用广泛但无监督的音频预训练。
因为Whisper是在一个大而多样的数据集上训练的,并且没有针对任何特定的数据集进行微调,所以它没有击败专门研究LibriSpeech性能的模型,这是语音识别领域一个著名的竞争基准。
然而,当我们在许多不同的数据集上测量Whisper的零启动性能时,我们发现它比那些模型更健壮,误差减少50%。
Whisper大约有三分之一的音频数据集是非英语的,它被交替地赋予用原语言转录或翻译成英语的任务。
我们发现这种方法在学习语音到文本翻译方面特别有效,并且在CoVoST2到英语翻译零炮上优于监督的SOTA。
Setup
whisper 官方使用 Python 3.9.9 和 PyTorch 1.10.1 训练和测试模型,但此代码库可兼容 Python 3.7 及以上的版本 和最近的 PyTorch 版本。
代码库也依赖于一些 Python 包,主要包括 HuggingFace Transformers 来使用他们快捷的tokenizer使用 和 ffmpeg-python 用来读取音频文件。
1、安装 whisper
方式一:下载源码本地安装
cd whisper
python setup.py install
方式二:拉取代码安装
这将拉取和安装最近的版本和他们的依赖。(个人觉得速度不太稳定)
pip install git+https://github.com/openai/whisper.git
2、安装依赖 ffmpeg
It also requires the command-line tool ffmpeg
to be installed on your system, which is available from most package managers:
# on Ubuntu or Debian
sudo apt update && sudo apt install ffmpeg# on Arch Linux
sudo pacman -S ffmpeg# on MacOS using Homebrew (https://brew.sh/)
brew install ffmpeg# on Windows using Chocolatey (https://chocolatey.org/)
choco install ffmpeg# on Windows using Scoop (https://scoop.sh/)
scoop install ffmpeg
更多 ffmpeg 的安装使用可参考:https://blog.csdn.net/lovechris00/article/details/125921387
3、安装依赖 rust
参考文章:https://blog.csdn.net/lovechris00/article/details/124808034
$ brew install rustup$ rustup-init$ pip install setuptools-rust
可用的模型和语言
有一下五种大小尺寸的模型,四种支持英语,提供速度和准确性的权衡。
下面是可用模型的名称,和他们所需要的内存和相对速度。
Size | Parameters | English-only model | Multilingual model | Required VRAM | Relative speed |
---|---|---|---|---|---|
tiny | 39 M |
tiny.en
|
tiny
|
~1 GB | ~32x |
base | 74 M |
base.en
|
base
|
~1 GB | ~16x |
small | 244 M |
small.en
|
small
|
~2 GB | ~6x |
medium | 769 M |
medium.en
|
medium
|
~5 GB | ~2x |
large | 1550 M | N/A |
large
|
~10 GB | 1x |
如果应用中只是使用英语,.en
模型效果更好,特别是 tiny.en
和 base.en
模型。
我们发现 small.en
和 medium.en
模型差异不太显著。
不同语种,Whisper的效果不同。
下图显示了使用“大型”模型,按Fleurs数据集语言划分的WER细分。
更多 WER 和 BLEU 与其他模型和数据集相对应的分数见论文中的附录D:
https://cdn.openai.com/papers/whisper.pdf。
命令行用法
下面命令将表述音频文件内容,使用 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
查阅支持语言的列表(whisper/tokenizer.py
):
https://github.com/openai/whisper/blob/main/whisper/tokenizer.py
Python usage
还可以在Python中执行转录:
import whispermodel = whisper.load_model("base")
result = model.transcribe("audio.mp3")
print(result["text"])
在内部, transcribe()
方法读取整个文件,并将语音切分以 30s 为窗口进行切分,在每个窗口上执行自回归 seq2seq 预测。
下面是 whisper.detect_language()
和 whisper.decode()
的使用示例,提供对模型更底层的访问:
import whispermodel = whisper.load_model("base")# load audio and pad/trim it to fit 30 seconds
audio = whisper.load_audio("audio.mp3")
audio = whisper.pad_or_trim(audio)# make log-Mel spectrogram and move to the same device as the model
mel = whisper.log_mel_spectrogram(audio).to(model.device)# detect the spoken language
_, probs = model.detect_language(mel)
print(f"Detected language: {max(probs, key=probs.get)}")# decode the audio
options = whisper.DecodingOptions()
result = whisper.decode(model, mel, options)# print the recognized text
print(result.text)
更多示例
可以示例可访问
ASR - OpenAI whisper相关推荐
- OpenAI Whisper and ChatGPT 语音助手
OpenAI Whisper and ChatGPT ASR Gradio Web UI 一 环境准备 1.1 python 1.2 windows 二 导入所需要的包 三 加载模型 四 定义open ...
- OpenAI Whisper探索(一)
1.根据提示安装依赖 : 安装Whisper前先安装依赖 1.1安装torch: ERROR: Could not find a version that satisfies the requirem ...
- OpenAI Whisper + FFmpeg + TTS:动态实现跨语言视频音频翻译
本文作者系360奇舞团前端开发工程师 摘要: 本文介绍了如何结合 OpenAI Whisper.FFmpeg 和 TTS(Text-to-Speech)技术,以实现将视频翻译为其他语言并更换声音的过程 ...
- AI创作教程之从 Youtube平台视频剪辑生成新闻文章 基于OpenAI Whisper、OpenAI GPT3 和 Stable Diffusion
在这篇文章中,我想展示如何借助不同的软件工具从 Youtube 上发布的新闻剪辑中全自动生成包含文本和图像的新闻文章.使用当前用于处理媒体数据的 AI 模型,例如 OpenAI Whisper.Ope ...
- 使用OpenAI的Whisper 模型进行语音识别
语音识别是人工智能中的一个领域,它允许计算机理解人类语音并将其转换为文本.该技术用于 Alexa 和各种聊天机器人应用程序等设备.而我们最常见的就是语音转录,语音转录可以语音转换为文字记录或字幕. w ...
- 语音识别 - ASR whisper
目录 1. 简单介绍 2. 代码调用 1. 简单介绍 Introducing Whisperhttps://openai.com/blog/whisper/ OpenAI 的开源自动语音识别神经网络 ...
- 如何更好的帮Siri提升“听力水平”,浅析多语种语音识别Multi-lingual ASR挑战
语音识别助手已经风靡各大手机,最为著名的当属苹果公司的Siri.虽然大部分时候Siri都是非常聪明的的,但是当遇到中英文混杂或者其他语种的混杂的时候,你的Siri一瞬间就会变得"不太机灵的亚 ...
- 能听懂口音的开源语音系统来了:OpenAI出品,支持99种语言,英文识别能力直逼人类...
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 羿阁 发自 凹非寺 量子位 | 公众号 QbitAI 逼近人类水平的 ...
- 如何一键生成字幕,如何快速处理生肉资源?借助whisper语音识别系统生成.srt字幕文件 手把手教学在Windows、CPU版本下whisper的安装与使用,快速上手!
目录 一.前言 二.本机环境 三.安装步骤: 步骤1:下载Git并添加环境变量 步骤2:下载ffmpeg并添加环境变量 步骤3:安装pytorch 步骤4:安装whisper 四.whisper的应用 ...
- 如何在矩池云上安装语音识别模型 Whisper
如何在矩池云上安装语音识别模型 Whisper Whisper 是 OpenAI 近期开源的一个语音识别的模型,研究人员基于 680,000 小时的标记音频数据进行训练,它同时也是一个多任务模型,可以 ...
最新文章
- nginx 安装禅道
- 使用STM32CubeMX求得CPU芯片温度
- openCV实战(一):rectangle函数使用
- TENSORFLOW GUIDE: EXPONENTIAL MOVING AVERAGE FOR IMPROVED CLASSIFICATION
- 只读变量(常量)和位置变量
- python数据分析师工作内容_数据分析师日常工作是什么?
- PyCharm配置django环境
- matlab细胞数组类型建立及操作
- c语言 软件编程入门自学,软件编程入门自学
- 详解SSTI模板注入
- RaspberrIPCam – Full HD IP Camera based on Raspberry Pi
- HDLBits—Exams/ece241 2014 q7a
- 安装SVN后,更新项目没有对号等图标
- 支付接口的API什么?SDK是什么?
- Codeforces 1612C. Keshi Is Throwing a Party
- 2012意大利之行3:罗马的路和车_我是亲民_新浪博客
- 3dsmax制作简单小屋
- MySQL DML数据库操作
- 802.11协议精读10:节能模式(PSM)
- 北航与西安交大计算机专业对比,都在关注!哈工大、西安交大、北航等五大双一流高校是否值得报考...