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 相关文章推荐
Linux下使用python调用top命令获得CPU利用率
Mar 10 Python
Python守护进程用法实例分析
Jun 04 Python
Python如何读取MySQL数据库表数据
Mar 11 Python
Python正则抓取网易新闻的方法示例
Apr 21 Python
Python机器学习库scikit-learn安装与基本使用教程
Jun 25 Python
django 发送邮件和缓存的实现代码
Jul 18 Python
3个用于数据科学的顶级Python库
Sep 29 Python
python 实现返回一个列表中出现次数最多的元素方法
Jun 11 Python
基于python进行抽样分布描述及实践详解
Sep 02 Python
Numpy与Pytorch 矩阵操作方式
Dec 27 Python
python实现二分查找算法
Sep 18 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
Sep 26 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读MYSQL中文乱码的解决方法
2006/12/17 PHP
如何使用PHP实现javascript的escape和unescape函数
2013/06/29 PHP
php+highchats生成动态统计图
2014/05/21 PHP
解决cPanel无法安装php5.2.17
2014/06/22 PHP
php获取CSS文件中图片地址并下载到本地的方法
2014/12/02 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
laravel 查询数据库获取结果实现判断是否为空
2019/10/24 PHP
php实现微信小程序授权登录功能(实现流程)
2019/11/13 PHP
Javascript学习笔记4 Eval函数
2010/01/11 Javascript
javascript错误的认识不用关心内存管理
2012/12/15 Javascript
wap浏览自动跳转到wap页面的js代码
2014/05/17 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
node.js中的path.extname方法使用说明
2014/12/09 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
浅析JavaScript声明变量
2015/12/21 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
深入理解基于vue-cli的vuex配置
2017/07/24 Javascript
使用ajax的post同步执行(实现方法)
2017/12/21 Javascript
在vue项目中安装使用Mint-UI的方法
2017/12/27 Javascript
JS实现手写 forEach算法示例
2020/04/29 Javascript
JavaScript实现移动端拖动元素
2020/11/24 Javascript
python利用matplotlib库绘制饼图的方法示例
2016/12/18 Python
Python中遇到的小问题及解决方法汇总
2017/01/11 Python
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
Django中间件实现拦截器的方法
2018/06/01 Python
python字符串常用方法
2018/06/14 Python
Numpy之random函数使用学习
2019/01/29 Python
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
Reebok官方旗舰店:美国知名健身品牌锐步
2019/01/07 全球购物
《梅花魂》教学反思
2014/04/30 职场文书
组工干部对照检查材料
2014/08/25 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP
教你怎么用python实现字符串转日期
2021/05/24 Python
python 爬取吉首大学网站成绩单
2021/06/02 Python