使用SpeechRecognition和vosk处理ASR

SpeechRecognition可以支持多种模型语音转文字,感觉vosk还不错,使用起来也简单一些;百度也有PaddleSpeech,但是安装起来太麻烦,不是这个库版本不对就是那个库有问题,用起来不方便;

安装SpeechRecognition库:

pip install SpeechRecognition

安装vosk库:

pip install vosk

使用vosk库还需要下载对应的模型,去官网VOSK Models下载:

中文的有3个模型,模型小的运行快,准确度没有大的好,选一个下载完zip解压就行,代码里配置目录和模型,为了方便直接解压到项目目录里了:

另外需要wav语音测试文件,可以自己录音或者去在线免费文字转语音 - TTSMaker官网 | 马克配音 制造点wav语音文件;

demo:

#!/usr/bin/env python3
# coding = utf-8
"""
# Project: workspace_py
# File: test_speech_recognition_vosk.py
# Author: FlyLikeButterfly
# Time: 2024/4/15 11:05
"""
import speech_recognition as sr
from vosk import Modelr = sr.Recognizer()
r.vosk_model = Model(model_path='vosk_models/vosk-model-small-cn-0.22', model_name='vosk-model-small-cn-0.22')
# r.vosk_model = Model(model_path='vosk_models/vosk-model-cn-0.22', model_name='vosk-model-cn-0.22')
# r.vosk_model = Model(model_path='vosk_models/vosk-model-cn-kaldi-multicn-0.15', model_name='vosk-model-cn-kaldi-multicn-0.15')
with sr.AudioFile('test_24000_16.wav') as source:audio = r.record(source)
result = r.recognize_vosk(audio, language='zh-cn')
print(result)

运行结果:

返回结果是一个string字符串,可以用json转一下:

 结果:

注意支持的文件只有3种格式:WAV/AIFF/FLAC,使用其他格式的会报错:

另外SpeechRecognition也可以直接使用麦克风的录音:

with sr.Microphone() as mic:audio = r.listen(mic, timeout=3, phrase_time_limit=3)
result = r.recognize_vosk(audio, language='zh-cn')
print(result)

但是这个还需要安装pyaudio模块;

这个SpeechRecognition似乎没有直接提供读取bytes音频数据的接口,不过r.record方法和r.listen方法的返回值都是AudioData类,我们可以直接实例化AudioData给recognize_vosk()方法用,这个类的构造方法解释如下:

第一个参数,可以使用音频的bytes数据,wav和pcm都可以;

第二个参数,是音频的采样率Hz,8000Hz、16000Hz等等;

第三个参数,是采样位宽,单位是字节,16位采样是2个字节,8位采样是1字节,支持1-4;

测试代码块:

with open('test_24000_16.wav', 'rb') as wav_file:wav_data = wav_file.read()
wav_source = sr.AudioData(wav_data, 24000, 2)
wav_result = r.recognize_vosk(wav_source, language='zh-cn')
print(wav_result)with open('test_8000_16.pcm', 'rb') as pcm_file:pcm_data = pcm_file.read()
pcm_source = sr.AudioData(pcm_data, 8000, 2)
pcm_result = r.recognize_vosk(pcm_source, language='zh-cn')
print(pcm_result)

运行结果:

只是这个库好像没有标点恢复功能,百度的那个有标点恢复;

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

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

相关文章

【Git教程】(十)版本库之间的依赖 —— 项目与子模块之间的依赖、与子树之间的依赖 ~

Git教程 版本库之间的依赖 1️⃣ 与子模块之间的依赖2️⃣ 与子树之间的依赖🌾 总结 在 Git 中,版本库是发行单位,代表的是一个版本,而分支或标签则只能被创建在版本库这个整体中。如果一个项目中包含了若干个子项目,…

12.文件浏览器

子程序参数的使用 1.可空的用法;表示这个参数不写也行。 2.如何使用递归 3.需要注意的事 递归的子程序必须有个退出的条件 注意区分递归和循环,不要混用 流程: 1.插入按钮,输入输出调试文本(“按钮被单击”&…

2024年主流的java混淆工具有哪些

2024年,主流的Java混淆工具可能会包括: ProGuard:ProGuard 是一个免费的开源 Java 混淆工具,可用于压缩、优化和混淆 Java 字节码。它是Android开发者的首选混淆工具之一,并且在Java应用程序中也得到了广泛应用。 Dex…

Windows本地部署Ollama+qwen本地大语言模型Web交互界面并实现公网访问

文章目录 前言1. 运行Ollama2. 安装Open WebUI2.1 在Windows系统安装Docker2.2 使用Docker部署Open WebUI 3. 安装内网穿透工具4. 创建固定公网地址 前言 本文主要介绍如何在Windows系统快速部署Ollama开源大语言模型运行工具,并安装Open WebUI结合cpolar内网穿透软…

OpenCV4.9图像金字塔

目标 在本教程中,您将学习如何: 使用 OpenCV 函数 pyrUp()和 pyrDown()对给定图像进行下采样或上采样。 理论 注意 下面的解释属于 Bradski 和 Kaehler 的 Learning OpenCV 一书。 通常,我们需要将图像转换为与原始图像不同的大小。为此…

Linux 1.文件编程(dup、dup2)

重定向 重定向是什么?dupdup2 重定向是什么? 进程在最开始运行的时候,首先打开了三个文件,分别是标准输入流、标准输出流、标准错误输出流。证明的时候我是把标准输出留给关闭了,然后紧接着创建的文件就会占用已关闭的…

JavaScript-2.对话框、函数、数组、Date、DOM

对话框 window对象封装了三个对话框用于与用户交互 提示框:alert(title);确认框:confirm(title);输入框:prompt(title); 确认框 包含两个按钮“确认”/“取消”,点击确定时,返回值为true // 确认框 var bool con…

Linux系统编程---文件系统

一、文件存储 一个文件主要由两部分组成,dentry(目录项)和inode inode本质是结构体,存储文件的属性信息,如:权限、类型、大小、时间、用户、盘块位置… 也叫做文件属性管理结构,大多数的inode都存储在磁盘上。 少量…

XWX-SX三箱社交箱

简单介绍: 动物行为学是一门研究动物行为的科学,它包括观察动物在自然环境中的行为,以及在控制环境中的实验行为。三箱社交实验是其中一种常见的实验方法,用于评估动物的社交行为和决策制定能力。这种实验在许多领域都有应用&…

bugku-web-需要管理员

页面源码 <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <title>404 Not Found</title> </head> <body> <div idmain><i> <h2>Something error:</h2…

QT、ffmpeg视频监控分屏

1、支持分屏&#xff08;4&#xff0c;6&#xff0c;8&#xff0c;9&#xff0c;13&#xff0c;16&#xff0c;25&#xff0c;32&#xff0c;64&#xff09;切换 2、支持拖拽效果 3、支持播放mp4&#xff0c;rtmp等 4、本人亲测支持播放32路&#xff0c;64路没做测试 5、支持读…

【C++成长记】C++入门 | 类和对象(中) |类的6个默认成员函数、构造函数、析构函数

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;C❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、类的6个默认成员函数 二、构造函数 1、概念 2、特性 三、析构函数 1、概念 2、特性 一、…

R语言计算:t分布及t检验

t分布理论基础 t分布也称Student’s t-distribution&#xff0c;主要出现在小样本统计推断中&#xff0c;特别是当样本量较小且总体标准差未知时&#xff0c;用于估计正态分布的均值。其定义基于正态分布和 X 2 X^{2} X2分布&#xff08;卡方分布&#xff09;。如果随机变量X服…

springCloudAlibaba集成seata实战(分布式事物详解)

一、分布式事务 1. 事务介绍 1.1 基础概念 事务&#xff1a;保证我们多个数据库操作的原子性&#xff0c;多个操作要么都成功要么都不成功 事务ACID原则 A&#xff08;Atomic&#xff09;原子性&#xff1a;构成事务的所有操作&#xff0c;要么都执行完成&#xff0c;要么全部…

三次握手与四次挥手到底是怎么回事?

三次握手和四次挥手是TCP/IP协议中建立和断开连接的关键步骤&#xff0c;它们是保证可靠通信的重要机制。这里将探讨这两个概念&#xff0c;并解释它们背后的原理。 三次握手 三次握手用于建立TCP连接&#xff0c;它由客户端和服务器之间发送的三个报文组成&#xff1a; 第一次…

市场份额第一:SmartX 领跑 23全年中国超融合软件市场

日前&#xff0c;IDC 发布《中国软件定义存储&#xff08;SDS&#xff09;及超融合存储系统&#xff08;HCI&#xff09;市场季度跟踪报告&#xff0c;2023 年第四季度》&#xff0c;详解中国区超融合发展趋势、市场份额规模以及厂商占比。 IDC 数据显示&#xff0c;2023 年全…

rust使用print控制台打印输出五颜六色的彩色红色字体

想要在控制台打印输出彩色的字体&#xff0c;可以使用一些已经封装好的依赖库&#xff0c;比如ansi_term这个依赖库&#xff0c;官方依赖库地址&#xff1a;https://crates.io/crates/ansi_term 安装依赖&#xff1a; cargo add ansi_term 或者在Cargo.toml文件中加入&#…

带洞平面三角分割结果的逆向算法

先标不重复点&#xff0c;按最近逐个插入。 只说原理。 不带洞的 1 2 4 2 3 4 两个三角形 结果 1 2 3 4 无重复 无洞 1 2 6 1 2 3 6 1 2 3 7 6 1 2 3 4 7 6 1 2 3 4 5 7 6 1 2 3 4 1 5 7 6 1 2 3 4 1 6 5 7 6 最终结果 1 2 3 4 1 6 5 7 6 按重复分割 1 2 3…

自定义滚动条样式:前端实现跨浏览器兼容

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

【mac】【python】新建项目虚拟环境后,使用命令pip出现错误:zsh: command not found: pip

【mac】【python】新建项目虚拟环境后&#xff0c;使用命令pip出现错误&#xff1a;zsh: command not found: pip 问题描述&#xff1a; 拉取或者创建新的python项目时&#xff0c;为项目添加了新的解释器&#xff0c;创建啦虚拟环境&#xff0c;但是执行pip命令的时候找不到命…