当前位置: 首页 > news >正文

如何使用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. 打印结果:通过日志记录器将转录结果打印出来。

可能的应用场景

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

相关文章:

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

首先你可以使用 Python 中的 requests 库来下载该音频文件,然后通过 open() 打开该文件并传递给 OpenAI Whisper API。 完整代码如下: 安装需要的库: pip install openai requests Python 代码: OPENAI_API_KEY "your o…...

DFS算法篇:理解递归,熟悉递归,成为递归

1.DFS原理 那么dfs就是大家熟知的一个深度优先搜索,那么听起来很高大尚的一个名字,但是实际上dfs的本质就是一个递归,而且是一个带路径的递归,那么递归大家一定很熟悉了,大学c语言课程里面就介绍过递归,我…...

2025java常见面试题第一弹

1. Java中的HashMap和Hashtable有什么区别? 答案: 线程安全性: HashMap是线程不安全的,适合单线程环境。如果在多线程环境下使用,可能会出现数据不一致的问题。 Hashtable是线程安全的,内部方法通过synch…...

JMeter工具介绍、元件和组件的介绍

Jmeter功能概要 JDK常用文件目录介绍 Bin目录:存放可执行文件和配置文件 Docs目录:是Jmeter的API文档,用于开发扩展组件 printable_docs目录:用户帮助手册 lib目录:存放JMeter依赖的jar包和用户扩展所依赖的Jar包…...

机舱卫生和空气质量改善

公共卫生挑战:在密闭空间内控制病原体 由于公共交通等密闭空间内的人员密度很高,因此保持良好的空气质量至关重要。有效的通风系统在循环新鲜空气和降低空气中病原体和污染物的浓度方面起着关键作用。使用高效微粒空气 (HEPA) 过滤…...

springBoot之环境变量

springboot 在new SpringBootApplication()时, 会扫描所有的spring.factory; 它会给每个接口当做group,所有实现类为List当做value,形成map; group -> List 系统属性 java的相关属性 系统环境属性,指的是操作系统相关的配置 每个配置对应一个contro…...

萨班斯-奥克斯利法案(Sarbanes-Oxley Act, SOX):公司财务透明度的守护者(中英双语)

萨班斯-奥克斯利法案(Sarbanes-Oxley Act):公司财务透明度的守护者 在2001年安然(Enron)和世通(WorldCom)等公司财务造假丑闻爆发后,美国政府迅速出台了《萨班斯-奥克斯利法案》&am…...

iOS 中使用 FFmpeg 的高级功能 - 滤镜(Filters)

FFmpeg 提供了强大的滤镜功能,可以对音视频进行各种处理,例如裁剪、缩放、添加水印、调整颜色、添加特效等。 1. FFmpeg 滤镜基础知识 1.1 什么是滤镜(Filters)? 滤镜是 FFmpeg 提供的一种功能,用于对音视频流进行处理。滤镜链(Filter Chain)是多个滤镜的组合,按顺序…...

tomcat html乱码

web tomcat html中文乱码 将html文件改成jsp <% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8"%>添加 <meta charset"UTF-8">...

kubectl exec 实现的原理

kubectl exec 是 Kubernetes 提供的一个命令&#xff0c;它允许你在指定的 Pod 中执行命令&#xff0c;类似于在容器中打开一个终端会话。这个功能对于调试、监控和管理容器化应用非常有用。kubectl exec 的实现涉及到多个 Kubernetes 组件和机制&#xff0c;包括 API Server、…...

Unity中可靠的UDP实现

可靠 UDP&#xff08;Reliable UDP&#xff09;是一种在用户数据报协议&#xff08;UDP&#xff09;基础上&#xff0c;通过添加额外机制来实现可靠数据传输的技术。与传统 UDP 相比&#xff0c;它克服了 UDP 本身不保证数据可靠性、顺序性以及可能丢失数据的缺点&#xff0c;同…...

CentOS 7操作系统部署KVM软件和创建虚拟机

