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

Python+whisper/vosk实现语音识别

目录

一、Whisper

1、Whisper介绍

2、安装Whisper

3、使用Whisper-base模型

4、使用Whisper-large-v3-turbo模型

二、vosk

1、Vosk介绍

2、vosk安装

3、使用vosk

三、总结


一、Whisper

1、Whisper介绍

Whisper 是一个由 OpenAI 开发的人工智能语音识别模型,它能够将语音转换为文本。Whisper 模型特别之处在于它的设计目标是能够理解和转录多种语言的语音,包括但不限于英语。Whisper 模型在训练时使用了大量不同语言的语音数据,这使得它具有很好的跨语言能力。

2、安装Whisper

pip install openai-whisper# 安装ffmpeg
sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
sudo yum install ffmpeg

3、使用Whisper-base模型

whisper.load_model方法会自动下载相应的模型,可选:['tiny.en', 'tiny', 'base.en', 'base', 'small.en', 'small', 'medium.en', 'medium', 'large-v1', 'large-v2', 'large-v3', 'large', 'large-v3-turbo', 'turbo']。

下面使用的测试音频放在了百度云,可自行下载:

百度云链接:https://pan.baidu.com/s/16eGkDCOA02YbFY5V4ObZ1w?pwd=smr7 

import whispermodel = whisper.load_model("base")
result = model.transcribe("test.wav")
print(result['text'])

识别结果如下:

特大暴雨再次清洗滑南地區廣東清州與近日凌晨遭遇極端降雨短段數小時內每小時降雨量門增至40-50毫米以上至上50時清州12小時雷技雨量已經超過227毫米突破了最大暴雨標準同時刷新了當地5月份單日降雨記錄根據我國企項標準24小時降雨量超過50毫米定義為暴雨超100毫米為特大暴雨而超過255毫米則為特大特大暴雨

可通过opencc库将繁体字转换为简体字:

pip install opencc-python-reimplemented
import whisper
from opencc import OpenCC# 初始化转换器,从繁体中文转换到简体中文
converter = OpenCC('t2s')
model = whisper.load_model("base")
result = model.transcribe("test.wav")
print(converter.convert(result['text']))

识别结果如下:

特大暴雨再次清洗滑南地区广东清州与近日凌晨遭遇极端降雨短段数小时内每小时降雨量门增至40-50毫米以上至上50时清州12小时雷技雨量已经超过227毫米突破了最大暴雨标准同时刷新了当地5月份单日降雨记录根据我国企项标准24小时降雨量超过50毫米定义为暴雨超100毫米为特大暴雨而超过255毫米则为特大特大暴雨

4、使用Whisper-large-v3-turbo模型

import whispermodel = whisper.load_model("large-v3-turbo")
result = model.transcribe("test.wav")
print(result['text'])

识别结果如下:

特大暴雨再次侵袭华南地区广东,青州于近日凌晨遭遇极端降雨,短短数小时内每小时降雨量猛增至40-50毫米以上。至上午时时,青州12小时累计雨量已经超过227毫米,突破了最大暴雨标准,同时刷新了当地5月份单日降雨记录。根据我国气象标准,24小时降雨量超过50毫米定义为暴雨,超100毫米为特大暴雨,而超过250毫米则为特大特大暴雨。

可以看到,large-v3-turbo模型比base模型的识别准确性更高,并且识别结果为简体中文,不用额外进行繁转简,更加友好的是,识别结果有标点符号,可读性更强。

英文语音识别:

import whispermodel = whisper.load_model("large-v3-turbo")
result = model.transcribe("test_en.mp3")
print(result['text'])

识别结果如下:

In recent years, environmental conservation has become a topic of paramount importance. The rapid industrialization and urbanization have led to numerous environmental challenges, making it crucial for individuals, communities, and governments to take action. This article highlights the significance of environmental conservation and the measures that can be implemented to ensure a sustainable future. The environment provides essential resources for human survival, such as clean air, water, and fertile soil. Unfortunately, human activities have led to the depletion of these resources, causing adverse effects on both the ecosystem and human health. For instance, air pollution from factories and vehicles has resulted in respiratory problems, while water pollution has compromised access to clean drinking water.

二、vosk

1、Vosk介绍

Vosk 是一个开源的语音识别库,它可以在离线环境下工作,不依赖于任何外部服务。 Vosk 基于Kaldi语音识别框架,支持多种语言,包括中文。 Vosk提供了多种预训练模型,可以根据需求选择适合的模型进行语音识别。Vosk的优势在于可以在没有网络连接的情况下进行语音识别,并且支持多种操作系统和编程语言,用户可以根据自己的需求训练和优化模型。

2、vosk安装

模型有small size,也有较大的通用模型,可自行下载需要的语言模型:

https://alphacephei.com/vosk/models

以下下载的是大型通用中文模型vosk-model-cn-0.22.zip。

pip install vosk# 下载模型并解压
wget https://alphacephei.com/vosk/models/vosk-model-cn-0.22.zip
unzip vosk-model-cn-0.22.zip

3、使用vosk

import json
import wave
from vosk import Model, KaldiRecognizerdef recognize_wave(model, file_path):# 打开WAV音频文件with wave.open(file_path, 'rb') as wf:rate = wf.getframerate()  # 采样率frames = wf.readframes(wf.getnframes())  # 读取所有帧rec = KaldiRecognizer(model, rate)rec.SetWords(True)str_ret = ""# 识别音频数据if rec.AcceptWaveform(frames):result = json.loads(rec.Result())if 'text' in result:str_ret += result['text']result = json.loads(rec.FinalResult())if 'text' in result:str_ret += result['text']str_ret = "".join(str_ret.split())return str_retif __name__ == "__main__":model = Model("vosk-model-cn-0.22")file_path = 'test.wav'  # 请确保文件名和路径正确res = recognize_wave(model, file_path)print(res)

识别结果如下:

特大暴雨再次侵袭华南地区广东青州于近日凌晨遭遇极端降雨短短数小时内每小时降水量猛增至四十到五十毫米以上是上午十时青州十二小时累计雨量已经超过二八二七毫米突破了最大暴雨标准同时刷新了当地五月份单日降雨纪录根据我国气象标准二十四小时长相雨量超过五十毫米定义为暴雨超一百毫米为特大暴雨而超过二百五十毫米则为特大特大暴雨

三、总结

Whisper由OpenAI开发,其训练数据的多样性使得它在处理各种口音、背景噪音和专业术语方面具有较好的鲁棒性。large-v3-turbo是Whisper模型的一个改进版本,在保持较高准确性的同时,速度有了很大的提升,这使得它在实时性要求较高的场景下非常有优势。如果需要快速准确地处理语音,并且有足够的计算资源支持大型模型,那么 large-v3-turbo 是很好的选择。

Vosk是一个轻量级的语音识别工具包,基于Kaldi集成,在处理一些复杂语言场景或特殊口音时,可能相对 Whisper 会稍显不足。

相关文章:

Python+whisper/vosk实现语音识别

目录 一、Whisper 1、Whisper介绍 2、安装Whisper 3、使用Whisper-base模型 4、使用Whisper-large-v3-turbo模型 二、vosk 1、Vosk介绍 2、vosk安装 3、使用vosk 三、总结 一、Whisper 1、Whisper介绍 Whisper 是一个由 OpenAI 开发的人工智能语音识别模型&#xf…...

如何在算家云搭建LivePortrait(视频生成)

一、LivePortrait简介 LivePortrait 是一个可控人像视频生成框架,能够准确、实时地将驱动视频的表情、姿态迁移到静态或动态人像视频上,生成极具表现力的视频结果。 该项目的模型产生了定性肖像动画。只要输入一张静态的肖像图像,我们的模型…...

CSS 命名规范及 BEM 在前端开发中的实践

一:CSS命名规范的重要性 1、提高代码可读性 对于开发者自身来说,遵循规范的命名可以让你在日后回顾代码时,快速理解每个样式类的用途。例如,使用 “.header-logo” 这样的命名,一眼就能看出是头部的 logo 元素的样式,而不是一些无意义的命名如 “.box1”。当团队协作开发…...

SwiftUI 6.0(iOS 18)新增的网格渐变色 MeshGradient 解惑

概述 在 SwiftUI 中,我们可以借助渐变色(Gradient)来实现更加灵动多彩的着色效果。从 SwiftUI 6.0 开始,苹果增加了全新的网格渐变色让我们对其有了更自由的定制度。 因为 gif 格式图片自身的显示能力有限,所以上面的…...

【计算机网络】详谈TCP协议确认应答机制捎带应答机制超市重传机制连接管理机制流量管理机制滑动窗口拥塞控制延迟应答

