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

前言

在人工智能的浪潮中,语音识别技术正逐渐成为我们日常生活中不可或缺的一部分。随着 OpenAI 的 Whisper 模型的推出,语音转文本的过程变得前所未有的简单和高效。无论是从 YouTube 视频中提取信息,还是将播客内容转化为文本,Whisper 都能帮助我们轻松实现这一目标。今天,我们将深入探讨 Whisper 的强大功能,并提供详细的使用教程,让你能够快速上手这一技术。🌟

文章目录

    • 前言
    • 一、Whisper 简介
      • Whisper 的优势
    • 二、Whisper 可用的模型和语言
      • 语言支持
    • 三、开源 Whisper 本地转录
      • 3.1、安装 pytube 库
      • 3.2、下载音频 MP4 文件
      • 3.3、安装 Whisper 库
    • 四、在线 Whisper API 转录
      • 4.1、Whisper API 接口调用
      • 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 下载音频。

pip install --upgrade pytube

3.2、下载音频 MP4 文件

以“100 秒学习 Python”视频为例,视频地址为:https://www.youtube.com/watch?v=x7X9w_GIm1s。

import pytubevideo = "https://www.youtube.com/watch?v=x7X9w_GIm1s"
data = pytube.YouTube(video)
audio = data.streams.get_audio_only()
audio.download()

3.3、安装 Whisper 库

接下来,我们需要安装 Whisper 库:

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

加载模型并转录音频文件:

import whispermodel = 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 函数即可将音频文件转录成文字:

import openai, osos.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 参数,可以提高转录的准确性:

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”接口,可以在转录的同时将语音翻译成英文:

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 库进行分割:

from pydub import AudioSegmentpodcast = 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_minutesif 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 = endindex += 1

然后逐个转录音频文件:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/455885.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K8S系列-Kubernetes网络

一、Kubernetes网络模型 ​ Kubernetes网络模型设计的一个基础原则是&#xff1a;每个Pod都拥有一个独立的IP地址&#xff0c;并假定所有Pod都在一个可以直接连通的、扁平的网络空间中&#xff0c;不管它们是否运行在同一个Node&#xff08;宿主机&#xff09;中&#xff0c;都…

【Java SE 题库】LeetCode 热题 100--->两数之和

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1. 题目 2. 解析 2.1 判断两个数相加是否等于目标值 2.2 相等后&#xff0c;如何返回两个下标 3. 代码 4. 小结 取于力扣-->LeetCode 热题 100 - 学…

nginx的配置

nginx 通过nginx来进行配置&#xff0c;功能如下 通过nginx的反向代理功能访问后端的网关资源通过nginx的静态服务器功能访问前端静态页面 nginx配置步骤&#xff1a; ①&#xff1a;解压下载下来的nginx的压缩包nginx-1.18.0.zip&#xff0c;安装完成并启动后&#xff0c;访…

面经之一:Synchronized与ReentrantLock区别

Synchronized与ReentrantLock是Java中用于实现线程同步的两种主要机制&#xff0c;它们各有特点和适用场景。以下是它们的主要区别&#xff1a; 实现方式&#xff1a; Synchronized&#xff1a;是Java语言内置的关键字&#xff0c;通过JVM层面的监视器&#xff08;Monitor&…

基于vue3封装了一个coverflow轮播图(层叠轮播图)组件

最近公司有这个需求, 但是网上找了一圈 , 没有合适的能用在vue3里面的、且长这样的组件, 干脆自己动手写了一个; 效果如下, 可以适配多张图片 ,小于五张会是平铺展示; 大于五张按顺序轮播 , 每次切换有动画 <template><div class"Swiper"><div v-i…

COSCon'24 志愿者招募令:共创开源新生活!

亲爱的开源爱好者们&#xff0c; 第九届中国开源年会&#xff08;COSCon24&#xff09;即将在北京中关村国家自主创新示范区会议中心于2024年11月2日至3日隆重举行。今年的主题是“Open Source, Open Life&#xff5c;开源新生活”&#xff0c;旨在探索开源技术如何在各个领域推…

APP综合应用之业务场景脚本测试任务(5)--多重继承与总结

在脚本中&#xff0c;有三个子类继承自父类Test_login,那么怎么同时获得三个子类的继承呢&#xff1f; 1、多重继承 下面用Test_flowdriver的子类继承自上面的三个子类。 新建一个工作流驱动的文件testtest_run_workflowV1.py 主要是创建驱动类时&#xff0c;要把三个子类都继…

VisionPro —— CogBlobTool斑点工具详解

一 CogBlobTool 简介 CogBlobTool 一个用于斑点检测和分析的工具。可以使用该工具检查图像的区域&#xff0c;并定位由灰度值有限范围内的像素组成的特征&#xff0c;这些特征的形状通常是不可预测的。检测和分析这些特征或斑点的过程称为斑点分析。您可以使用blob分析来提供有…

【C++】——list 容器的解析与极致实现

人的一切痛苦&#xff0c;本质上都是对自己的无能的愤怒。 —— 王小波 目录 1、list 介绍 2、list的使用 2.1 list 的构造 2.2 iterator 的使用 2.3 list 的修改 2.4一些特殊接口 2.5 迭代器失效问题 3、实现list 3.1底层结构 结点类 list类 迭代器类 3.2功能接…

MYSQL-SQL-04-DCL(Data Control Language,数据控制语言)

DCL&#xff08;数据控制语言&#xff09; DCL英文全称是Data Control Language(数据控制语言)&#xff0c;用来管理数据库用户、控制数据库的访问权限。 一、管理用户 1、查询用户 在MySQL数据库管理系统中&#xff0c;mysql 是一个特殊的系统数据库名称&#xff0c;它并不…

信息安全工程师(54)网络安全审计主要产品与技术指标

前言 网络安全审计是对网络系统进行全面的安全评估和检查&#xff0c;以发现网络安全漏洞和威胁&#xff0c;并采取相应的措施进行修补和防护的重要过程。 一、网络安全审计主要产品 域智盾 简介&#xff1a;一款企业级功能强大的网络监控和审计工具&#xff0c;能够持续监控网…

ElasticSearch分片

本文内容参考了田雪松老师编著的《Elastic Stack应用宝典》 ElasticSearch作为一个搜索引擎&#xff0c;会存储海量的数据。而存储海量的数据&#xff0c;就要解决如何存储的问题&#xff0c;并且保证数据不会丢失&#xff0c;同时还需要保证数据检索的效率&#xff0c;尽可能…

【Linux】总线-设备-驱动模型

背景 前面&#xff0c;我们介绍了写驱动代码的一些常规步骤&#xff0c;并且也写了最基本的驱动代码&#xff0c;但是那些代码存在着问题&#xff0c;我们将硬件的信息都写进了驱动里了&#xff0c;如果我们在杂项设备驱动中控制led&#xff0c;那么会在硬件操作接口中包含硬件…

WPF+MVVM案例实战-设备状态LED灯变化实现

文章目录 1、项目创建2、UI界面布局1. MainWindow.xaml2、颜色转换器实现2.MainViewModel.cs 代码实现 3、运行效果4.源代码下载 1、项目创建 打开 VS2022 &#xff0c;新建项目 Wpf_Examples&#xff0c;创建各层级文件夹&#xff0c;安装 CommunityToolkit.Mvvm 和 Microsof…

STMicroelectronics 意法半导体芯片选型表

意法半导体作为全球知名的半导体厂商&#xff0c;其产品广泛应用于各个领域&#xff0c;从消费电子到工业控制&#xff0c;从汽车电子到通信设备&#xff0c;都能看到意法半导体芯片的身影。在电子硬件设计领域&#xff0c;芯片的选型至关重要。亿配芯城&#xff08;ICgoodFind…

(3) c++基本代码

main函数 main函数只有可执行程序才需要&#xff0c;如果是动态库等则无需main函数。 main函数标准的写法是 #include <iostream> using namspace std; int main(void) {// 业务代码return 0; } 当然以上代码只是最简单的案例&#xff0c;其中代表main函数值是int&#…

网络编程(21)——通过beast库快速实现http服务器

目录 二十一、day21 1. 头文件和作用域重命名 2. reponse时调用的一些函数 3. http_connection a. 构造函数 b. start() c. process_request() d. create_response() e. create_post_response() f. write_response() 4. Server 5. 主函数 6. 测试 1&#xff09;测…

参加了十多个面试,一个offer也没拿到...为什么?

前几天&#xff0c;一个小伙伴留言说&#xff1a;自己面试了10多家企业了&#xff0c;愣是没有拿到一个offer&#xff0c;究竟是哪里出了问题&#xff1f; 这两天笔者抽空整理好了答案&#xff0c;借这位同学的问题&#xff0c;给大家做一个简单的剖析&#xff1a;为什么参加了…

【Blender】 学习笔记(一)

文章目录 参考概念原点 Origin游标 轴心点坐标操作默认快捷键两个比较好用的功能渲染器元素不可选&#xff08;防止误选&#xff09; 参考 参考b站视频&#xff1a;【Kurt】Blender零基础入门教程 | Blender中文区新手必刷教程(已完结) 概念 模型、灯光、摄像机 原点 Origin…

ArcGIS无插件加载(无偏移)在线天地图高清影像与街道地图指南

在地理信息系统&#xff08;GIS&#xff09;的应用中&#xff0c;加载高清影像与街道地图对于地图制图、影像查阅、空间数据分析等工作至关重要。天地图作为官方出品的地图服务&#xff0c;以其标准的数据、较快的影像更新速度等特点受到广泛欢迎。以下是如何在ArcGIS中无插件加…