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编写一个简单的Lisp解释器的教程
Apr 03 Python
详解Django中的ifequal和ifnotequal标签使用
Jul 16 Python
MySQL中表的复制以及大型数据表的备份教程
Nov 25 Python
快速了解Python开发中的cookie及简单代码示例
Jan 17 Python
python 对给定可迭代集合统计出现频率,并排序的方法
Oct 18 Python
对python捕获ctrl+c手工中断程序的两种方法详解
Dec 26 Python
使用python绘制二维图形示例
Nov 22 Python
tensorflow中tf.slice和tf.gather切片函数的使用
Jan 19 Python
python利用opencv实现SIFT特征提取与匹配
Mar 05 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
Jun 15 Python
Python之多进程与多线程的使用
Feb 23 Python
pytorch常用数据类型所占字节数对照表一览
May 17 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从右向左/从左向右截取字符串的实现方法
2011/11/28 PHP
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
php微信开发之图片回复功能
2018/06/14 PHP
node.js中的path.delimiter方法使用说明
2014/12/09 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
js实现密码强度检测【附示例】
2016/03/30 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
JS实现全屏的四种写法
2016/12/30 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
python实现问号表达式(?)的方法
2013/11/27 Python
Python中使用Tkinter模块创建GUI程序实例
2015/01/14 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
浅谈python 读excel数值为浮点型的问题
2018/12/25 Python
详解python多线程之间的同步(一)
2019/04/03 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
Pytorch 之修改Tensor部分值方式
2019/12/27 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
Python json格式化打印实现过程解析
2020/07/21 Python
Python datetime 如何处理时区信息
2020/09/02 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
2021/01/21 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
css3 响应式媒体查询的示例代码
2019/09/25 HTML / CSS
市场营销专业个人自荐信格式
2013/09/21 职场文书
应聘自荐书
2013/10/08 职场文书
总经理任命书
2014/03/29 职场文书
入党介绍人评语
2014/05/06 职场文书
民事赔偿协议书
2014/11/02 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
仓库管理制度范本
2015/08/04 职场文书
《暗黑破坏神2:重制版》本周进行第一轮A测 目前可官网进行申请报名
2021/04/07 其他游戏
MySQL 自定义变量的概念及特点
2021/05/13 MySQL
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android
浅谈sql_@SelectProvider及使用注意说明
2021/08/04 Java/Android