CentOS 7.9操作系统部署KVM软件和配置指南&#xff0c;包括如何创建一个虚拟机。 步骤 1: 检查硬件支持 首先&#xff0c;确认您的CPU支持虚拟化技术&#xff0c;并且已在BIOS中启用&#xff1a; egrep -c (vmx|svm) /proc/cpuinfo 如果输出大于0&#xff0c;则表示支持虚拟…...

Golang GORM系列:GORM分页和排序

高效的数据检索和表示是应用程序开发的关键方面。GORM是健壮的Go对象关系映射库&#xff0c;它为开发人员提供了强大的工具来实现这一点。无论你是在构建动态web应用程序还是数据密集型服务&#xff0c;掌握GORM中的分页和排序使您能够提供无缝且高效的用户体验。本文我们将深入…...

WPF的MVVMLight框架

在NuGet中引入该库&#xff1a; MVVMLight框架中的命令模式的使用&#xff1a; <StackPanel><TextBox Text"{Binding Name}"/><TextBox Text"{Binding Title}"/><Button Content"点我" Command"{Binding ShowCommand…...

微服务SpringCloudAlibaba组件sentinel教程【详解sentinel的使用以及流量控制、熔断降级、热点参数限流等,附有示例+代码】

文章目录 四.Sentinel限流熔断4.1 sentinel介绍4.2 Sentinel 的历史4.3 Sentinel 基本概念资源规则 4.4 Sentinel 功能和设计理念4.4.1 流量控制4.4.2熔断降级什么是熔断降级熔断降级设计理念系统负载保护 4.5 Sentinel 是如何工作的4.6 Sentinel使用4.7 Sentinel 控制台4.8 Sp…...

ScoreFlow:通过基于分数的偏好优化掌握 LLM 智体工作流程

25年2月来自 U of Chicago、Princeton U 和 U of Oxford 的论文“ScoreFlow: Mastering LLM Agent Workflows via Score-based Preference Optimization”。 最近的研究利用大语言模型多智体系统来解决复杂问题&#xff0c;同时试图减少构建它们所需的手动工作量&#xff0c;从…...

数字水印嵌入及提取系统——基于小波变换GUI

数字水印嵌入及提取系统——基于小波变换GUI 基于小波变换的数字水印系统&#xff08;Matlab代码GUI操作&#xff09; 【有简洁程序报告】【可作開题完整文档达辩PPT】 本系统主要的内容包括&#xff1a; &#xff08;1&#xff09;使用小波变换技术实现二值水印图像的加密、…...

基于海思soc的智能产品开发(图像处理的几种需求)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 对于一个嵌入式设备来说&#xff0c;如果上面有一个camera&#xff0c;那么就可以有很多的用途。简单的用途就是拍照&#xff0c;比拍照更多一点的…...

【R语言】聚类分析

聚类分析是一种常用的无监督学习方法&#xff0c;是将所观测的事物或者指标进行分类的一种统计分析方法&#xff0c;其目的是通过辨认在某些特征上相似的事物&#xff0c;并将它们分成各种类别。R语言提供了多种聚类分析的方法和包。 方法优点缺点适用场景K-means计算效率高需…...

Spring 项目接入 DeepSeek,分享两种超简单的方式!

⭐自荐一个非常不错的开源 Java 面试指南&#xff1a;JavaGuide &#xff08;Github 收获148k Star&#xff09;。这是我在大三开始准备秋招面试的时候创建的&#xff0c;目前已经持续维护 6 年多了&#xff0c;累计提交了 5600 commit &#xff0c;共有 550 多位贡献者共同参与…...

AI安全编排器:自动化安全任务与DevSecOps实践

1. 项目概述&#xff1a;一个为安全任务而生的AI编排器如果你正在寻找一个能帮你自动处理安全相关任务的AI助手&#xff0c;并且希望它能像经验丰富的安全工程师一样思考和工作&#xff0c;那么ultra-orchestrator-skill这个项目值得你花时间了解一下。简单来说&#xff0c;它是…...

RubiCap框架:提升密集图像描述细节与准确性的创新方案

1. 项目背景与核心价值在计算机视觉与自然语言处理的交叉领域&#xff0c;密集图像描述&#xff08;Dense Image Captioning&#xff09;一直是个极具挑战性的任务。不同于传统图像标注只需生成单一句子描述&#xff0c;密集描述要求模型能够识别图像中的多个显著区域&#xff…...

用Python+Lingo搞定2000年国赛B题:钢管订购运输优化模型保姆级复现

用PythonLingo实现钢管订购运输优化模型全流程解析 数学建模竞赛中&#xff0c;优化类问题一直是考察选手综合能力的重要题型。2000年国赛B题"钢管订购与运输"作为经典案例&#xff0c;融合了线性规划、运输问题和成本优化的核心知识点。本文将抛开复杂的理论推导&am…...

01. 安卓逆向基础、环境搭建与授权

边界说明&#xff1a;本文只面向自研 Demo、开源靶场或已获得书面授权的 App。所有操作目标都是理解 Android 应用结构、验证安全风险、建设防护能力&#xff0c;不用于未授权破解、盗号、绕过付费或攻击第三方服务。1. 本章目标 学完本章后&#xff0c;应能完成四件事&#xf…...

告别SAM!用SEEM这个开源视觉大模型,实现文本、涂鸦、图片一键分割(附保姆级部署教程)

SEEM视觉大模型实战&#xff1a;多模态提示分割从入门到精通 在计算机视觉领域&#xff0c;图像分割一直是核心技术难题。传统方法往往需要针对特定任务定制模型&#xff0c;而Meta推出的SAM&#xff08;Segment Anything Model&#xff09;虽然实现了通用分割&#xff0c;却存…...

告别漏报!手把手教你配置Log4j2Scan插件的延迟检测与内网扫描

告别漏报&#xff01;手把手教你配置Log4j2Scan插件的延迟检测与内网扫描 在渗透测试实战中&#xff0c;Log4j2漏洞&#xff08;CVE-2021-44228&#xff09;的检测常面临两大技术痛点&#xff1a;网络延迟导致的假阴性和内网环境下的检测盲区。传统扫描工具往往因缺乏智能重试…...

SkyBridge:构建AI模型统一接入层,实现多模型智能路由与生产级运维

1. 项目概述&#xff1a;当AI模型需要“搭桥”时&#xff0c;我们做了什么最近在折腾大模型应用落地的朋友&#xff0c;估计都绕不开一个核心痛点&#xff1a;模型能力很强&#xff0c;但怎么把它稳定、高效、低成本地集成到自己的业务流里&#xff0c;是个大问题。尤其是在面对…...

多模态大模型安全评估:挑战、框架与实战防御

1. 项目背景与核心挑战在人工智能技术快速发展的当下&#xff0c;多模态大模型已成为行业焦点。这类模型能够同时处理文本、图像、音频等多种数据形式&#xff0c;在智能客服、内容生成、医疗诊断等领域展现出惊人潜力。然而&#xff0c;随着模型能力的提升&#xff0c;其面临的…...

Cursor规则集:用AI代码助手实现团队编码规范自动化

1. 项目概述&#xff1a;当你的代码编辑器开始“思考”如果你是一名开发者&#xff0c;最近可能频繁听到一个词&#xff1a;Cursor。它不再仅仅是一个光标&#xff0c;而是一款正在悄然改变许多程序员工作流的AI代码编辑器。而今天要聊的&#xff0c;不是Cursor本身&#xff0c…...

2026年值得关注!AI大模型接口代理网站推荐,满足不同场景需求

在2026年&#xff0c;AI工业化落地的浪潮席卷了各个行业。大模型API中转平台从原本的“可选工具”&#xff0c;已经升级成为开发者必备的基础设施。 国内开发者面临的稳定性挑战 国产大模型的能力日益强大&#xff0c;但它们的API稳定性能否经受住生产环境的考验&#xff0c;…...