文章目录

  • 关于 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.enbase.en 模型。
我们发现 small.enmedium.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相关推荐

  1. OpenAI Whisper and ChatGPT 语音助手

    OpenAI Whisper and ChatGPT ASR Gradio Web UI 一 环境准备 1.1 python 1.2 windows 二 导入所需要的包 三 加载模型 四 定义open ...

  2. OpenAI Whisper探索(一)

    1.根据提示安装依赖 : 安装Whisper前先安装依赖 1.1安装torch: ERROR: Could not find a version that satisfies the requirem ...

  3. OpenAI Whisper + FFmpeg + TTS:动态实现跨语言视频音频翻译

    本文作者系360奇舞团前端开发工程师 摘要: 本文介绍了如何结合 OpenAI Whisper.FFmpeg 和 TTS(Text-to-Speech)技术,以实现将视频翻译为其他语言并更换声音的过程 ...

  4. AI创作教程之从 Youtube平台视频剪辑生成新闻文章 基于OpenAI Whisper、OpenAI GPT3 和 Stable Diffusion

    在这篇文章中,我想展示如何借助不同的软件工具从 Youtube 上发布的新闻剪辑中全自动生成包含文本和图像的新闻文章.使用当前用于处理媒体数据的 AI 模型,例如 OpenAI Whisper.Ope ...

  5. 使用OpenAI的Whisper 模型进行语音识别

    语音识别是人工智能中的一个领域,它允许计算机理解人类语音并将其转换为文本.该技术用于 Alexa 和各种聊天机器人应用程序等设备.而我们最常见的就是语音转录,语音转录可以语音转换为文字记录或字幕. w ...

  6. 语音识别 - ASR whisper

    目录 1. 简单介绍 2. 代码调用 1. 简单介绍 Introducing Whisperhttps://openai.com/blog/whisper/ OpenAI 的开源自动语音识别神经网络 ...

  7. 如何更好的帮Siri提升“听力水平”,浅析多语种语音识别Multi-lingual ASR挑战

    语音识别助手已经风靡各大手机,最为著名的当属苹果公司的Siri.虽然大部分时候Siri都是非常聪明的的,但是当遇到中英文混杂或者其他语种的混杂的时候,你的Siri一瞬间就会变得"不太机灵的亚 ...

  8. 能听懂口音的开源语音系统来了:OpenAI出品,支持99种语言,英文识别能力直逼人类...

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 羿阁 发自 凹非寺 量子位 | 公众号 QbitAI 逼近人类水平的 ...

  9. 如何一键生成字幕,如何快速处理生肉资源?借助whisper语音识别系统生成.srt字幕文件 手把手教学在Windows、CPU版本下whisper的安装与使用,快速上手!

    目录 一.前言 二.本机环境 三.安装步骤: 步骤1:下载Git并添加环境变量 步骤2:下载ffmpeg并添加环境变量 步骤3:安装pytorch 步骤4:安装whisper 四.whisper的应用 ...

  10. 如何在矩池云上安装语音识别模型 Whisper

    如何在矩池云上安装语音识别模型 Whisper Whisper 是 OpenAI 近期开源的一个语音识别的模型,研究人员基于 680,000 小时的标记音频数据进行训练,它同时也是一个多任务模型,可以 ...

最新文章

  1. nginx 安装禅道
  2. 使用STM32CubeMX求得CPU芯片温度
  3. openCV实战(一):rectangle函数使用
  4. TENSORFLOW GUIDE: EXPONENTIAL MOVING AVERAGE FOR IMPROVED CLASSIFICATION
  5. 只读变量(常量)和位置变量
  6. python数据分析师工作内容_数据分析师日常工作是什么?
  7. PyCharm配置django环境
  8. matlab细胞数组类型建立及操作
  9. c语言 软件编程入门自学,软件编程入门自学
  10. 详解SSTI模板注入
  11. RaspberrIPCam – Full HD IP Camera based on Raspberry Pi
  12. HDLBits—Exams/ece241 2014 q7a
  13. 安装SVN后,更新项目没有对号等图标
  14. 支付接口的API什么?SDK是什么?
  15. Codeforces 1612C. Keshi Is Throwing a Party
  16. 2012意大利之行3:罗马的路和车_我是亲民_新浪博客
  17. 3dsmax制作简单小屋
  18. MySQL DML数据库操作
  19. 802.11协议精读10:节能模式(PSM)
  20. 北航与西安交大计算机专业对比,都在关注!哈工大、西安交大、北航等五大双一流高校是否值得报考...

热门文章

  1. liu系统的混沌特性及其matlab仿真,毕业论文-Liu系统的混沌特性及其Matlab仿真
  2. Seagate 日立硬盘型号命名规则
  3. Python+bs4实现爬取小说并下载到本地
  4. Scala中的面向对象
  5. Android View绘制6 Draw过程(下)
  6. 苹果企业开发账号申请三步走
  7. 2017年国家公务员考试行测错题集(省级)
  8. maven简介及使用help插件
  9. 无电流时二极管压降问题
  10. Nginx 负载均衡演示之 upstream 参数、 location 参数等示例说明