OpenAI模型whisper 音频转文本

news/2024/11/14 18:45:46/文章来源:https://www.cnblogs.com/dx5800/p/18541448

最近有一个音频转文本的需求,了解到了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 提供多种大小的模型,分别为 tinybasesmallmediumlarge。模型越大,识别的准确性越高,但计算资源需求也会增加。可以根据需要选择合适的模型。

5. Whisper 的源码结构

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

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

6. 应用场景

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

7. 性能优化建议

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

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

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

相关文章

想定制RK3562主板Android系统的开机动画和桌面壁纸吗?看这篇文章就够了

本文介绍瑞芯微RK3562开发板在安卓Android13系统替换开机动画和桌面壁纸的方法,使用触觉智能EVB3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1T算力 NPU,可用于轻量级人工智能应用。 开机动画替换 将做好的开机动画文件bootanimation.zip包拷贝至 vendor/roc…

mysql可视化工具 Navicat Premium 12解压版

通过网盘分享的文件:Navicat Premium 12解压版.rar链接: https://pan.baidu.com/s/1kDLlrcaiQRYGLfN5L-IpPA?pwd=3k6h 提取码: 3k6h --来自百度网盘超级会员v8的分享1.解压到指定路径 2.快捷方式,快捷方式用不了,就直接在该文件中直接打开 3. 测试链接

第八课 Python自动化之selenium

python+selenium selenium是一个第三方库,python有很多库; 1、什么是ui自动化? 通过模拟手工操作用户ui页面的方式,用代码去实现自动化操作和验证的行为。 2、ui自动化的优点? (1)解决重复性的功能测试和验证 (2)减少测试人员在回归测试时用例漏测和验证点的漏测 (3)…

png图片隐写实例之隐藏二维码

图片隐写,借助的是图片的每个像素点的RGB值,比如取RGB中的B值,这个值的二级制的最低位是0还是1,在肉眼上看看不出丝毫区别,我们就可以利用这个数据位,我们知道二维码一般都是两种颜色,黑色和白色,黑色的像素点用1表示,白色用0表示,我们就把二维码的每个像素点转换成1…

Windows环境安装Scrapy

虽然可以使用 pip 在 Windows 上安装 Scrapy,但还是建议用 Anaconda 安装教程 1.创建虚拟环境(可选但推荐) 打开 Anaconda Prompt,执行以下命令: conda create -n scrapy_env python=3.12(这里假设使用 Python 3.12,你可以根据需要选择其他版本)。 2.激活虚拟环境: co…

openssh 漏洞修复 openssl升级 OpenSSH_9.8p1麒麟系统

第一步:准备好要升级的包 下图所示 使用命令:yum install *.rpm或 rpm -ivh *rpm 如果使用 yum install *.rpm 安装不了,在使用 rpm -ivh *rpm 提示已有旧的版本 可以使用 rpm -Uvh *.rpm 可以替换安装,根据不通的系统 有可能安装后会重启不成功, 所以需要使用:sudo sy…

5.7 与 8.0 对相同文件的 LOAD DATA 语句结果不同

5.7 与 8.0 对相同文件的 LOAD DATA 语句结果不同 问题描述 某客户现场支持,由MySQL 5.7.21升级MySQL 8.0.25后,通过LOAD DATA导入文件,当同一会话连续导入不同的编码(UTF8/GB18030)文件时会出现乱码。数据库版本未升级之前,相同的导入操作在MySQL 5.7.21未出现乱码。 问…

用命令行启动 docker 报错:Redirecting to /bin/systemctl start docker.service 解决方法

docker安装成功后,用 sudo service docker start 启动docker报这个错误,看提示应该是需要用systemctl的命令。 使用systemctl start docker命令启动成功了,做下记录。 以下是启动doker常用的几个命令: # 启动 docker:systemctl start docker # 停止 docker:systemctl sto…

CCF - 网易雷火基金项目成果:基于大小模型协同的低资源标注技术|CNCC 2024 演讲实录

在科技蓬勃发展的时代浪潮中,人工智能领域的每一次突破都离不开持续的科研投入和对前沿技术的不懈探索。2023 年,网易伏羲与中国计算机学会(CCF)共同发起了 “CCF - 网易雷火联合基金”,致力于发挥和利用多方资源优势,加强与海内外青年学者的科研合作,促进中国人工智能等…

VisualVM 使用说明

VisualVM 简介:一个轻量级的Java进程监控软件 VisualVM 安装介绍(Mac 使用 brew 安装) ➜ ~ brew uninstall visualvm==> Uninstalling Cask visualvm ==> Backing App VisualVM.app up to /opt/homebrew/Caskroom/visualvm/2.1.10/VisualVM.app ==> Removing App /…

Java方法(四)

设计方法原则:本意为功能块,是实现某个功能语句块的结合,设计方法时保持原子性(一个方法完成一个功能)public class operator {public static void main(String[] args) {int sum = add(1,3);System.out.println(sum);}//加法public static int add(int a,int b){return a…