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中 ? : 三元表达式的使用介绍
Oct 09 Python
使用python装饰器验证配置文件示例
Feb 24 Python
Python中for循环控制语句用法实例
Jun 02 Python
微信跳一跳自动运行python脚本
Jan 08 Python
python根据url地址下载小文件的实例
Dec 18 Python
Python Matplotlib库安装与基本作图示例
Jan 09 Python
Python常见的pandas用法demo示例
Mar 16 Python
Python 实现数据结构-堆栈和队列的操作方法
Jul 17 Python
python编程进阶之异常处理用法实例分析
Feb 21 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
python通过opencv调用摄像头操作实例分析
Jun 07 Python
你需要掌握的20个Python常用技巧
Feb 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用ini_get获取php.ini里变量值的方法
2015/03/04 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
2013/01/02 Javascript
JavaScript图片放大技术(放大镜)实现代码分享
2013/11/14 Javascript
javascript+canvas实现刮刮卡抽奖效果
2015/07/29 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
Javascript 事件冒泡机制详细介绍
2016/10/10 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
深入理解ES6的迭代器与生成器
2017/08/19 Javascript
解决ie img标签内存泄漏的问题
2017/10/13 Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
2019/04/14 Javascript
vue3为什么要用proxy替代defineProperty
2020/10/19 Javascript
vue3.0中使用element的完整步骤
2021/03/04 Vue.js
Python下使用Psyco模块优化运行速度
2015/04/05 Python
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
Python通过属性手段实现只允许调用一次的示例讲解
2018/04/21 Python
Python检测网络延迟的代码
2018/05/15 Python
在python中实现同行输入/接收多个数据的示例
2019/07/20 Python
python 负数取模运算实例
2020/06/03 Python
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
适合各种场合的美食礼品:Harry & David
2016/08/03 全球购物
为您的家、后院、车库等在线购物:Spreetail
2019/06/17 全球购物
T3官网:头发造型工具
2019/12/26 全球购物
志愿者宣传口号
2014/06/17 职场文书
白酒营销策划方案
2014/08/17 职场文书
工作散漫检讨书
2014/09/16 职场文书
颐和园的导游词
2015/01/30 职场文书
基层党建工作简报
2015/07/21 职场文书
车辆挂靠协议书
2016/03/23 职场文书
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android
使用Redis实现实时排行榜功能
2021/07/02 Redis
无线电通信名词解释
2022/02/18 无线电
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers