什么是 OpenAI Whisper?
Whisper 是一款功能强大的 AI 工具,可以识别语音并自动翻译。Whisper 拥有 680k 小时的标记数据,可以处理任何数据集或域,而无需额外调整。它最早是由 OpenAI 的 Alec Radford 和他的团队在他们的开创性论文“Robust Speech Recognition via Large-Scale Weak Supervision”中提出的。最好的部分是什么?OpenAI 于 2022 年 10 月发布它,作为他们的第一个开源和免费的 AI 模型。
Whisper 的优点和缺点
您是否正在考虑使用 OpenAI 的 Whisper 进行语音识别和翻译?在您做出决定之前,必须权衡这个尖端工具的优缺点。
优点:
- Whisper 是免费的。
- 它是开源的,可让您查看幕后发生的事情。
- Whisper 支持多种语言。
- 提供多种型号,以满足不同的性能和速度要求。
缺点:
- Whisper 无法流式传输转录。它目前只允许离线转录。
- 一些用户表达了隐私方面的担忧,因为目前尚不清楚 Whisper 如何存储和处理音频文件。
价格
Whisper 模型是免费的。您可以在 Python 应用程序中使用 Whisper 模型,而无需注册 OpenAI 账户。
OpenAI Whisper 入门
Whisper 的伟大之处在于:你不需要 API 密钥就可以在 Python 中使用它。您所要做的就是下载 open-whisper 库,选择一个模型,然后开始转录。
但请记住,Whisper 模型非常庞大,并且使用顶级的深度学习和 transformer 模型。要获得最佳性能,请尝试在 GPU 架构上运行它。没有这些?不用担心!只需使用 Google Colab,这是一个免费且方便的基于云的平台,用于在 GPU 上运行大型深度学习模型。
安装 Whisper Python 库
以下是通过一个简单的步骤安装 Open AI Whisper 的 Python 包装器的方法!使用此 pip 命令。
!pip install -U openai-whisper
Load Whisper 模型
Whisper 提供了五种转录模型,它们的准确性和速度各不相同。
小、基本、小和中型号具有仅英文(以 .en 结尾)和多语言版本。最大的模型只有一个多语言版本。
微型模型最小、最快,但精度最低。最大的模型最准确,但可能非常慢。根据我的经验,基本模型对于日常音频转录任务来说足够准确。
whisper 模块的 load_model() 方法在 Python 应用程序中加载一个 whisper 模型。您必须将模型名称作为参数传递给 load_model() 方法。
import whisper
model = whisper.load_model("base")
转录音频
使用 Whisper,您只需几行代码即可转录音频文件。
模型对象中的 transcribe() 方法转录音频。该方法接受音频文件的路径作为参数值。
以下脚本使用 transcribe() 方法转录音频文件harvard.wav(您可以从 Kaggle 下载)。
transcribe() 方法返回一个包含转录文本、转录片段等的 Python 字典。您可以使用词典的 text 键获取转录文本。
# path to download the dataset
#https://www.kaggle.com/datasets/pavanelisetty/sample-audio-files-for-speech-recognition
result = model.transcribe("/content/harvard.wav")
result["text"]
转录长音频文件可能需要相当长的时间。在这种情况下,您可以通过将 True 作为 transcribe() 方法的 verbose 属性的值来查看转录进度。
在输出中,您将动态看到转录的文本片段。
result = model.transcribe("/content/harvard.wav", verbose = True)
print(result["text"])
流程响应
你处理 Whisper 的回答的方式是主观的。您可以使用文本键获取完整的文本转录,如上一个脚本中所示,或处理单个文本段。
响应字典的 segments 键返回所有转录段的列表。Segments 列表中的每一项都是一个字典,其中包含 Segment 信息,例如段落文本、音频中 Segment 的开始和结束时间等。
result['segments']
您可以遍历区段列表,并使用 text 键打印每个区段的文本。
for i, seg in enumerate(result['segments']):
print(i+1, "- ", seg['text'])
另一种选择是使用 Pandas DataFrame 的 from_dict() 方法将段列表转换为 Pandas DataFrame。
import pandas as pd
speech = pd.DataFrame.from_dict(result['segments'])
speech.head()
你知道什么比用 Whisper 转录语音更酷的吗?使用它来检测音频的语言!是的,你没看错。继续阅读以了解它是如何完成的。
语言检测
对于语言识别,您首先需要使用 whisper 模块中的 load_audio() 方法加载音频。接下来,使用 pad_or_trim() 方法填充或修剪音频,该方法将音频文件填充或修剪到指定的持续时间。默认大小为 30 秒。
audio = whisper.load_audio("/content/harvard.wav")
audio = whisper.pad_or_trim(audio)
Whisper 模型是处理数字的统计算法。您必须先将音频数据转换为数字,然后 Whisper 模型才能对其进行处理。您可以使用 Log Mel Spectrogram 技术对音频信号进行数值特征表示。
以下代码使用 log_mel_spectrogram() 方法创建音频文件的特征表示,然后将特征图移动到与模型相同的设备。
然后,你可以使用模型对象的 detect_language() 方法,并将特征图传递给它。在输出中,您将看到各种语言的检测概率。
mel = whisper.log_mel_spectrogram(audio).to(model.device)
_, probs = model.detect_language(mel)
probs
您可以看到英语 (en) 的概率最高,为 99.7%,其次是中文 (zh) 和德语 (de)。
注意: 语言代码遵循 ISO-639-1 标准语言代码。
您可以使用以下脚本获取最有可能的语言。
print(f"Detected language: {max(probs, key=probs.get)}")
在以下部分中,您将看到在实际场景中利用 Whisper 模型的示例。您将结合使用 OpenAI GPT-3 模型和 Whisper 模型来执行以下任务:
- 使用 Whisper 转录 Earning Calls
- 使用 GPT3 总结 Whisper-Transcribed Earnings Call
- 使用 CPT-3 对 Earning Calls 执行情绪分析
Whisper 替代品
以下是 OpenAI Whisper 的一些替代方案:
常见问题解答
OpenAI Whisper 是免费的吗?
是的,OpenAI Whisper 可以免费使用。您无需注册 OpenAI 或支付任何费用即可使用 Whisper。
OpenAI Whisper 是开源的吗?
是的,Whisper 是开源的。Whisper 模型的代码以 GitHub 存储库的形式提供。
Whisper AI 的准确性如何?
OpenAI 表示,Whisper 接近人类水平的英语语音识别的稳健性和准确性。实际精度因使用的特定型号而异。通常,模型越大,结果越准确,其中小模型最不准确,而大模型最准确。
OpenAI 根据 WER(单词错误率)报告其模型的准确性,WER 是指转录中与输入音频中实际说出的单词不同的单词数。您可以在介绍 Whisper 模型的研究论文的附录 D 中找到 WER for Whisper 模型的详细信息。
谁拥有 Whisper AI?
OpenAI 是一家人工智能研发公司,拥有 Whisper AI。Whisper 是开源的,可以在 MIT 许可下免费使用。
Whisper 是通用语音识别模型吗?
是的,Whisper 是一种通用的语音识别模型。您可以使用它来转录来自各个域的音频。
OpenAI Whisper 支持的语言?
目前,Whisper 支持 99 种语言的音频到文本转录。Whisper 还支持将这些语言的文本翻译成英语。