whisper官网,github,openai推出的自动语音辨识模型
什么是whisper?
Whisper是OpenAI提供的一种自动语音识别(Automatic Speech Recognition,ASR)系统。它是基于深度学习技术和大规模语音数据集训练而成的模型,用于将语音转换为文本。Whisper的目标是提供准确、高质量的语音识别功能,使用户能够更轻松地处理语音数据并获取相关信息。
whisper官网: https://openai.com/research/whisper
github项目源码地址: https://github.com/openai/whisper
huggingface项目源码地址:
https://huggingface.co/spaces/openai/whisper
whisper论文: https://cdn.openai.com/papers/whisper.pdf
whisper怎么样?
Open AI的Whisper提供了一款自动语音辨识(Automatic Speech Recognition,ASR)模型,为用户提供语音识别和翻译的功能。这个模型的核心功能是语音识别,能够以高准确率将会议录音等语音内容快速转化为文本,并且还能进行翻译,并自动生成字幕。最重要的是,Whisper还支持本地运行,无需联网即可进行语音识别。
🎙️使用Whisper的技巧很简单。用户首先需要进行环境配置和安装,然后可以使用Whisper WebUI进行相关操作。在操作界面上,用户需要选择合适的模型和语言,然后可以粘贴音频的URL或从电脑端/手机端上传音频文件。接下来,用户可以调节语音活性检测(Voice Activity Detector,VAD)的相关参数(对于大于10分钟的非英文音频,建议选择Silero VAD)。提交后,只需等待一段时间,就可以获得转录的文本以及三种字幕文件的生成。
✨借助Whisper,语音识别和翻译变得更加便捷高效。无论是整理会议记录还是处理录音文件,Whisper都能以出色的准确率将语音转化为文字,让用户能够轻松查阅和分享信息。此外,Whisper还能为语音文件生成字幕,方便观看者更好地理解和跟进内容。
🌐而且,Whisper支持本地运行,这意味着用户无需依赖互联网连接,就能享受到优质的语音识别服务。这一特点使得Whisper成为许多用户的首选工具,无论是个人使用还是商业应用,都能得到高效而可靠的语音辨识体验。
主要功能
Whisper的主要功能是将语音转化为文本形式,实现自动语音识别(ASR)。它通过深度学习技术和大规模语音数据集的训练,具备以下主要功能:
- 语音转写:Whisper可以将录音、会议、讲座等语音内容转录为准确的文本形式。这使得用户可以轻松查阅、编辑、搜索和分享语音内容,提高工作效率和信息管理能力。
- 字幕生成:Whisper能够将视频、电影、演讲等场景中的语音内容自动生成字幕。这对于听力障碍者、跨语言交流和无声环境下的观看者都非常有帮助,提供了更好的理解和体验。
- 语音助手:通过将语音输入转换为文本输出,Whisper可以用于构建语音助手应用程序。用户可以通过语音与应用进行交互,提出问题、发送指令等,实现更直观、便捷的操作方式。
- 数据分析和挖掘:将大量的语音数据转化为文本,可以为数据分析和挖掘提供基础。用户可以对转录文本进行关键词提取、情感分析、主题识别等操作,从中获取有价值的信息和洞见。
Whisper 是一种通用的语音识别模型。它是在包含各种音频的大型数据集上训练的,也是一个可以执行多语言语音识别、语音翻译和语言识别的多任务模型。
方法
Transformer 序列到序列模型针对各种语音处理任务进行训练,包括多语言语音识别、语音翻译、口语识别和语音活动检测。这些任务共同表示为由解码器预测的一系列标记,允许单个模型取代传统语音处理管道的多个阶段。多任务训练格式使用一组特殊标记作为任务说明符或分类目标。
设置
我们使用 Python 3.9.9 和PyTorch 1.10.1 来训练和测试我们的模型,但代码库预计将与 Python 3.8-3.11 和最新的 PyTorch 版本兼容。该代码库还依赖于一些 Python 包,最著名的是OpenAI 的 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
它还需要在您的系统上安装命令行工具,大多数包管理器都提供该工具:
# 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
您可能rust
还需要安装,以防tiktoken不为您的平台提供预构建的轮子。如果您在上述命令中看到安装错误pip install
,请按照入门页面安装 Rust 开发环境。此外,您可能需要配置PATH
环境变量,例如export PATH="$HOME/.cargo/bin:$PATH"
. 如果安装失败No module named 'setuptools_rust'
,则需要安装setuptools_rust
,例如通过运行:
pip install setuptools-rust
可用型号和语言
有五种模型尺寸,其中四种只有英文版本,提供速度和准确性权衡。以下是可用型号的名称及其大致的内存要求和相对速度。
尺寸 | 参数 | 纯英文模型 | 多语言模型 | 所需显存 | 相对速度 |
---|---|---|---|---|---|
微小的 | 39 米 | tiny.en |
tiny |
~1 GB | ~32x |
根据 | 74 米 | base.en |
base |
~1 GB | ~16x |
小的 | 244米 | small.en |
small |
~2GB | ~6倍 |
中等的 | 769米 | medium.en |
medium |
~5 GB | ~2x |
大的 | 1550 米 | 不适用 | large |
~10GB | 1x |
.en
仅英语应用程序的模型往往表现更好,尤其是对于和tiny.en
模型base.en
。small.en
我们观察到,对于和模型,差异变得不那么显着medium.en
。
Whisper 的性能因语言而异。下图显示了使用该模型的 Fleurs 数据集按语言的 WER(单词错误率)细分large-v2
(数字越小,性能越好)。与其他模型和数据集相对应的其他 WER 分数可以在附录 D.1、D.2 和 D.4 中找到。同时,更多的 BLEU(双语评估替补)分数可以在附录 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")
# 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)