【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 为我们带来了无限的可能性,期待未来更多创新应用的出现。🌈

相关推荐
张叔zhangshu2 小时前
TensorFlow 的基本概念和使用场景
人工智能·python·tensorflow
云起无垠6 小时前
【论文速读】| FirmRCA:面向 ARM 嵌入式固件的后模糊测试分析,并实现高效的基于事件的故障定位
人工智能·自动化
AI小欧同学6 小时前
【AIGC-ChatGPT进阶副业提示词】育儿锦囊:化解日常育儿难题的实用指南
chatgpt·aigc
测试者家园6 小时前
ChatGPT接口测试用例生成的流程
软件测试·chatgpt·测试用例·接口测试·测试图书·质量效能·用chatgpt做测试
Leweslyh8 小时前
物理信息神经网络(PINN)八课时教案
人工智能·深度学习·神经网络·物理信息神经网络
love you joyfully8 小时前
目标检测与R-CNN——pytorch与paddle实现目标检测与R-CNN
人工智能·pytorch·目标检测·cnn·paddle
该醒醒了~8 小时前
PaddlePaddle推理模型利用Paddle2ONNX转换成onnx模型
人工智能·paddlepaddle
小树苗1938 小时前
DePIN潜力项目Spheron解读:激活闲置硬件,赋能Web3与AI
人工智能·web3
凡人的AI工具箱8 小时前
每天40分玩转Django:Django测试
数据库·人工智能·后端·python·django·sqlite
大多_C9 小时前
BERT outputs
人工智能·深度学习·bert