当前位置: 首页 > 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的引用类型一般分…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

HTML 列表、表格、表单

1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...

什么是EULA和DPA

文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

HTML前端开发:JavaScript 获取元素方法详解

作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...

基于鸿蒙(HarmonyOS5)的打车小程序

1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...

C++_哈希表

本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...

20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题

20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题 2025/6/9 20:54 缘起,为了跨网段推流,千辛万苦配置好了网络参数。 但是命令iptables -t filter -F tetherctrl_FORWARD可以在调试串口/DEBUG口正确执行。…...

Python爬虫(四):PyQuery 框架

PyQuery 框架详解与对比 BeautifulSoup 第一部分:PyQuery 框架介绍 1. PyQuery 是什么? PyQuery 是一个 Python 的 HTML/XML 解析库,它采用了 jQuery 的语法风格,让开发者能够用类似前端 jQuery 的方式处理文档解析。它的核心特…...