一、TCP 协议段格式 1.1、4位首部长度 4位首部长度的基本单位是4字节,也就是说如果4位首部长度填6,那报头长度就是24字节。报头长度的取值范围为[0,60]字节,也就是说选项的最大长度为40字节。 二、确认应答机制 发送数据和发送应答&#x…...

rk3566开发之rknn npu 部署

目录 NPU使用 RKNN 模型 非 RKNN 模型 RKNN-Toolkit2工具 RKNN NPU 测试代码如下 main.cc ssd.cc 调用 ssd模型进行目标检测测试 ssd.h qt 中调用 rknn npu 接口 NPU使用 RK3566 内置 NPU 模块。使用该NPU需要下载RKNN SDK,RKNN SDK 为带有 NPU 的 RK3566/RK3568 芯片…...

项目生产经理需要具备哪些技能和素质

一、专业技能 1、技术知识 熟悉项目所涉及的工程领域专业知识,包括施工工艺、技术规范、质量标准等。能够准确理解设计图纸,指导施工人员进行正确的施工操作。掌握工程测量、材料检验、工程试验等基本技能,确保工程质量符合要求。 利用进度猫…...

Java数据类型常量

目录 一、数据类型 1.1分类 1.2关键字&内存占用&范围 1.3包装类 1.4说明 1.5类型转换 1.6类型提升 二、常量 2.1java中的常量 2.2定义常量 2.3分类 一、数据类型 1.1分类 1.2关键字&内存占用&范围 数据类型关键字内存占用范围字节型byte1字节-128…...

如何提高浮点类型计算的精度

把下面这篇文章的表达方式改成像正常的人类作者写的,而不是AI写的。 —————— 如何提高浮点类型计算的精度 在后端开发中,浮点数的计算一直一个常见难题,特别是在需要与GPU协作进行复杂计算时,浮点精度的偏差可能带来预期之…...

RabbitMQ简介及安装类

RabbitMQ概述-MQ介绍 RabbitMQ是一个开源的消息代理和队列服务器,它支持多种消息协议,并且可以轻松地与多种编程语言和框架集成。RabbitMQ是使用Erlang语言编写的,因此它具有高并发和高可用性的特点。以下是RabbitMQ的一些关键特性和概念 消息…...

游戏服务器防御策略:防止玩家因DDoS攻击而掉线

在网络游戏环境中,玩家体验至关重要。然而,DDoS(分布式拒绝服务)攻击是导致玩家在游戏中频繁掉线的一个重要原因。本文将探讨如何通过一系列技术和策略来减轻DDoS攻击的影响,保障玩家的游戏体验。 一、引言 DDoS攻击是…...

Django学习笔记二:数据库操作详解

Django框架提供了一个功能强大的ORM(对象关系映射)系统,使得开发者可以使用Python代码来操作数据库,而无需编写复杂的SQL语句。以下是Django数据库操作的一些基本概念和方法: 模型定义 在Django中,模型是…...

Spring Boot 应用开发案例:在线书籍管理系统

Spring Boot 应用开发案例,涵盖从项目搭建到具体实现,包括常用的数据库操作、Restful API 开发、Spring Security 安全认证以及前后端分离架构。这个案例将以开发一个简单的“在线书籍管理系统”为例,介绍如何从头开始搭建项目、实现增删改查功能,并通过 JWT 进行用户认证。…...

阿里140滑块-滑块验证码逆向分析思路学习

一、声明! 原创文章,请勿转载! 本文内容仅限于安全研究,不公开具体源码。维护网络安全,人人有责。 文章中所有内容仅供学习交流使用,不用于其他任何目的,均已做脱敏处…...

使用 Linux 搭建并配置一个 NFS 服务器

目录 1. 安装相关软件包2. 启动并启用相关服务3. NFS 配置文件3.1 /etc/exports 文件3.2 共享目录3.3 客户端列表3.4 参数选项3.4.1 访问权限选项3.4.2 数据写入硬盘模式3.4.3 root 用户权限3.4.4 子树检查3.4.5 匿名用户3.4.6 安全性(特权端口)3.4.7 网络传输3.4.x 更多 (More…...

python发包

Python 中我们经常会用到第三方的包,默认情况下,用到的第三方工具包基本都是从 Pypi.org 里面下载。这些第三方的包都是开发者们发布的自己的库。我们有自己的想法,或者有一些常用的方法想要分享出去,就可以发布自己的库&#xff…...

农行1面:说说 final,finally,finalize的区别

你好,我是猿java。 在 Java中,“final”、“finally”和“finalize”是三个不同的关键字或方法,尽管它们的名字相似,但在功能和用途上却有显著的区别,这篇文章我们继续分析一篇农行1面的题目:说说 final&a…...

ChatGPT实时语音将于本周向免费用户推出:OpenAI DevDay 2024详细解读

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工…...

一个月学会Java 第7天 字符串与键盘输入

Day7 字符串与键盘输入 字符串作为所有程序都很重要的东西,这个东西必须好好的学习,在Java中String会比较好学习,比起C和C里面会更加的简单, 在Java之中也是很好理解的,因为底层已经封装好了char数组,也就是…...

Java后端面试题(day16)

目录 java常见的引用类型java中深拷贝和浅拷贝如何设计一个秒杀系统?谈一下对高并发的理解,平时怎么处理高并发问题?Comparable和Comparator区别?解决hash冲突有哪些方法?Synchronized锁的升级过程 java常见的引用类型 java的引用类型一般分…...

Auto-Animate:是一款零配置、即插即用的动画工具,可以为您的 Web 应用添加流畅的过渡效果

嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 用户体验成为了检验产品成功与否的关键因素。而动画效果,作为提升用户体验的重要手段,在网页和应用开发中扮演着举足轻重的角色…...

k8s之ingress-nginx-controller安装

作者:程序那点事儿 日期:2024/01/30 01:25 要在master节点上安装 helm repo add ingress-nginx Welcome - Ingress-Nginx Controller helm search repo ingress-nginx helm pull ingress-nginx/ingress-nginx --version 4.4.2 mv ingress-nginx-4.4.…...

力扣SQL仅数据库(1098~1132)

1098 小众书籍 需求 编写解决方案,筛选出过去一年中订单总量 少于 10 本 的 书籍,并且 不考虑 上架距今销售 不满一个月 的书籍 。假设今天是 2019-06-23 。 返回结果表 无顺序要求 。 数据准备 Create table If Not Exists Books (book_id int, nam…...

优惠点餐api接口对接的具体步骤是什么?

优惠点餐API接口对接的具体步骤通常包括以下几个阶段: 需求分析:明确对接的目标和需求,例如实现在线点餐、订单管理、支付集成等 。选择API服务提供商:根据业务需求选择合适的点餐API服务提供商 。注册和获取API密钥:…...

【韩顺平Java笔记】第8章:面向对象编程(中级部分)【297-313】

文章目录 297. super基本语法297.1 基本介绍297.2 基本语法 298. super使用细节1299. super使用细节2300. super使用细节3301. 方法重写介绍302. 方法重写细节303. 重写课堂练习1304. 重写课堂练习2输出结果: 姓名:田所浩二 年龄:24305. 养宠物引出多态3…...

快递批量查询物流追踪只揽收无物流信息的单号

在电子商务和物流领域,快递单号的追踪是确保货物顺利送达的关键环节。然而,在实际操作中,经常会遇到一些只显示揽收信息而没有后续物流更新的单号,这给商家和买家都带来了不小的困扰。本文将介绍如何通过快递批量查询物流的方法&a…...

【动态网站资源保存下载】

文章目录 概要解决思路技术细节小结 概要 我们在网上浏览网站时,经常有这样的需求:将浏览的网页保存下来,即使无网的情况下也可以继续浏览。比如一些教育类网站的PPT,内容为HTML格式的,无法作为PPT格式下载下来&#…...

Selenium自动化测试中如何处理数据驱动?

在自动化测试中,数据驱动(Data-Driven Testing)是指通过外部数据源(如Excel、CSV、数据库等)来控制测试用例的执行,而不是直接在代码中硬编码数据。这种方式可以提高测试的灵活性和可维护性,使得…...

淘宝API接口系列有哪些内容?

淘宝API(Application Programming Interface)接口系列是一套允许开发者与淘宝平台进行数据交互的接口集合,涵盖了商品信息、订单信息、物流信息、用户信息以及营销等多个方面的数据接口。以下是对淘宝API接口系列内容的详细归纳: …...

华为OD机试 - 冠亚军排名(Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(E卷D卷A卷B卷C卷)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加…...