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使用scrapy采集数据时为每个请求随机分配user-agent的方法
Apr 08 Python
Python的Django框架安装全攻略
Jul 15 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
Feb 26 Python
使用Flask集成bootstrap的方法
Jul 24 Python
python中的for循环
Sep 28 Python
对python 自定义协议的方法详解
Feb 13 Python
pyftplib中文乱码问题解决方案
Jan 11 Python
基于Python获取照片的GPS位置信息
Jan 20 Python
python自动化测试三部曲之request+django实现接口测试
Oct 07 Python
python如何用matplotlib创建三维图表
Jan 26 Python
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
May 26 Python
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
Oct 16 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
B2K与车机的中波PK
2021/03/02 无线电
PHP的FTP学习(四)
2006/10/09 PHP
利用PHP实现智能文件类型检测的实现代码
2011/08/02 PHP
CI框架Session.php源码分析
2014/11/03 PHP
php判断访问IP的方法
2015/06/19 PHP
屏蔽PHP默认设置中的Notice警告的方法
2016/05/20 PHP
php实现留言板功能
2017/03/05 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
javascript中的new使用
2010/03/20 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
jquery数据验证插件(自制,简单,练手)实例代码
2013/10/24 Javascript
jquery重复提交请求的原因浅析
2014/05/23 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
浅谈JS继承_借用构造函数 & 组合式继承
2016/08/16 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
原生js实现轮播图
2017/02/27 Javascript
一道面试题引发的对javascript类型转换的思考
2017/03/06 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
详解jenkins自动化部署vue
2019/05/14 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python的Django框架中的URL配置与松耦合
2015/07/15 Python
解决sublime+python3无法输出中文的问题
2018/12/12 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
pytorch AvgPool2d函数使用详解
2020/01/03 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
python读取配置文件方式(ini、yaml、xml)
2020/04/09 Python
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
卫校中专生个人自我评价
2013/09/19 职场文书
聚美优品陈欧广告词
2014/03/14 职场文书
可可西里观后感
2015/06/08 职场文书
黑白记忆观后感
2015/06/18 职场文书
培训简讯范文
2015/07/20 职场文书