OpenAI模型whisper 音频转文本

最近有一个音频转文本的需求,了解到了OpenAI的whisper模型可以实现。
Whisper 是 OpenAI 提供的一个通用语音识别模型,支持多语言的音频转文本功能,并具有较高的准确性。它的主要用途包括自动语音识别 (ASR)、语言翻译(将音频直接翻译成英文文本)等。Whisper 支持将长时间音频文件(如对话、采访、演讲)转录成文字,并且在多语言环境下表现良好。

Whisper 的核心功能

  1. 音频转文本:自动将音频内容转录为文本。
  2. 多语言支持:Whisper 支持包括中文、法语、西班牙语、阿拉伯语等多种语言。
  3. 自动语言检测:能够识别音频语言,无需提前指定。
  4. 翻译:将非英文音频直接翻译成英文文本。

Whisper 模型的安装和使用

1. 下载 Whisper
git clone https://github.com/openai/whisper.git 
cd whisper
python -m venv myvenv #创建虚拟环境
venv\Scripts\activate #激活虚拟环境
pip install -r requirements.txt #在该虚拟环境下安装依赖库
2. 安装 ffmpeg

自行参考Windows安装安装ffmpeg
如果ffmpeg没有安装成功,运行代码会报如下错误:

image

我一开始碰到这个问题以为是音频文件的路径错了

3. 使用 Whisper 进行音频转文本

Whisper 提供了简单的 API,可以很方便地加载模型并进行转录。以下是一个基本的代码示例:


import whisper
from pathlib import Path
import jsonclass TextSegment:def __init__(self, text, begin, end):self.text = textself.begin = beginself.end = enddef to_dict(self):# 将对象转换为字典return {"text": self.text,"begin": self.begin,"end": self.end}def __repr__(self):return f'TextSegment(text="{self.text}", begin={self.begin}, end={self.end})'# 加载模型(可以选择不同大小的模型,越大准确率越高,但速度较慢)
model = whisper.load_model("tiny")  # 可选 "tiny", "base", "small", "medium", "large"# 转写音频文件path = Path("path/A.mp3")
result = model.transcribe(str(path))  # 替换为你的音频文件路径
print(result)
TextSegmentList = []for item in result['segments']:TextSegmentList.append(TextSegment(item["text"], item["start"], item["end"])) print(f"{item['text']}-----{item['start']}----{item['end']}")json_string = json.dumps([segment.to_dict() for segment in TextSegmentList], indent=4)
print(json_string)
with open(path.stem+'.txt', 'w') as file:file.write(json_string) 

模型返回的数据结构如下所示:

image

数据结构有文本,以及对应的结束和开始的时间,有了这些数据无论是生成视频字幕还是音频和文本同步定位都是很方便的

4. 模型选择

Whisper 提供多种大小的模型,分别为 tinybasesmallmedium 和 large。模型越大,识别的准确性越高,但计算资源需求也会增加。可以根据需要选择合适的模型。

5. Whisper 的源码结构

Whisper 的代码结构清晰,主要包含以下核心部分:

  • whisper/model.py:定义模型结构和加载逻辑。
  • whisper/transcribe.py:处理音频文件转录的逻辑。
  • whisper/tokenizer.py:将音频编码成模型可以理解的 token,并将转录后的 token 转换为文本。
  • whisper/audio.py:负责音频文件的读取和预处理。

6. 应用场景

Whisper 适用于多种音频转录场景,如会议记录、字幕生成、采访转录、实时语音识别等。其多语言支持让它可以应对多语言环境的音频内容。

7. 性能优化建议

Whisper 模型对计算资源要求较高,建议在 GPU 环境下运行,并根据需求选择较小的模型(如 tiny 或 base),试过large模型电脑直接卡死。音频质量越高,转录的效果越好,噪声较大的音频会影响识别效果。

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

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

相关文章

微信小程序样式

一、尺寸单位rpx rpx是小程序新增加的自适应单位,可以根据不同设备的屏幕宽度进行自适应缩放。 小程序规定任何型号手机屏幕宽度都是750rpx。 提示:微信小程序的设计稿宽度建议是750px,这样就节省单位换算了。 二、全局样式和局部样式 1、…

Vue Router两种路由实现方式异同点总结

Vue.js 中的路由主要通过 Vue Router 实现,它支持多种路由模式,其中最常用的两种是 hash 模式和 history 模式。这两种模式在 URL 结构、工作原理以及对服务器配置的要求上有所不同。 1.Hash 模式(默认模式) ‌URL 结构‌&#…

Guava Cache

Guava Cache 单应用、本地缓存依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.1-jre</version> </dependency>示例 import com.google.common.cache.*;import java.util.…

ubuntu下连接了192.168.1.x和192.168.2.x两个网络段,如何让这个两个网段互相通信?

在 Ubuntu 上连接两个网络段&#xff08;如 个人终端A 192.168.1.10 和 个人终端B 192.168.2.10&#xff09;&#xff0c;需要配置路由和网络转发功能&#xff0c;使这两个网段能够相互通信。以下是实现方法&#xff1a; 步骤 1&#xff1a;确认网络配置 1. 确保 Ubuntu 机器…

汽车资讯新高度:Spring Boot技术飞跃

6系统测试 6.1概念和意义 测试的定义&#xff1a;程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为&#xff1a; 目的&#xff1a;发现程序的错误&#xff1b; 任务&#xff1a;通过在计算机上执行程序&#xff0c;暴露程序中潜在的错误。 另一个…

Go LCL、Go CEF 与 Go WV:打造跨平台桌面应用的利器

大家好&#xff0c;我是YC&#xff0c;在这里给大家分享Go LCL、Go CEF 与 Go WV&#xff1a;打造跨平台桌面应用的利器 如对此系统感兴许或需要源码&#xff0c;欢迎私信or留言&#xff01; Go LCL&#xff1a;原生控件的跨平台之旅 开源地址: https://github.com/energye/…

03-axios常用的请求方法、axios错误处理

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…

子集选择——基于R语言实现(最优子集选择法、逐步回归法、Lasso回归法、交叉验证法)

( a )使用 rnorm() 函数生成预测变量X(n=100)与噪声向量 ϵ \epsilon ϵ(n=100) set.seed(1) x<-rnorm(100)#预测变量X eps<-rnorm(100)#噪声向量$\epsilon$( b ) 生成响应变量Y(n=100),

机器学习基础04_朴素贝叶斯分类决策树分类

目录 一、朴素贝叶斯分类理论 1、贝叶斯分类理论 2、条件概率 3、全概率公式 4、贝叶斯推断 5、朴素贝叶斯推断 6、拉普拉斯平滑系数 二、决策树分类 1、相关概念 2、基于信息增益决策树的建立 3、基于基尼指数决策树的建立 一、朴素贝叶斯分类理论 1、贝叶斯分类理…

git日志查询和导出

背景 查看git的提交记录并下载 操作 1、找到你idea代码的路径&#xff0c;然后 git bash here打开窗口 2、下载所有的日志记录 git log > commit.log3、下载特定日期范围内记录 git log --since"2024-09-01" --until"2024-11-18" 你的分支 > c…

Qt 和 WPF(Windows Presentation Foundation)

Qt 和 WPF(Windows Presentation Foundation)都是用于构建桌面应用程序图形用户界面的框架,它们在很多方面有相似之处,但也存在一些关键的差异。下面是它们的主要相同点和区别点。 相同点: 用于构建桌面应用程序: Qt 和 WPF 都主要用于构建具有丰富用户界面(GUI)的桌面…

后台管理系统(开箱即用)

很久没有更新博客了&#xff0c;给大家带上一波福利吧,大佬勿扰 现在市面上流行的后台管理模板很多,若依,芋道等,可是这些框架对我们来说可能会有点重,所以我自己从0到1写了一个后台管理模板,你们使用时候可扩展性也会更高 项目主要功能: 成员管理&#xff0c;部门管理&#…

Spring Boot 牛刀小试 org.springframework.boot:spring-boot-maven-plugin:找不到类错误

今天看了下书翻了下Spring Boot的用法&#xff0c;下载idea后&#xff0c; 反复出现org.springframework.boot:spring-boot-maven-plugin:找不到类错误&#xff0c;后来看了下调试窗口&#xff0c;发现是连不上maven的网站443错误&#xff0c;解决思路很简单&#xff0c;把ide连…

数据中心的拥塞控制

前面提到&#xff0c;如今的高速网络方案集中在卸载主机网络能力&#xff0c;降低主机处理时延&#xff0c;甚至 PFC 用网络排队时延换主机时延&#xff0c;本末倒置。而在拥塞控制领域仍是传统的 AIMD 闭环反馈&#xff0c;ECN&#xff0c;QCN 那一套&#xff0c;但拥塞是端到…

【网络云计算】2024第48周-技能大赛-初赛篇

文章目录 1、比赛前提2、比赛题目2.1、 修改CentOS Stream系统的主机名称&#xff0c;写出至少3种方式&#xff0c;并截图带时间戳和姓名&#xff0c;精确到秒&#xff0c;否则零分2.2、 创建一个名为你的名字的拼音的缩写的新用户并设置密码&#xff0c;将用户名添加到 develo…

SAP+Internet主题HTML样式选择

SAP目前只支持三种HTML样式选择&#xff1a; 样式一 背景色&#xff1a;深色&#xff0c;蓝 特点&#xff1a;适中型排列&#xff0c;与SAP界面排列相同&#xff0c;富含UI特征&#xff0c;整齐美观 URL地址&#xff1a;http://cn1000-sap-01.sc.com:8000/sap/bc/gui/sap/it…

鸿蒙动画开发07——粒子动画

1、概 述 粒子动画是在一定范围内随机生成的大量粒子产生运动而组成的动画。 动画元素是一个个粒子&#xff0c;这些粒子可以是圆点、图片。我们可以通过对粒子在颜色、透明度、大小、速度、加速度、自旋角度等维度变化做动画&#xff0c;来营造一种氛围感&#xff0c;比如下…

Java 使用MyBatis-Plus数据操作关键字冲突报错You have an error in your SQL syntax问题

问题 这个报错是出现在Java Spring boot项目中&#xff0c;使用MyBatis-Plus通过创建的实体类对数据库的操作过程中&#xff0c;通过实体创建数据库表是没有问题的&#xff0c;而在接口调用服务类操作数据库的时候&#xff0c;会出现报错。报错详情如下&#xff1a; 服务请求异…

<项目代码>YOLOv8 草莓成熟识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

查看Docker容器的IP地址有几种方法

查看 Docker 容器的 IP 地址有几种方法&#xff0c;这里列出了一些常见的方法&#xff1a; 方法一&#xff1a;使用 docker inspect 命令 docker inspect 命令可以提供容器的详细信息&#xff0c;包括 IP 地址。以下是具体步骤&#xff1a; 获取容器的 ID 或名称。可以通过 d…