openai的whisper语音识别介绍

news2024/9/24 17:12:09

openAI发布了chatgpt,光环一时无两。但是openAI不止有这一个项目,它的其他项目也非常值得我们去研究学习。

今天说说这个whisper项目
https://github.com/openai/whisper

ta是关于语音识别的。它提出了一种通过大规模的弱监督来实现的语音识别的方法。弱监督是指使用不完全或不准确的标签或注释来训练模型的方法。这种方法可以避免手动标注数据的费时费力,同时也可以利用更多的数据来提高模型的性能。

在这个方法中,使用了大量的未标注语音数据和一些已标注的数据来训练一个深度学习模型。这个模型可以自动学习如何从语音信号中提取特征,并将其转换为文本。

来看看官方的说明:(不管你看不看得懂,反正我是没看懂)
在这里插入图片描述

作者用的Python版本为3.9.9,PyTorch版本为1.10.1,但代码库应该与Python 3.8-3.10和最新的PyTorch版本兼容。(我自己试了3.11无法兼容,所以老老实实的用3.9吧)

用法也很简单,简直是调库男孩的最爱。

第一步:安装Python库

python3 -m pip install openai-whisper

第二步安装FFmpeg

# on Ubuntu or Debian
sudo apt update && sudo apt install ffmpeg

# on Arch Linux
sudo pacman -S ffmpeg

# on MacOS using Homebrew (https://brew.sh/)
brew install ffmpeg

# on Windows using Chocolatey (https://chocolatey.org/)
choco install ffmpeg

# on Windows using Scoop (https://scoop.sh/)
scoop install ffmpeg

个人建议在Windows上用Scoop装FFmpeg,Chocolatey太麻烦

第三步,选择使用的模型。

官方说有5种模型,其中4种是English-only模型,但是实测english-only也可以支持中文(只测了base可以支持中文,其他的没测但应该也可以)
在这里插入图片描述

虽说支持中文,但是也有不理想的地方,中文的识别错误率(WER (Word Error Rate))还不低,在所有支持语言的大概排中游水平。
在这里插入图片描述

第四步,具体使用

有好几种方法:
1、命令行模式

whisper audio.flac audio.mp3 audio.wav --model medium
  • 对于非英文语言,加上–language参数,例如日语
whisper japanese.wav --language Japanese

支持的语言类型还挺多的

LANGUAGES = {
    "en": "english",
    "zh": "chinese",
    "de": "german",
    "es": "spanish",
    "ru": "russian",
    "ko": "korean",
    "fr": "french",
    "ja": "japanese",
    "pt": "portuguese",
    "tr": "turkish",
    "pl": "polish",
    "ca": "catalan",
    "nl": "dutch",
    "ar": "arabic",
    "sv": "swedish",
    "it": "italian",
    "id": "indonesian",
    "hi": "hindi",
    "fi": "finnish",
    "vi": "vietnamese",
    "he": "hebrew",
    "uk": "ukrainian",
    "el": "greek",
    "ms": "malay",
    "cs": "czech",
    "ro": "romanian",
    "da": "danish",
    "hu": "hungarian",
    "ta": "tamil",
    "no": "norwegian",
    "th": "thai",
    "ur": "urdu",
    "hr": "croatian",
    "bg": "bulgarian",
    "lt": "lithuanian",
    "la": "latin",
    "mi": "maori",
    "ml": "malayalam",
    "cy": "welsh",
    "sk": "slovak",
    "te": "telugu",
    "fa": "persian",
    "lv": "latvian",
    "bn": "bengali",
    "sr": "serbian",
    "az": "azerbaijani",
    "sl": "slovenian",
    "kn": "kannada",
    "et": "estonian",
    "mk": "macedonian",
    "br": "breton",
    "eu": "basque",
    "is": "icelandic",
    "hy": "armenian",
    "ne": "nepali",
    "mn": "mongolian",
    "bs": "bosnian",
    "kk": "kazakh",
    "sq": "albanian",
    "sw": "swahili",
    "gl": "galician",
    "mr": "marathi",
    "pa": "punjabi",
    "si": "sinhala",
    "km": "khmer",
    "sn": "shona",
    "yo": "yoruba",
    "so": "somali",
    "af": "afrikaans",
    "oc": "occitan",
    "ka": "georgian",
    "be": "belarusian",
    "tg": "tajik",
    "sd": "sindhi",
    "gu": "gujarati",
    "am": "amharic",
    "yi": "yiddish",
    "lo": "lao",
    "uz": "uzbek",
    "fo": "faroese",
    "ht": "haitian creole",
    "ps": "pashto",
    "tk": "turkmen",
    "nn": "nynorsk",
    "mt": "maltese",
    "sa": "sanskrit",
    "lb": "luxembourgish",
    "my": "myanmar",
    "bo": "tibetan",
    "tl": "tagalog",
    "mg": "malagasy",
    "as": "assamese",
    "tt": "tatar",
    "haw": "hawaiian",
    "ln": "lingala",
    "ha": "hausa",
    "ba": "bashkir",
    "jw": "javanese",
    "su": "sundanese",
}

  • 加上–task translate参数,会把语音内容翻译成英语
