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 相关文章推荐
flask中使用SQLAlchemy进行辅助开发的代码
Feb 10 Python
Python之reload流程实例代码解析
Jan 29 Python
tensorflow中next_batch的具体使用
Feb 02 Python
pycharm运行出现ImportError:No module named的解决方法
Oct 13 Python
Python模块的加载讲解
Jan 15 Python
python中多个装饰器的调用顺序详解
Jul 16 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
Jul 23 Python
python基于socket进行端口转发实现后门隐藏的示例
Jul 25 Python
使用Puppeteer爬取微信文章的实现
Feb 11 Python
python实现简单学生信息管理系统
Apr 09 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
May 26 Python
Python headers请求头如何实现快速添加
Nov 03 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转换IP地址到真实地址的方法详解
2013/06/09 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
2016/06/13 PHP
yii2 resetful 授权验证详解
2017/05/18 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
Javascript实现重力弹跳拖拽运动效果示例
2013/06/28 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
js函数定时器实现定时读取系统实时连接数
2014/04/30 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
2015/04/06 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
js实现防止被iframe的方法
2015/07/03 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
2015/11/29 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
2016/01/17 Javascript
angular+bootstrap的双向数据绑定实例
2017/03/03 Javascript
angularjs 页面自适应高度的方法
2018/01/17 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
解决Angular4项目部署到服务器上刷新404的问题
2018/08/31 Javascript
javascript的惯性运动实现代码实例
2019/09/07 Javascript
Python中实现字符串类型与字典类型相互转换的方法
2014/08/18 Python
Python常用内置模块之xml模块(详解)
2017/05/23 Python
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
Python魔法方法功能与用法简介
2019/04/04 Python
Django 实现前端图片压缩功能的方法
2019/08/07 Python
深入了解Python在HDA中的应用
2019/09/05 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
Python气泡提示与标签的实现
2020/04/01 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
制药工程专业毕业生推荐信
2013/12/24 职场文书
财务总监管理职责范文
2014/03/09 职场文书
企业精细化管理实施方案
2014/03/23 职场文书
篮球社团活动总结
2014/06/27 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
销售人员管理制度
2015/08/06 职场文书
寒假致家长的一封信
2015/10/10 职场文书
小学教代会开幕词
2016/03/04 职场文书