【OpenAI】第六节(语音生成与语音识别技术)从 ChatGPT 到 Whisper 的全方位指南

前言

在人工智能的浪潮中,语音识别技术正逐渐成为我们日常生活中不可或缺的一部分。随着 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 转录)
    • 五、获取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 为我们带来了无限的可能性,期待未来更多创新应用的出现。🌈

相关推荐
Guofu_Liao1 小时前
大语言模型---LoRA简介;LoRA的优势;LoRA训练步骤;总结
人工智能·语言模型·自然语言处理·矩阵·llama
ZHOU_WUYI5 小时前
3.langchain中的prompt模板 (few shot examples in chat models)
人工智能·langchain·prompt
如若1235 小时前
主要用于图像的颜色提取、替换以及区域修改
人工智能·opencv·计算机视觉
老艾的AI世界5 小时前
AI翻唱神器,一键用你喜欢的歌手翻唱他人的曲目(附下载链接)
人工智能·深度学习·神经网络·机器学习·ai·ai翻唱·ai唱歌·ai歌曲
DK221515 小时前
机器学习系列----关联分析
人工智能·机器学习
Robot2515 小时前
Figure 02迎重大升级!!人形机器人独角兽[Figure AI]商业化加速
人工智能·机器人·微信公众平台
浊酒南街6 小时前
Statsmodels之OLS回归
人工智能·数据挖掘·回归
畅联云平台7 小时前
美畅物联丨智能分析,安全管控:视频汇聚平台助力智慧工地建设
人工智能·物联网
加密新世界7 小时前
优化 Solana 程序
人工智能·算法·计算机视觉
hunteritself7 小时前
ChatGPT高级语音模式正在向Web网页端推出!
人工智能·gpt·chatgpt·openai·语音识别