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计算文本文件行数的方法
Jul 06 Python
Python中Class类用法实例分析
Nov 12 Python
浅谈python抛出异常、自定义异常, 传递异常
Jun 20 Python
Python 搭建Web站点之Web服务器与Web框架
Nov 06 Python
Python字典实现简单的三级菜单(实例讲解)
Jul 31 Python
python+numpy+matplotalib实现梯度下降法
Aug 31 Python
对python中的乘法dot和对应分量相乘multiply详解
Nov 14 Python
【python】matplotlib动态显示详解
Apr 11 Python
PyQt5实现暗黑风格的计时器
Jul 29 Python
Django shell调试models输出的SQL语句方法
Aug 29 Python
python环境搭建和pycharm的安装配置及汉化详细教程(零基础小白版)
Aug 19 Python
Python读写yaml文件
Mar 20 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+JS+rsa数据加密传输实现代码
2011/03/23 PHP
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
document.documentElement && document.documentElement.scrollTop
2007/12/01 Javascript
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
用nodejs访问ActiveX对象,以操作Access数据库为例。
2011/12/15 NodeJs
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
2015/12/08 Javascript
浅析BootStrap栅格系统
2016/06/07 Javascript
jquery mobile移动端幻灯片滑动切换效果
2020/04/15 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
2017/06/13 jQuery
利用require.js与angular搭建spa应用的方法实例
2017/07/19 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
canvas轨迹回放功能实现
2017/12/20 Javascript
JS简单生成由字母数字组合随机字符串示例
2018/05/25 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
在小程序Canvas中使用measureText的方法示例
2018/10/19 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
2019/05/21 Javascript
详解JavaScript原型与原型链
2020/11/16 Javascript
分享15个最受欢迎的Python开源框架
2014/07/13 Python
centos6.8安装python3.7无法import _ssl的解决方法
2018/09/17 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
ONLY德国官方在线商店:购买时尚女装
2017/09/21 全球购物
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
完美实现CSS垂直居中的11种方法
2021/03/27 HTML / CSS
学生个人求职自荐信格式
2013/09/23 职场文书
物流专业求职信
2014/06/30 职场文书
民事答辩状范本
2015/05/21 职场文书
地道战观后感
2015/06/04 职场文书
一波干货,会议主持词开场白范文
2019/05/06 职场文书
学者《孟子》名人名言
2019/08/09 职场文书
只需要这一行代码就能让python计算速度提高十倍
2021/05/24 Python
springboot新建项目pom.xml文件第一行报错的解决
2022/01/18 Java/Android
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL
PyTorch device与cuda.device用法
2022/04/03 Python