python之语音识别speech模块


Posted in Python onSeptember 09, 2020

1.原理

语音操控分为 语音识别和语音朗读两部分。

这两部分本来是需要自然语言处理技能相关知识以及一系列极其复杂的算法才能搞定,可是这篇文章将会跳过此处,如果你只是对算法和自然语言学感兴趣的话,就只有请您移步了,下面没有一个字会讲述到这些内容。

早在上世纪90年代的时候,IBM就推出了一款极为强大的语音识别系统-vio voice , 而其后相关产品层出不穷,不断的进化和演变着。 我们这里将会使用SAPI实现语音模块。

2. 什么是SAPI?

SAPI是微软Speech API , 是微软公司推出的语音接口,而细心的人会发现从WINXP开始,系统上就已经有语音识别的功能了,可是用武之地相当之少,他并没有给出一些人性化的自定义方案,仅有的语音操控命令显得相当鸡胁。 那么这篇文章的任务就是利用SAPI进行个性化的语音识别

代码

前提:打开win7的语音自动识别(控制面板--轻松访问--语音识别)

#!/usr/bin/env python
# -*- codinfg:utf-8 -*-
'''
@author: Jeff LEE
@file: .py
@time: 2018-07-19 11:15
@desc:
'''
from win32com.client import constants
import os
import win32com.client
import pythoncom
 
speaker = win32com.client.Dispatch("SAPI.SPVOICE")
 
 
class SpeechRecognition:
 def __init__(self, wordsToAdd):
 self.speaker = win32com.client.Dispatch("SAPI.SpVoice")
 self.listener = win32com.client.Dispatch("SAPI.SpSharedRecognizer")
 self.context = self.listener.CreateRecoContext()
 self.grammar = self.context.CreateGrammar()
 self.grammar.DictationSetState(0)
 self.wordsRule = self.grammar.Rules.Add("wordsRule", constants.SRATopLevel + constants.SRADynamic, 0)
 self.wordsRule.Clear()
 [self.wordsRule.InitialState.AddWordTransition(None, word) for word in wordsToAdd]
 self.grammar.Rules.Commit()
 self.grammar.CmdSetRuleState("wordsRule", 1)
 self.grammar.Rules.Commit()
 self.eventHandler = ContextEvents(self.context)
 self.say("Started successfully")
 def say(self, phrase):
 self.speaker.Speak(phrase)
 
class ContextEvents(win32com.client.getevents("SAPI.SpSharedRecoContext")):
 def OnRecognition(self, StreamNumber, StreamPosition, RecognitionType, Result):
 newResult = win32com.client.Dispatch(Result)
 print("你在说 ", newResult.PhraseInfo.GetText())
 speechstr=newResult.PhraseInfo.GetText()
 # 下面即为语音识别信息对应,打开响应操作
 if speechstr=="记事本":
  os.system('notepad') 
 elif speechstr=="写字板":
  os.system('write')
 elif speechstr=="画图板":
  os.system('mspaint')
 else:
  pass
 
if __name__ == '__main__':
 
 speaker.Speak("语音识别开启")
 wordsToAdd = ["记事本", "写字板","画图板",]
 speechReco = SpeechRecognition(wordsToAdd)
 while True:
 pythoncom.PumpWaitingMessages()

调试遇到问题

python调用语音模块时,遇见TypeError:NoneTypetakesnoarguments这种错误类型该如何解决

报错的原因是:不能调用语音开发包

解决方法:(如果你已经安装了pyWin32,它也安装了PythonWin)

1.在python35目录中找到pythonwin文件夹下的pythonwin.exe

python之语音识别speech模块

2.双击Pythonwin运行,然后选择工具tools/commakepyutility

python之语音识别speech模块

3.然后选择MicrosoftSpeechObjectLibrary5.4,点击OK键

python之语音识别speech模块

4.运行结果如下,问题解决

python之语音识别speech模块

后记

推荐一个不错的语音识别文档:https://3water.com/article/195212.htm

到此这篇关于python之语音识别speech模块的文章就介绍到这了,更多相关python 语音识别内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python 快速排序代码
Nov 23 Python
Python入门篇之编程习惯与特点
Oct 17 Python
在Python中操作字符串之startswith()方法的使用
May 20 Python
一篇文章入门Python生态系统(Python新手入门指导)
Dec 11 Python
全面理解Python中self的用法
Jun 04 Python
TensorFlow实现创建分类器
Feb 06 Python
Python Requests模拟登录实现图书馆座位自动预约
Apr 27 Python
Python内存读写操作示例
Jul 18 Python
python 正则表达式参数替换实例详解
Jan 17 Python
Python如何在DataFrame增加数值
Feb 14 Python
Python使用jupyter notebook查看ipynb文件过程解析
Jun 02 Python
Pytorch 图像变换函数集合小结
Feb 01 Python
python speech模块的使用方法
Sep 09 #Python
python计算auc的方法
Sep 09 #Python
详解anaconda离线安装pytorchGPU版
Sep 08 #Python
python如何将图片转换素描画
Sep 08 #Python
Python自动化之UnitTest框架实战记录
Sep 08 #Python
Python Opencv实现单目标检测的示例代码
Sep 08 #Python
python获取本周、上周、本月、上月及本季的时间代码实例
Sep 08 #Python
You might like
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
php foreach正序倒序输出示例代码
2014/07/01 PHP
php导入模块文件分享
2015/03/17 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
将HTML格式的String转化为HTMLElement的实现方法
2014/08/07 Javascript
基于jquery实现省市联动特效
2015/12/17 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
2016/05/18 Javascript
Augularjs-起步详解
2016/07/08 Javascript
关于Vue.nextTick()的正确使用方法浅析
2017/08/25 Javascript
详解VUE2.X过滤器的使用方法
2018/01/11 Javascript
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
关于在LayUI中使用AJAX提交巨坑记录
2019/10/25 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
2015/03/05 Python
python3.0 模拟用户登录,三次错误锁定的实例
2017/11/02 Python
python使用PyCharm进行远程开发和调试
2017/11/02 Python
python三引号输出方法
2019/02/27 Python
Python制作词云图代码实例
2019/09/09 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
python属于解释语言吗
2020/06/11 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
CSS3绘制超炫的上下起伏波动进度加载动画
2016/04/21 HTML / CSS
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
2017/07/11 HTML / CSS
后勤部长岗位职责
2013/12/14 职场文书
学生爱国演讲稿
2014/01/14 职场文书
2014年预备党员学习两会心得体会
2014/03/17 职场文书
选秀节目策划方案
2014/06/06 职场文书
见习报告怎么写
2014/10/31 职场文书
副总经理岗位职责范本
2015/04/08 职场文书
2015小学教师年度工作总结
2015/05/12 职场文书
mysql分表之后如何平滑上线详解
2021/11/01 MySQL
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技