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实现井字棋游戏
Mar 30 Python
快速入门python学习笔记
Dec 06 Python
pyqt5 QProgressBar清空进度条的实例
Jun 21 Python
Django-Model数据库操作(增删改查、连表结构)详解
Jul 17 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
Aug 27 Python
利用python实现AR教程
Nov 20 Python
Python class的继承方法代码实例
Feb 14 Python
解决tensorboard多个events文件显示紊乱的问题
Feb 15 Python
解决django框架model中外键不落实到数据库问题
May 20 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
如何用Matplotlib 画三维图的示例代码
Jul 28 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实现的获取网页中的图片并保存到本地的代码
2010/01/05 PHP
PHP编码规范之注释和文件结构说明
2010/07/09 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
2015/12/16 PHP
一个选择最快的服务器转向代码
2009/04/27 Javascript
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
使用jquery插件实现图片延迟加载技术详细说明
2011/03/12 Javascript
jQuery Migrate 1.1.0 Released 注意事项
2014/06/14 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
Angular2学习笔记——详解路由器模型(Router)
2016/12/02 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
javascript 初学教程及五子棋小程序的简单实现
2017/07/04 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
2017/12/11 jQuery
页面点击小红心js实现代码
2018/05/26 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
Python中的列表知识点汇总
2015/04/14 Python
举例讲解Python的Tornado框架实现数据可视化的教程
2015/05/02 Python
JPype实现在python中调用JAVA的实例
2017/07/19 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
Django中反向生成models.py的实例讲解
2018/05/30 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
Tensorflow中的降维函数tf.reduce_*使用总结
2020/04/20 Python
JD Sports芬兰:英国领先的运动鞋和运动服饰零售商
2018/11/16 全球购物
英国最大的在线时尚眼镜店:Eyewearbrands
2019/03/12 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
质检部职责
2013/12/28 职场文书
班长自荐书范文
2014/02/11 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
2016教师校本培训心得体会
2016/01/08 职场文书
Python turtle实现贪吃蛇游戏
2021/06/18 Python
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技
python神经网络学习 使用Keras进行回归运算
2022/05/04 Python