前言
在人工智能的浪潮中,语音识别技术正逐渐成为我们日常生活中不可或缺的一部分。随着 OpenAI 的 Whisper 模型的推出,语音转文本的过程变得前所未有的简单和高效。无论是从 YouTube 视频中提取信息,还是将播客内容转化为文本,Whisper 都能帮助我们轻松实现这一目标。今天,我们将深入探讨 Whisper 的强大功能,并提供详细的使用教程,让你能够快速上手这一技术。🌟
文章目录
-
- 前言
- [一、Whisper 简介](#一、Whisper 简介)
-
- [Whisper 的优势](#Whisper 的优势)
- [二、Whisper 可用的模型和语言](#二、Whisper 可用的模型和语言)
- [三、开源 Whisper 本地转录](#三、开源 Whisper 本地转录)
-
- [3.1、安装 pytube 库](#3.1、安装 pytube 库)
- [3.2、下载音频 MP4 文件](#3.2、下载音频 MP4 文件)
- [3.3、安装 Whisper 库](#3.3、安装 Whisper 库)
- [四、在线 Whisper API 转录](#四、在线 Whisper API 转录)
-
- [4.1、Whisper API 接口调用](#4.1、Whisper API 接口调用)
- [4.2、使用 Prompt 参数优化](#4.2、使用 Prompt 参数优化)
- 4.3、其它参数介绍
- 4.4、转录过程翻译功能
- 4.5、分割音频处理大文件
- 五、获取OpenAI-api的方法
- 六、总结
一、Whisper 简介
Whisper 是 OpenAI 开发的一款先进的语音识别系统,经过 680,000 小时的多语言和多任务监督数据训练,具备了强大的鲁棒性。它不仅支持多种语言的转录,还能将这些语言翻译成英语。与其他 AI 模型不同,Whisper 是一个开源模型,开发者可以自由使用和修改。
Whisper 的优势
- 开源免费:开发者可以自由使用和修改代码。
- 多语言支持:包括中文、英文等多种语言。
- 高准确率 :在多种场景下表现优于市面上许多音频转文字工具。
二、Whisper 可用的模型和语言
Whisper 提供了五种不同尺寸的模型,适用于不同的应用场景。以下是可用型号及其大致的内存需求和相对速度:
- tiny:适合快速测试,内存占用小。
- base:适合一般应用,速度和准确性平衡。
- small:适合对准确性有一定要求的应用。
- medium:适合需要较高准确率的场景。
- large:适合对准确性要求极高的应用,但需要较大的显存。
语言支持
Whisper 支持多种语言的转录,具体性能因语言而异。通过使用 Fleurs 数据集,Whisper 在不同语言上的表现可以通过单词错误率(WER)进行评估,数字越小,性能越好。
三、开源 Whisper 本地转录
3.1、安装 pytube 库
在开始使用 Whisper 进行转录之前,我们需要安装 pytube
库,以便从 YouTube 下载音频。
bash
pip install --upgrade pytube
3.2、下载音频 MP4 文件
以"100 秒学习 Python"视频为例,视频地址为:https://www.youtube.com/watch?v=x7X9w_GIm1s。
python
import pytube
video = "https://www.youtube.com/watch?v=x7X9w_GIm1s"
data = pytube.YouTube(video)
audio = data.streams.get_audio_only()
audio.download()
3.3、安装 Whisper 库
接下来,我们需要安装 Whisper 库:
bash
pip install git+https://github.com/openai/whisper.git -q
加载模型并转录音频文件:
python
import whisper
model = whisper.load_model("base")
text = model.transcribe("Python in 100 Seconds.mp4")
print(text['text'])
四、在线 Whisper API 转录
4.1、Whisper API 接口调用
OpenAI 提供的 Whisper API 使用非常简单,只需调用 transcribe
函数即可将音频文件转录成文字:
python
import openai, os
os.environ['OPENAI_API_KEY'] = "your-openai-api-key"
openai.api_key = os.getenv("OPENAI_API_KEY")
audio_file = open("./data/generative_ai_topics_clip.mp3", "rb")
transcript = openai.Audio.transcribe("whisper-1", audio_file)
print(transcript['text'])
4.2、使用 Prompt 参数优化
通过在转录过程中加入 Prompt 参数,可以提高转录的准确性:
python
audio_file = open("./data/generative_ai_topics_clip.mp3", "rb")
transcript = openai.Audio.transcribe("whisper-1", audio_file,
prompt="这是一段中文播客内容。")
print(transcript['text'])
4.3、其它参数介绍
除了模型名称、音频文件和 Prompt,transcribe
接口还支持以下参数:
- response_format:返回文件格式(JSON、TEXT、SRT、VTT)。
- temperature:调整采样概率分布(0-1 之间)。
- language:指定音频语言。
4.4、转录过程翻译功能
Whisper API 还提供了"translation"接口,可以在转录的同时将语音翻译成英文:
python
audio_file = open("./data/generative_ai_topics_clip.mp3", "rb")
translated_prompt = "This is a podcast discussing ChatGPT and PaLM model."
transcript = openai.Audio.translate("whisper-1", audio_file,
prompt=translated_prompt)
print(transcript['text'])
4.5、分割音频处理大文件
对于超过 25MB 的音频文件,可以使用 PyDub 库进行分割:
python
from pydub import AudioSegment
podcast = AudioSegment.from_mp3("./data/generative_ai_topics_long.mp3")
ten_minutes = 15 * 60 * 1000
total_length = len(podcast)
start = 0
index = 0
while start < total_length:
end = start + ten_minutes
if end < total_length:
chunk = podcast[start:end]
else:
chunk = podcast[start:]
with open(f"./data/generative_ai_topics_{index}.mp3", "wb") as f:
chunk.export(f, format="mp3")
start = end
index += 1
然后逐个转录音频文件:
python
prompt = "这是一段Onboard播客,里面会聊到ChatGPT以及PALM这个大语言模型。"
for i in range(index):
clip = f"./data/generative_ai_topics_{i}.mp3"
audio_file = open(clip, "rb")
transcript = openai.Audio.transcribe("whisper-1", audio_file,
prompt=prompt)
if not os.path.exists("./data/transcripts"):
os.makedirs("./data/transcripts")
with open(f"./data/transcripts/generative_ai_topics_{i}.txt", "w") as f:
f.write(transcript['text'])
sentences = transcript['text'].split("。")
prompt = sentences[-1]
五、获取OpenAI-api的方法
【OpenAI】第一节(OpenAI API)获取OpenAI API KEY的两种方式,开发者必看全方面教程!
六、总结
OpenAI 的 Whisper 模型为语音识别提供了一个强大而灵活的解决方案。无论是通过 API 还是使用开源模型,用户只需简单几行代码即可实现音频转录。通过传入 Prompt 参数,用户可以显著提高转录的准确性,减少错误和遗漏。
虽然 OpenAI 的 API 接口对单个转录文件的大小有限制,但我们可以通过 Python 包如 PyDub 将音频文件切分成多个小片段来解决这一问题。转录后的结果可以与 ChatGPT 和其他工具结合使用,实现文本总结和信息提取。
这种技术组合不仅提高了我们处理音频内容的效率,还为我们创造了更多从海量信息中获取有价值内容的机会。AI 为我们带来了无限的可能性,期待未来更多创新应用的出现。🌈