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提示No module named images的解决方法
Sep 29 Python
Python实现的批量下载RFC文档
Mar 10 Python
Ubuntu下使用python读取doc和docx文档的内容方法
May 08 Python
Python 统计字数的思路详解
May 08 Python
python3使用QQ邮箱发送邮件
May 20 Python
Python从文件中读取数据的方法讲解
Feb 14 Python
Python读取stdin方法实例
May 24 Python
利用Python绘制有趣的万圣节南瓜怪效果
Oct 31 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
Nov 08 Python
tensorflow使用range_input_producer多线程读取数据实例
Jan 20 Python
用Python实现职工信息管理系统
Dec 30 Python
Python实现曲线拟合的最小二乘法
Feb 19 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
phpMyAdmin 安装及问题总结
2009/05/28 PHP
PHP连接Access数据库的方法小结
2013/06/20 PHP
php创建sprite
2014/02/11 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
动态加载dtree.js树treeview(示例代码)
2013/12/17 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
2015/07/21 Javascript
微信小程序 MINA文件结构
2016/10/17 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
2016/10/24 Javascript
原生js实现验证码功能
2017/03/16 Javascript
vue2.0获取自定义属性的值
2017/03/28 Javascript
vue下拉列表功能实例代码
2018/04/08 Javascript
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
JavaScript常见继承模式实例小结
2019/01/11 Javascript
前端深入理解Typescript泛型概念
2020/03/09 Javascript
Windows下安装python MySQLdb遇到的问题及解决方法
2017/03/16 Python
利用aardio给python编写图形界面
2017/08/21 Python
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
Python编程scoketServer实现多线程同步实例代码
2018/01/29 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
LA MER海蓝之谜美国官网:传奇面霜
2016/08/27 全球购物
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
教师申诉制度
2014/01/29 职场文书
中学生期中自我鉴定
2014/04/20 职场文书
个人融资协议书范本两则
2014/10/15 职场文书
上课睡觉检讨书300字
2014/11/18 职场文书
三好学生事迹材料
2014/12/24 职场文书
农村婚庆主持词
2015/06/29 职场文书
离婚协议书范本(2016最新版)
2016/03/18 职场文书
SqlServer 垂直分表(减少程序改动)
2021/04/16 SQL Server
MySQL COUNT函数的使用与优化
2021/05/10 MySQL
青岛市的收音机研制与生产
2022/04/07 无线电