使用Python和Vosk库实现语音识别

embedded/2024/11/13 3:42:05/

使用Python和Vosk库实现语音识别

在人工智能和机器学习领域,语音识别技术正变得越来越重要。Python作为一种强大的编程语言,拥有丰富的库和框架,可以方便地实现语音识别功能。今天,我们将介绍如何使用Python中的SpeechRecognition库和Vosk模型来实现语音识别

一、SpeechRecognition库的安装

SpeechRecognition库是Python中一个简单易用的语音识别模块,支持多种语音识别服务,包括Google Speech Recognition、CMU Sphinx等。首先,我们需要安装这个库:

pip install SpeechRecognition

如果在安装过程中遇到问题,可以尝试强制安装:

pip install --force-reinstall SpeechRecognition

二、导入库

安装完成后,我们可以导入库并开始使用:

python">import speech_recognition as sr
r = sr.Recognizer()

需要注意的是,虽然安装时使用的是SpeechRecognition,但在导入时使用的是speech_recognition

三、识别麦克风输入的语音

如果你想要识别通过麦克风实时输入的语音,可以使用以下代码:

python"># 麦克风录音
mic = sr.Microphone()
with mic as source:print("请说话...")r.adjust_for_ambient_noise(source)audioData = r.listen(source)

四、识别语音文件

如果你已经有了一个语音文件,比如MP3格式的文件,你可以直接使用SpeechRecognition库来识别它:

python"># 识别语音文件
audioFile = sr.AudioFile("your_audio_file.mp3")
with audioFile as source:audioData = r.record(source)

请确保语音文件与你的主程序在同一个文件夹中,或者提供正确的文件路径。

五、安装Vosk库

Vosk是一个开源的语音识别工具,支持多种语言,并且可以离线工作。安装Vosk库:

pip install vosk

六、下载和使用Vosk模型

虽然安装了Vosk库,但我们需要单独下载Vosk的语音模型。访问VOSK Models网站,下载适合你的语言的模型。对于中文,下载中文语音模型,并将其解压到主程序文件夹下,将文件夹重命名为“model”。
模型下载连接

七、语音识别

使用Vosk模型进行语音识别

python">said = r.recognize_vosk(audioData)
print("你说的话是:", formulateResult(said))

这里的formulateResult函数用于处理识别结果,提取出识别的文本。

八、运行结果

使用上述代码,你可以将语音文件中的语音转换为文本。例如,使用“xxx.mp3”文件进行识别进行测试,都能得到不错的识别效果。

九、完整demo

python">import speech_recognition as sr
import vosk
import pyaudior = sr.Recognizer()# 直接录音
mic = sr.Microphone()
with mic as source:print("请说话...")r.adjust_for_ambient_noise(source)audioData = r.listen(source)# # 使用语音文件
# audioFile = sr.AudioFile("xxxx.mp3")
# with audioFile as source:
#     audioData = r.record(source)def formulateResult(resu):start = resu.index('"', resu.index('"', resu.index('"') + 1) + 1) + 1end = resu.index('"', start)return resu[start:end]said = r.recognize_vosk(audioData)
print("you said:", formulateResult(said))

http://www.ppmy.cn/embedded/136138.html

相关文章

RabbitMQ 存储机制

一、消息存储机制 不管是持久化的消息还是非持久化的消息都可以被写入到磁盘。持久化的消息在到达队列时就被写入到磁盘,非持久化的消息一般只保存在内存中,在内存吃紧的时候会被换入到磁盘中,以节省内存空间。这两种类型的消息的落盘处理都…

批量归一化 BN(Batch Normalization) (减少重复学习 - 加速损失收敛) + 代码实现 ——笔记2.15《动手学深度学习》

目录 0. 前言 1. 训练深层网络 1.1 批量归一化的表达式 1.2 训练模式&预测模式 2. 批量规范化层 2.1 全连接层 2.2 卷积层 2.2.1 预测模式中的BN 3. 从零实现 (pytorch) 3.1 使用BN层的 LeNet 4. 简明实现 (调包) 5. 争议(可解释性问题)…

【笔记】前后端互通中前端登录无响应

后来的前情提要 : 后端的ip地址在本地测试阶段应该设置为localhost 前端中写cors的配置 后端也要写cors的配置 且两者的url都要为localhost 前端写的baseUrl是指定对应的后端的ip地址以及端口号 很重要 在本地时后端的IP的地址也必须为本地的 F12的网页报错是&a…

HTB:GreenHorn[WriteUP]

目录 连接至HTB服务器并启动靶机 使用nmap对靶机TCP端口进行开放扫描 再次使用nmap对这三个端口进行脚本、服务扫描 尝试先通过curl访问靶机80端口 将靶机IP与该域名写入hosts使DNS本地解析 使用浏览器访问greenhorn.htb 使用Wappalyzer插件查看该页面技术栈 尝试在sea…

【数据结构】快慢指针探秘:理解链表与数组中的环结构

在处理链表或数组时,我们经常需要在一次遍历中找到特定的位置或检测某种模式。这时,快慢指针技术就能成为强大的工具,尤其在链表面试题中。本文将详细介绍什么是快慢指针、它们的工作原理,并通过一些实际应用帮助你理解这种技巧。…

详细分析Js中保留前几位小数的基本知识(附Demo)

目录 前言1. 基本知识2. Demo3. 取整 拓展 前言 从实战中学习,由于需要计算充电以及结束充电的时长,并且保留两位小数: onLoad(page, params {}) {// 查询要带页面信息,当前页还有数据listViewDeviceChargeHistory(page.curren…

华为ENSP--ISIS路由协议

项目背景 为了确保资源共享、办公自动化和节省人力成本,公司E申请两条专线将深圳总部和广州、北京两家分公司网络连接起来。公司原来运行OSFP路由协议,现打算迁移到IS-IS路由协议,张同学正在该公司实习,为了提高实际工作的准确性和…

MATLAB 在数组的元素后面使用百分号 `%` 添加注释时会将其误认为是行分隔符,导致数组维度不一致

该警告提示 MATLAB 在数组的元素后面使用百分号 % 添加注释时会将其误认为是行分隔符,导致数组维度不一致。为了解决这个问题,您可以采用以下两种方法之一: 使用分号 ; 替换逗号 ,:这会将每个注释作为新行的开始,更加…