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

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 json


class TextSegment:
    def __init__(self, text, begin, end):
        self.text = text
        self.begin = begin
        self.end = end
    def 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.kler.cn/a/395419.html

相关文章:

  • 阅读2020-2023年《国外军用无人机装备技术发展综述》笔记_作战无人机和察打无人机图鉴
  • 深度解析:Android APP集成与拉起微信小程序开发全攻略
  • Vulnhub靶场案例渗透[8]- HackableII
  • 38配置管理工具(如Ansible、Puppet、Chef)
  • Unity安装后点击登录没反应
  • llama factory lora 微调 qwen2.5 7B Instruct模型
  • Cloudflare代理后的https连接的建立还是从源客户端到服务器端握手协商的连接吗
  • 【C++】深入理解自定义 list 容器中的 list_iterator:迭代器实现详解
  • 低成本出租屋5G CPE解决方案:ZX7981PG/ZX7981PM WIFI6千兆高速网络
  • Git分支详解
  • vue3 + naive ui card header 和 title 冲突 bug
  • [DB]
  • 学习笔记——PLCT汪辰:开发RISC-V上的操作系统(持续更新)
  • Linux内存管理(七十三):Linux PSI 详解(3)
  • 测试实项中的偶必现难测bug--互斥逻辑异常
  • 云服务器和物理服务器的区别有哪些?
  • 利用分部类扩展字符串函数StringExtensions
  • 保姆级教程!!教你通过【Pycharm远程】连接服务器运行项目代码
  • ubontu为其他用户分配账号并设置ssh登陆方式
  • Docker部署Redis哨兵
  • 深度学习和图像处理
  • 使用 AMD GPU 上的 Whisper 进行语音转文字
  • Docker的基本概念、安装步骤以及一些简单的用法
  • kubernetes部署dashboard
  • Ceph client 写入osd 数据的两种方式librbd 和kernel rbd
  • vxe-vxe-colgroup后端返回数据 对数据进行处理 动态合并分组表头(v-if控制表格渲染(数据请求完成后渲染))