如何使用OPENAI的Whisper功能进行音频字母提取功能

首先你可以使用 Python 中的 requests 库来下载该音频文件,然后通过 open() 打开该文件并传递给 OpenAI Whisper API。

完整代码如下:

  1. 安装需要的库:
pip install openai requests
  1. Python 代码:
OPENAI_API_KEY= "your openai_api_key"client = OpenAI(api_key=OPENAI_API_KEY)response = requests.get(output_url)result = []with tempfile.NamedTemporaryFile(delete=False, suffix=".wav", dir=".") as temp_audio_file:temp_audio_file.write(response.content)temp_audio_file_path = temp_audio_file.nameprint(f"Audio file saved to temporary file: {temp_audio_file_path}")# 打开音频文件并进行转录with open(temp_audio_file_path, "rb") as audio_file:transcription = client.audio.transcriptions.create(file=audio_file,model="whisper-1",response_format="verbose_json",timestamp_granularities=["word"])for word_info in transcription.words:word = word_info.wordtask_start_time = word_info.starttask_end_time = word_info.endword_task = {"word": word,"start_time": task_start_time,"end_time": task_end_time}result.append(word_task)logger.info(f"打印结果:{result}")

1. 客户端初始化

client = OpenAI(api_key=OPENAI_API_KEY)
  • client 是一个与 OpenAI API 交互的客户端实例。api_key 是你用来认证的密钥,这里应该替换为你的 OpenAI API 密钥。
  • OpenAI 是 OpenAI 提供的 Python 客户端,可以用来访问 GPT-3、Whisper、DALL-E 等服务。

2. 下载音频文件

response = requests.get(output_url)
  • 通过 requests.get(output_url) 发送 HTTP GET 请求,下载指定 URL(output_url)的内容(应该是一个音频文件)。
  • response.content 获取的是该音频文件的二进制内容。

3. 保存为临时音频文件

with tempfile.NamedTemporaryFile(delete=False, suffix=".wav", dir=".") as temp_audio_file:     temp_audio_file.write(response.content) temp_audio_file_path = temp_audio_file.name print(f"Audio file saved to temporary file: {temp_audio_file_path}")
  • tempfile.NamedTemporaryFile 用于创建一个临时文件,并指定它的后缀为 .wav,表示这个临时文件将是一个 WAV 格式的音频文件。
  • delete=False 表示临时文件在关闭时不会自动删除(稍后手动删除)。
  • temp_audio_file.write(response.content) 将从 response 中下载的音频数据写入临时文件。
  • temp_audio_file.name 获取临时文件的路径,并将其存储到 temp_audio_file_path 变量中。
  • print 输出临时文件的路径,方便调试。

4. 使用 OpenAI Whisper 进行转录

with open(temp_audio_file_path, "rb") as audio_file:transcription = client.audio.transcriptions.create( file=audio_file, model="whisper-1", response_format="verbose_json", timestamp_granularities=["word"] )
  • 这部分代码打开刚刚创建的临时音频文件。
  • client.audio.transcriptions.create 调用 Whisper 模型进行音频转录:
    • file=audio_file:传递打开的音频文件。
    • model="whisper-1":使用 Whisper 模型进行音频转录。
    • response_format="verbose_json":指定返回的结果为详细的 JSON 格式。
    • timestamp_granularities=["word"]:指定返回每个单词的时间戳(开始时间和结束时间)。

5. 处理转录结果

for word_info in transcription.words: word = word_info.word task_start_time = word_info.start task_end_time = word_info.end word_task = { "word": word, "start_time": task_start_time, "end_time": task_end_time }         result.append(word_task)
  • transcription.words 是一个包含每个单词信息的列表。每个 word_info 包含:
    • word:转录出的单词。
    • start:该单词的开始时间(单位通常是秒)。
    • end:该单词的结束时间。
  • word_task 是一个字典,用来存储每个单词的信息:包括单词、开始时间和结束时间。
  • result.append(word_task) 将每个单词的信息添加到 result 列表中。

总结

  1. 下载音频文件:通过 requests 库从指定 URL 下载音频文件并保存为临时 .wav 文件。
  2. 使用 Whisper 进行转录:通过 OpenAI 的 Whisper 模型对音频进行转录,获取每个单词的开始和结束时间。
  3. 存储转录结果:将每个单词的时间戳信息存储到 result 列表中。
  4. 打印结果:通过日志记录器将转录结果打印出来。

可能的应用场景

  • 音频转录服务(如字幕生成、语音识别)。
  • 对音频进行更详细的时间戳标记,用于后续处理(如视频编辑、语音分析等)。

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

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

相关文章

地平线征程6全球首发上车比亚迪,开启大规模量产交付

2月10日,比亚迪举办智能化战略发布会,对外正式公布全民智驾战略,并发布全新天神之眼高阶智驾系统。未来,比亚迪全系车型将搭载天神之眼高阶智驾系统。 值得注意的是,地平线最新一代车载智能计算方案征程6系列全球首发…

深度学习04 数据增强、调整学习率

目录 数据增强 常用的数据增强方法 调整学习率 学习率 调整学习率 ​调整学习率的方法 有序调整 等间隔调整 多间隔调整 指数衰减 余弦退火 ​自适应调整 自定义调整 数据增强 数据增强是通过对训练数据进行各种变换(如旋转、翻转、裁剪等)&am…

常用查找算法整理(顺序查找、二分查找、插值查找、斐波那契查找、哈希查找、二叉排序树查找、平衡二叉树查找、红黑树查找、B树和B+树查找、分块查找)

常用的查找算法: 顺序查找:最简单的查找算法,适用于无序或数据量小的情况,逐个元素比较查找目标值。二分查找:要求数据有序,通过不断比较中间元素与目标值,将查找范围缩小一半,效率…

Lineageos 22.1(Android 15) 编译隐藏API的 android.jar

一、前言 有时候会我们开发系统应用需要一些系统的方法或者属性之类的,但是被隐藏导致无法正常显示,因为SDK提供的android.jar被隐藏了,所以只能看到sourcecode,实际上编译是会报错的,比如: 一般这种无法是两种,直接添加一个类,同包名同类名,或者依赖framework.jar,可以骗过…

Game Maker 0.11:《The Sandbox》创作愿景的全新篇章

开放元宇宙已经到来,用户生成内容(UGC)是其核心。在《The Sandbox》中,我们正在重新定义数字创作,给予新一代创作者工具,打造沉浸式、互动式的游戏和体验,超越传统的短格式内容。在过去的12个月…

(8/100)每日小游戏平台系列

项目地址位于:小游戏导航 新增一个打地鼠游戏! 打地鼠(Whack-a-Mole)是一款经典的休闲游戏,玩家需要点击随机出现的地鼠,以获取分数。游戏时间有限,玩家需要在规定时间内尽可能多地击中地鼠&am…

【动态规划篇】:动态规划中的“双线叙述”--如何用状态转移解决双序列难题

✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:动态规划篇–CSDN博客 文章目录 一.双序列类DP解题步骤 二.例题1.最长公共子序列2.不相交的…

观察者模式说明(C语言版本)

观察者模式主要是为了实现一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。下面使用C语言实现了一个具体的应用示例,有需要的可以参考…

yolo11s rknn无法detect的bugfix - step by step

1.缘起 上周四下班时,发现在宿主机环境工作良好的既有的pytorch模型,在通过.pt->.onnx->.rknn的转换后无法正常工作。周五下班时,怀疑疑点在两处: 版本匹配问题通道和参数传递问题。 周六,周日,周…

前端JS接口加密攻防实操

前端JS接口加密攻防实操 背景 在爬虫过程中,对数据接口各类加密的经历总结,无头消耗资源效率不高,采用浏览器兜底解密协程并行 青铜版(混淆对称加密|签名nonce等) 解:根据API 调用栈,断点找到request参…

15.3 多线程3

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 15.3.6 线程返回值 如果需要从线程的方法中获得计算的值,可以考虑使用模块级公共变量,在线程对应的方法中最…

同步异步日志系统-日志落地模块的实现

功能:将格式化完成后的日志消息字符串,输出到指定的位置 扩展:支持同时将日志落地到不同的位置 位置分类: 1.标准输出 2.指定文件(时候进行日志分析) 3.滚动文件(文件按照时间/大小进行滚动…

【Kubernetes】k8s 部署指南

1. k8s 入门 1.1 k8s 简介 需要最需要明确的就是:kubernetes(简称 k8s ) 是一个 容器编排平台 ,换句话说就是用来管理容器的,相信学过 Docker 的小伙伴对于容器这个概念并不陌生,打个比方:容器…

Spring AI接入DeepSeek:快速打造微应用

随着DeepSeek-R1的官宣开源,DeepSeek迅速成为AI领域的热门话题,吸引了大量开发者和研究者的关注。这一开源举措不仅推动了技术的普及,也促使更多企业和机构加入到开源生态中。例如,国内大厂X度于2月14日宣布将在未来几个月推出文新…

MyBatis映射文件常用元素详解与示例

引言 MyBatis是一个优秀的持久层框架&#xff0c;它支持定制化SQL、存储过程以及高级映射。MyBatis的配置文件和映射文件分离&#xff0c;映射文件用于定义SQL语句和结果映射。本文将介绍MyBatis映射文件中常用的元素及其示例用法。 一、基础CRUD元素 1. <mapper> 作用…

SqlDbx 是一款数据库管理工具资源分享

SqlDbx_Chs 是 SqlDbx 的中文版本。SqlDbx 是一款数据库管理工具&#xff0c;支持多种数据库系统&#xff0c;如 MySQL、Oracle、SQL Server、PostgreSQL 等&#xff0c;主要用于执行 SQL 查询、管理数据库对象及数据操作。 主要功能 SQL 查询执行&#xff1a;支持编写和运行…

Dav_笔记14:优化程序提示 HINTs -4

指定全局表提示 指定表的提示通常是指发生提示的DELETE&#xff0c;SELECT或UPDATE查询块中的表&#xff0c;而不是指语句引用的任何视图中的表。 如果要为显示在视图中的表指定提示&#xff0c;Oracle建议使用全局提示&#xff0c;而不是在视图中嵌入提示。 您可以使用包含具…

Python 文本探秘:正则表达式的易错迷宫穿越 -- 7. 正则表达式

正则表达式是 Python 中处理文本的强大武器&#xff0c;但它复杂的语法和规则构成了一个易错迷宫。本文深入剖析了正则表达式模式编写的错误、匹配规则的误解、性能优化的忽视等问题。通过大量的文本处理实例&#xff0c;展示了错误的正则表达式使用方式以及正确的解决方案。帮…

PPT工具集

PPT模版 免费下载 爱PPT优品PPTPPT之家第一PPTOfficePlus部分免费 AI生成PPT Kimi秘塔搜索 可以输入内容生成PPT大纲。

rocketmq-netty通信设计-request和response

1、NettyRemotingServer启动分析 org.apache.rocketmq.remoting.netty.NettyRemotingServer#start public void start() {this.defaultEventExecutorGroup new DefaultEventExecutorGroup(nettyServerConfig.getServerWorkerThreads(),new ThreadFactory() {private AtomicI…