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中使用xlrd、xlwt操作excel表格详解
Jan 29 Python
Python实现提取谷歌音乐搜索结果的方法
Jul 10 Python
Python数据结构之栈、队列的实现代码分享
Dec 04 Python
python smtplib模块自动收发邮件功能(一)
May 22 Python
Python3基于sax解析xml操作示例
May 22 Python
详解Python做一个名片管理系统
Mar 14 Python
python3模拟实现xshell远程执行liunx命令的方法
Jul 12 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 Python
Python 安装 virturalenv 虚拟环境的教程详解
Feb 21 Python
python的列表List求均值和中位数实例
Mar 03 Python
python实现简单学生信息管理系统
Apr 09 Python
pycharm 实现复制一行的快捷键
Jan 15 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使用数组实现队列
2012/02/05 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
2014/07/02 PHP
[原创]PHP字符串中插入子字符串方法总结
2016/05/06 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
javascript 闭包疑问
2010/12/30 Javascript
JS中confirm,alert,prompt函数区别分析
2011/01/17 Javascript
Jquery插件 easyUI属性汇总
2011/01/19 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
2014/09/23 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
BootStrap中的table实现数据填充与分页应用小结
2016/05/26 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
JavaScript代码执行的先后顺序问题
2017/10/29 Javascript
解决node修改后需频繁手动重启的问题
2018/05/13 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
2018/06/22 Javascript
[00:09]DOTA2全国高校联赛 精彩活动引爆全场
2018/05/30 DOTA
Python常用库推荐
2016/12/04 Python
Python 模板引擎的注入问题分析
2017/01/01 Python
Python 数据结构之旋转链表
2017/02/25 Python
Python安装pycurl失败的解决方法
2018/10/15 Python
postman传递当前时间戳实例详解
2019/09/14 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
2020/02/07 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
2020/05/26 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
html5仿支付宝密码框的实现代码
2017/09/06 HTML / CSS
为中国消费者甄选天下优品:网易严选
2016/08/11 全球购物
GafasWorld哥伦比亚:网上购买眼镜
2017/11/28 全球购物
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
应届生会计求职信
2013/11/11 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
安全生产隐患排查制度
2015/08/05 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL