窝牛号

代码实战OpenAI开源的能识别99种语言的语音识别系统——whisper

OpenAI 最近发布了一个名为 Whisper 的语音识别模型。与 DALLE-2 和 GPT-3 不同,Whisper 是一个免费的开源模型。

——1——

什么是Whisper语言识别模型

Whisper 是一种自动语音识别模型,基于从网络上收集的 680,000 小时多语言数据进行训练。根据 OpenAI的介绍,该模型对口音、背景噪音和技术语言具有很好的鲁棒性。此外,它还支持 99 种不同语言的转录和从这些语言到英语的翻译。

Whisper

Whisper 架构是一种简单的端到端方法,实现为利用Transformer模型的编码器-解码器。输入音频被分成 30 秒一段的模块,然后转换成 log-Mel 频谱图,然后传递到编码器。编码器来计算注意力,最后把数据传递给解码器,解码器被训练来预测相应的文本,并添加特殊标记,这些标记用来单个模型执行诸如语言识别、多语言语音转录和英语语音翻译等任务。

Whisper transformer框架

可以看到Whisper 架构是一个标准的Transformer模型框架,可见Transformer模型的应用之广。

其他现有方法经常使用更小、更紧密配对的音频文本训练数据集,或使用广泛但无监督的音频预训练。而Whisper 是在一个庞大而多样的数据集上训练的,并且没有针对任何特定的数据集进行微调,所以它不会击败专门研究 LibriSpeech 性能的模型。然而,当我们在许多不同的数据集上测量 Whisper 的零样本性能时,发现它比那些模型更加稳健,并且错误率降低了 50%。

Whisper 的音频数据集大约有三分之一是非英语的,它交替执行以原始语言转录或翻译成英语的任务。发现这种方法在学习语音到文本的翻译任务方面特别有效,并且优于SOTA模型的 CoVoST2 英语翻译零样本监督模型。

——2——

Whisper语音识别模型代码实战

Whisper支持5种不同的模型尺寸

Whisper支持5种不同的模型尺寸,其中前四种针对英文版本,我们可以先用一段英文版本的语音来测试一下

!pip install --upgrade pytube

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

import whisper

import pytube

34;https://www.youtube.com/watch?v=-7E-qFI&39;https://www.youtube.com/watch?v=-LIIf7E-qFI&39;mp4&34;18&34;video/mp4&34;360p&34;24fps&34;avc1.42001E&34;mp4a.40.2&34;True&34;video&34;22&34;video/mp4&34;720p&34;24fps&34;avc1.64001F&34;mp4a.40.2&34;True&34;video&34;136&34;video/mp4&34;720p&34;24fps&34;avc1.64001f&34;False&34;video&选择720p视频下载

stream.download()

言归正传,我们下载完成视频文件后,就可以使用whisper模型来进行语音识别任务了

model = whisper.load_model(&34;)

text = model.transcribe(&34;)

text[&39;]

从whisper的模型可知,其模型开源了5种模型,可以自行选择,然后把我们下载的音频文件直接使用model.transcribe(&34;)代码,模型便可以自动识别,并打印出识别出来的txt文本

I don&39;t know what you want. If you are looking for ransom, I can tell you I don&39;t, I will look for you. I will find you. And I will kill you. Good luck.

源视频字幕

可以看到,模型识别效果极高,针对本段音频,其识别正确率为100%,当然模型支持99种语言,大家可以使用模型来识别不同语言的语音。

模型识别精度对比

模型训练数据

当然,模型除了识别英文语音外,还可以识别其他语言,我们这里使用一个中文语音,当然这里顺便我们把中文语音识别完成后,再翻译成中文

import ipywidgets as widgets

languages = {&34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;}

selection = widgets.Dropdown(

options=[(&34;, None), (&34;, None)] + sorted([(f&34;, k) for k, v in languages.items()]),

value=&34;,

description=&39;,

disabled=False,

)

selection

首先,这里我们需要选择我们识别的语音是那个语言

lang = selection.value

language = languages[lang]

assert lang is not None, &34;

print(f&34;)

这里,我们选择Chinese

39;2233.mp3&34;transcribe&34;translate&34;text&34;text"]

transcriptions.append(transcription)

translations.append(translation)

data = pd.DataFrame(dict(

transcription=transcriptions, translation=translations))

data

这里,我们使用一段中文语音,并设置task为transcribe,意思是语音识别,另外设置一个task为translate,意思是翻译,最后模型识别出语音,也会自动翻译其中文到英文

transcription

translation

0

你可将此文本替换为所需的任何文本。你可在此文本框中编写或在此处粘贴你自己的文本。请尽情使用文本转语音功能。

You can replace this document with any other document you need. You can write or paste your own documents in this document box. Please use the text translation feature.

模型可以识别的99种语音如下,大家可以根据自己的应用选择不同的模型与语音

本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除

窝牛号 wwww.93ysy.com   沪ICP备2021036305号-1