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多线程抓取天涯帖子内容示例
Apr 03 Python
Python简单实现enum功能的方法
Apr 25 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
Jun 18 Python
python爬虫实战之最简单的网页爬虫教程
Aug 13 Python
Python编程中flask的简介与简单使用
Dec 28 Python
Python 数据库操作 SQLAlchemy的示例代码
Feb 18 Python
pyqt5中QThread在使用时出现重复emit的实例
Jun 21 Python
python3实现高效的端口扫描
Aug 31 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 Python
Python代码需要缩进吗
Jul 01 Python
python开发入门——set的使用
Sep 03 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
Jan 11 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
4月1日重磅发布!《星际争霸II》6.0.0版本更新
2020/04/09 星际争霸
PHP初学者最感迷茫的问题小结
2010/03/27 PHP
PHP 作用域解析运算符(::)
2010/07/27 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
收藏一些不常用,但是有用的代码
2007/03/12 Javascript
常用简易JavaScript函数
2009/04/09 Javascript
js打印纸函数代码(递归)
2010/06/18 Javascript
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
myEvent.js javascript跨浏览器事件框架
2011/10/24 Javascript
JavaScript实现带标题的图片轮播特效
2015/05/20 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
jQuery添加和删除指定标签的方法
2015/12/16 Javascript
jQuery使用cookie与json简单实现购物车功能
2016/04/15 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
2016/10/05 Javascript
Bootstrap和Java分页实例第二篇
2016/12/23 Javascript
Bootstrap源码解读导航条(7)
2016/12/23 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
js实现放大镜特效
2017/05/18 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
关于vue的语法规则检测报错问题的解决
2018/05/21 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
详解在React项目中安装并使用Less(用法总结)
2019/03/18 Javascript
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
在主机商的共享服务器上部署Django站点的方法
2015/07/22 Python
Mac中Python 3环境下安装scrapy的方法教程
2017/10/26 Python
Python实现按中文排序的方法示例
2018/04/25 Python
基于python实现名片管理系统
2018/11/30 Python
Python 存储字符串时节省空间的方法
2019/04/23 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
2019/08/27 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
Maisons du Monde德国:法国家具和装饰的市场领导者
2019/07/26 全球购物
留学自荐信
2013/10/10 职场文书
会计专业大学生职业生涯规划书
2014/02/11 职场文书
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL