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判断操作系统类型代码分享
Nov 22 Python
Python的Django框架中自定义模版标签的示例
Jul 20 Python
python字符类型的一些方法小结
May 16 Python
对python中执行DOS命令的3种方法总结
May 12 Python
python对离散变量的one-hot编码方法
Jul 11 Python
Python3之不使用第三方变量,实现交换两个变量的值
Jun 26 Python
Django框架模型简单介绍与使用分析
Jul 18 Python
Django Rest framework频率原理与限制
Jul 26 Python
python3 实现函数写文件路径的正确方法
Nov 27 Python
Flask中endpoint的理解(小结)
Dec 11 Python
Python3.8安装Pygame教程步骤详解
Aug 14 Python
Python多线程 Queue 模块常见用法
Jul 04 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
使用CodeIgniter的类库做图片上传
2014/06/12 PHP
PHP Session机制简介及用法
2014/08/19 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
2020/10/20 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
PageSwitch插件实现100种不同图片切换效果
2015/07/28 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
2015/09/10 Javascript
实现高性能JavaScript之执行与加载
2016/01/30 Javascript
Jquery zTree 树控件异步加载操作
2016/02/25 Javascript
动态的9*9乘法表效果的实现代码
2016/05/16 Javascript
js模糊查询实例分享
2016/12/26 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
深入理解vue-loader如何使用
2017/06/06 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
vue-cli3全面配置详解
2018/11/14 Javascript
Python异常处理总结
2014/08/15 Python
Python函数中定义参数的四种方式
2014/11/30 Python
利用Python学习RabbitMQ消息队列
2015/11/30 Python
Python实现简单字典树的方法
2016/04/29 Python
python生成词云的实现方法(推荐)
2017/06/13 Python
python列表生成式与列表生成器的使用
2018/02/23 Python
对numpy.append()里的axis的用法详解
2018/06/28 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
2019/07/23 Python
Python类的绑定方法和非绑定方法实例解析
2020/03/04 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
对Pytorch 中的contiguous理解说明
2021/03/03 Python
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
测试驱动开发的主要步骤是什么
2014/12/10 面试题
abstract class和interface有什么区别
2013/08/04 面试题
俄语专业毕业生推荐信
2013/10/28 职场文书
父亲的菜园教学反思
2014/02/13 职场文书
《我要的是葫芦》教学反思
2014/02/23 职场文书
医院领导班子查摆问题对照检查材料思想汇报
2014/10/08 职场文书
护士个人年度总结范文
2015/02/13 职场文书
植物园观后感
2015/06/11 职场文书