whisper japanese.wav --language Japanese --task translate
  • 还有其他问题,可以用help命令
whisper --help

2、Python代码模式

import whisper

model = whisper.load_model("base")
result = model.transcribe("audio.mp3")
print(result["text"])

第一次加载模型时,它会联网去拉取模型(也就是上面介绍的五种模型),不同的模型大小不一。拉取完成以后,再用就不用联网了。

tiny------base------small------medium------large,模型规模从小到大,准确率也越来越高,但是所使用的资源也越来越大。根据自己需要选择,一般用small就不错了。

以上,正文结束。

下面说一下我认为的使用场景和槽点

使用场景:

1、提取视频里的音频,转成文字做记录;
2、提取录音笔里的音频,快速查看内容(音频有时候太长了,不如文字阅读速度快)
3、自己做视频或者音频时,想生成字幕也可以用。

优点:

免费、断网可用(环境搭好的情况下),安全无忧,不担心泄露

槽点:

没有实时语音支持、不支持语音合成。

我其实想做成用本地实时语音转文字,转成文字后,发给ChatGPT,然后ChatGPT返回结果后再合成语音播放出来。但是ta目前做不到实时和语音合成。

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

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

相关文章

C++之深入解析STL unordered_map的底层实现原理

C STL 标准库中,不仅是 unordered_map 容器,所有无序容器的底层实现都采用的是哈希表存储结构。更准确地说,是用“链地址法”(又称“开链法”)解决数据存储位置发生冲突的哈希表,整个存储结构如下所示&…

JVM 垃圾收集器详解

一、垃圾收集器 如果说收集算法是内存回收的方法论,那垃圾收集器就是内存回收的实践者。《Java虚拟机规范》中对垃圾收集器应该如何实现并没有做出任何规定,因此不同的厂商、不同版本的虚拟机所包含的垃圾收集器都可能会有很大差别,不同的虚…

基于遗传算法的中药药对挖掘系统的设计与实现

用数据挖掘技术研究了中药方剂配伍的规律。主要工作:分析了关联规则存在的问题,引入双向关联规则的概念;介绍了遗传算法的基本原理,研究了遗传算法在数据挖掘中的应用;将方剂库转换为位图矩阵,大大提高搜索…

Mac重启清理缓存会怎么样 mac清理缓存怎么清理

众所周知,Mac电脑有着流畅的操作系统,因此,很多用户都会选择使用Mac电脑办公。随着日常使用,系统缓存数据越来越大,某些Mac电脑(尤其是小内存版本的Mac电脑)可能会出现“系统”占存储空间比例较…

初始单片机.md

1.如何将HEX文件烧录到单片机 STC-ISP STC-ISP是一款单片机下载编程烧录软件,是针对STC系列单片机而设计的,可下载STC89系列、12C2052系列和12C5410等系列的STC单片机,使用简便。 思路:将电脑磁盘上已存在的文件通过串口的方式下…

python中第三方库xlrd和xlwt的使用教程

excel文档名称为联系人.xls,内容如下: 一、xlrd模块用法 1.打开excel文件并获取所有sheet import xlrd# 打开Excel文件读取数据 data xlrd.open_workbook(联系人.xls)sheet_name data.sheet_names() # 获取所有sheet名称 print(sheet_name) # [银…

python依次运行多个代码遇到的同步与异步问题

1、要实现在一个Python代码运行完后紧接着运行另一个Python代码,可以使用Python的subprocess模块。该模块可以创建新进程并与之交互,可以用于在Python代码中启动新的程序或脚本。 下面是一个示例代码,用于在运行完code1.py后紧接着运行code2…

论文配色方案(收藏)

方案一:复古 系列色——十六进制颜色码: 0780cf - 765005 - fa6d1d - 0e2c82 - b6b51f - da1f18 - 701866 - f47a75 - 009db2 - 024b51 - 0780cf - 765005 系列色——RGB颜色值: (7,128,207)-(118,80,5&…

【记录】优化油猴插件【BD网盘播放器】

收获最重要前言优化代码收获1.禁止浏览器弹窗2.定时器3.设置属性-隐藏元素4.鼠标悬停和移开事件5.添加元素6.div里均匀分布7.获取元素属性值8.监听播放器状态9.jQuery 选择器前言 有钱的可以支持一下原作者,没钱就要多学习 优化 1.1 视频刚开始未播放时&#xff…

酷雷曼一站式图片直播,助力品牌高效传播

传统模式下,摄影师拍摄会议、活动现场的照片后,一般需要7-10天时间才能完成成片交付,而实际上,由于新闻宣传的即时性,照片延迟交付,远远不能满足客户的需求。因此,即时图片直播技术应运而生&…

Jenkins自动化部署实例讲解

文章目录 前言实例讲解基本环境全局工具配置创建任务任务配置源码管理构建步骤(Build Steps)第一步:调用Maven第二步:执行shell启动容器 后记 前言 你平常在做自己的项目时,是否有过部署项目太麻烦的想法?…

哈希应用——位图(bitset)

目录 见见猪跑(初步了解位图) 位图的模拟实现 位图的应用 1、给定100亿个整数,设计算法找到只出现一次的整数 2、给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集? 3、位图应用变形&#xff…

第六章 Gated RNN

目录6.1 RNN的问题6.1.1 RNN的复习6.1.2 梯度消失和梯度爆炸6.1.3 梯度消失和梯度爆炸的原因6.1.4 梯度爆炸的对策6.2 梯度消失和LSTM6.2.1 LSTM的接口6.2.2 LSTM层的结构6.2.3 输出门6.2.4 遗忘门6.2.5 新的记忆单元6.2.6 输入门6.2.7 LSTM的梯度的流动6.3 LSTM的实现6.4 使用…

CIO成就计划第二季第一期 | 活动回顾:基于数字技术重塑流程,驱动业务增长

2023年3月25日,《科创人》联手金蝶共同打造的【CIO成就计划第二季】首期培训在北京金蝶软件园圆满举行。 【CIO成就计划】第二季,坚持服务于企业CIO、数字化变革负责人的价值定位,通过三期线下闭门培训会社群交流,帮助CIO建立应对…

JUC高级十-AbstractQueuedSynchronizer之AQS

1. 前置知识 公平锁和非公平锁可重入锁自旋锁LockSupport数据结构之双向链表设计模式之模板设计模式 AQS重要性 JAVA ------>JVM AQS ------>AQS 2. AQS入门级别理论知识 2.1 是什么? 2.1.1 字面意思 Abstract Queued Synchronizer----抽象的队列同步器 源码位置: …

【Java 并发编程】一文读懂线程、协程、守护线程

一文读懂线程、协程、守护线程1. 线程的调度1.1 协同式线程调度1.2 抢占式线程调度1.3 设置线程的优先级2. 线程的实现模型和协程2.1 内核线程实现2.2 用户线程实现2.3 混合实现2.4 Java 线程的实现2.5 协程2.5.1 出现的原因2.5.2 什么是协程2.5.3 Java19 虚拟线程 - 协程的复苏…

Cat原理简析

Cat原理简析 链路追踪系统设计思路如何高效组织业务日志如何动态串联业务日志通用解决方案链路定义链路染色链路上报链路存储 Cat原理客户端原理API设计序列化和通信客户端埋点核心类分析流程分析启动流程:消息生产Context 线程本地变量Transaction事务的开启其他类型消息组合关…

网页设计方向有哪些SCI期刊推荐? - 易智编译EaseEditing

网页设计和开发方向主要涉及人机交互、用户体验、可访问性等方面,以下是几个相关的SCI期刊推荐: ACM Transactions on Computer-Human Interaction (ACM TOCHI): 该期刊由ACM(Association for Computing Machinery)出…

一次etcd变更引发的惨案

问题描述 在做etcd的数据变更时候,etcd在组成集群的时候出现leader不断切换问题,导致集群不稳定,都面将不健康的etcd节点踢出,只剩etcd单节点,后面将踢出的etcd节点重新加入现有etcd,导致etcd集群奔溃&…

【java踩坑搞起】MybatisPlus封装的mapper不支持 join,那咋办

众所周知,Mybatis Plus 封装的 mapper 不支持 join,如果需要支持就必须自己去实现。但是对于大部分的业务场景来说,都需要多表 join,要不然就没必要采用关系型数据库了。 直到前几天,偶然碰到了这么一款叫做mybatis-p…