当前位置: 首页 > 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 会稍显不足。

http://www.lryc.cn/news/457016.html

相关文章:

  • 如何在算家云搭建LivePortrait(视频生成)
  • CSS 命名规范及 BEM 在前端开发中的实践
  • SwiftUI 6.0(iOS 18)新增的网格渐变色 MeshGradient 解惑
  • 【计算机网络】详谈TCP协议确认应答机制捎带应答机制超市重传机制连接管理机制流量管理机制滑动窗口拥塞控制延迟应答
  • rk3566开发之rknn npu 部署
  • 项目生产经理需要具备哪些技能和素质
  • Java数据类型常量
  • 如何提高浮点类型计算的精度
  • RabbitMQ简介及安装类
  • 游戏服务器防御策略:防止玩家因DDoS攻击而掉线
  • Django学习笔记二:数据库操作详解
  • Spring Boot 应用开发案例:在线书籍管理系统
  • 阿里140滑块-滑块验证码逆向分析思路学习
  • 使用 Linux 搭建并配置一个 NFS 服务器
  • python发包
  • 农行1面:说说 final,finally,finalize的区别
  • ChatGPT实时语音将于本周向免费用户推出:OpenAI DevDay 2024详细解读
  • 一个月学会Java 第7天 字符串与键盘输入
  • Java后端面试题(day16)
  • Auto-Animate:是一款零配置、即插即用的动画工具,可以为您的 Web 应用添加流畅的过渡效果
  • k8s之ingress-nginx-controller安装
  • 力扣SQL仅数据库(1098~1132)
  • 优惠点餐api接口对接的具体步骤是什么?
  • 【韩顺平Java笔记】第8章:面向对象编程(中级部分)【297-313】
  • 快递批量查询物流追踪只揽收无物流信息的单号
  • 【动态网站资源保存下载】
  • Selenium自动化测试中如何处理数据驱动?
  • 淘宝API接口系列有哪些内容?
  • 华为OD机试 - 冠亚军排名(Java 2024 E卷 100分)
  • VmWare中安装CenterOs(内网服务器)