Python 语音

实现语音操控的原理

语音操控分为语音识别和语音朗读两部分

我们使用speech模块实现语音模块(python 2.7)

SAPI是微软Speech API , 是微软公司推出的语音接口,而细心的人会发现从WINXP开始,系统上就已经有语音识别的功能了,可是用武之地相当之少,他并没有给出一些人性化的自定义方案,仅有的语音操控命令显得相当鸡胁。

Python pywin32,可以使Python调用WIN32COM接口,选择对应版本下载(区分32位/64位),直接双击运行即可

安装speech模块:pip install speech

实现个简易的控制电脑做事情的小程序:

首先,来个测试文件

此处仅为启动和关闭语音系统

import speech

while True:

phrase =speech.input()

speech.say("You said %s"%phrase)

if phrase =="turn off":

break

自制个中文库

phrase = {"closeMainSystem" : "关闭人机交互"

, "film" : "我要看电影"

, "listenMusic" : "我好累啊"

, "blog" : "看博客"

, "cmd" : "cmd" }

设计语音对应的电脑操作

def callback(phr, phrase):

if phr == phrase["closeMainSystem"]:

speech.say("Goodbye. 人机交互即将关闭,谢谢使用")

speech.stoplistening()

sys.exit()

elif phr == phrase["film"]:

speech.say("正在为您打开优酷")

webbrowser.open_new("http://www.youku.com/")

elif phr == phrase["listenMusic"]:

speech.say("即将为你启动豆瓣电台")

webbrowser.open_new("http://douban.fm/")

elif phr == phrase["blog"]:

speech.say("即将进入Dreamforce.me")

webbrowser.open_new("http://www.cnblogs.com/darksouls/")

elif phr == phrase["cmd"]:

speech.say("即将打开CMD")

os.popen("C:\Windows\System32\cmd.exe")

# 可以继续用 elif 写对应的自制中文库中的对应操作

主程序

while True:

phr = speech.input()

speech.say("You said %s" % phr)

callback(phr, phrase)

完整代码

# _*_ coding:utf-8 _*_

import os

import sys

import speech

import webbrowser

phrase = {"closeMainSystem" : "关闭人机交互"

, "film" : "我要看电影"

, "listenMusic" : "我好累啊"

, "blog" : "看博客"

, "cmd" : "cmd" }

def callback(phr, phrase):

if phr == phrase["closeMainSystem"]:

speech.say("Goodbye. 人机交互即将关闭,谢谢使用")

speech.stoplistening()

sys.exit()

elif phr == phrase["film"]:

speech.say("正在为您打开优酷")

webbrowser.open_new("http://www.youku.com/")

elif phr == phrase["listenMusic"]:

speech.say("即将为你启动豆瓣电台")

webbrowser.open_new("http://douban.fm/")

elif phr == phrase["blog"]:

speech.say("即将进入Dreamforce.me")

webbrowser.open_new("http://www.cnblogs.com/darksouls/")

elif phr == phrase["cmd"]:

speech.say("即将打开CMD")

os.popen("C:\Windows\System32\cmd.exe")

# 可以继续用 elif 写对应的自制中文库中的对应操作

while True:

phr = speech.input()

speech.say("You said %s" % phr)

callback(phr, phrase)

发现网上有个语音识别框架:

# _*_ coding:utf-8 _*_

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=="张三":

speaker.Speak("lisi")

elif speechstr=="你好":

speaker.Speak("hello world")

elif speechstr=="国庆快乐":

speaker.Speak("Happy nationalday")

elif speechstr=="新年快乐":

speaker.Speak("happy New Year")

elif speechstr=="李四":

speaker.Speak("a beauty baby")

elif speechstr=="王五":

speaker.Speak("a little boy")

elif speechstr=="赵六":

speaker.Speak("a boy can coding")

else:

pass

if __name__ == '__main__':

speaker.Speak("语音识别开启")

wordsToAdd = ["张三",

"你好",

"国庆快乐",

"新年快乐",

"李四",

"王五",

"赵六",]

speechReco = SpeechRecognition(wordsToAdd)

while True:

pythoncom.PumpWaitingMessages()

python常用语音识别库_Python入门 —— 06语音识别相关推荐

  1. python常用标准库的基本用法_Python常用标准库之fileinput

    Python常用标准库之fileinput fileinput模块用于对标准输入或多个文件进行逐行遍历.这个模块的使用非常简单,相比open()方法批量处理文件,fileinput模块可以对文件.行号 ...

  2. Python常用第三方库

    Python常用第三方库 一. 文件读写 二.网络抓取和解析 三.数据库连接 四.数据清洗转换 五.数据计算和统计分析 六.自然语言处理和文本挖掘 七.图像和视频处理 八.音频处理 九.数据挖掘/机器 ...

  3. python常用库教程_这几个python常用的库你必须知道!

    随着人工智能时代的到来,python变得更加流行.受欢迎,功能强大.简单易学.容易入门.应用广泛等,掀起了学习热潮,现在越来越多人转行都会学习python语言.为了让大家快速掌握python,今天为大 ...

  4. Python常用第三方库——简介及下载地址

    Python常用第三方库 可以在  The Python Package Index (PyPI)  软件库(官网主页:https://pypi.org/  )查询.下载 和 发布 Python包或库 ...

  5. python的第三方库是干什么用的-quot;别人造好的轮子”,python常用第三方库——python自动办公7...

    下载好向圈APP可以快速联系圈友 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 前记:这是分享和记录我个人自动化办公技能的一系列文章,意在让的小伙伴们看后能够有所帮助和长大.我们都不是专业的 ...

  6. Python常用标准库之正则表达式

    Python常用标准库之正则表达式 1.re模块常用函数 1.1 匹配对象以及group()和groups()方法 1.2 match()与search():匹配单个目标 1.3 findall(): ...

  7. 【博学谷学习记录】超强总结,用心分享 | 人工智能编程语言Python常用标准库(上)

    Python常用标准库 上 sys库 time库 random库 math库 os库 shutil库 Python语言的急速发展很大程度上得益于其开放共享的特点和良好的社区支持和计算生态,拥有超过十几 ...

  8. python 常用标准库

    python 常用标准库 1.文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata:Unicode字符数据库 st ...

  9. python的ppt库_Python绘图库matplotlib快速入门.ppt

    Python绘图库matplotlib快速入门 *;*;;快速绘图 matplotlib的pyplot子库提供了和matlab类似的绘图API,方便用户快速绘制2D图表.(matplotlib_sim ...

最新文章

  1. (原创)用c++11打造好用的any
  2. 青少年蓝桥杯_2020_steam考试_初级组_第二题
  3. 网络编程套接字(二)
  4. codeforces 816 E. Karen and Supermarket(树形dp)
  5. 【IoT】 产品设计与工艺:塑料表面处理工艺
  6. 别催更啦!手淘全链路性能优化下篇--容器极速之路
  7. mac设置windows文件服务器,苹果MAC访问Windows共享文件夹的技巧
  8. java用于选择结构的关键字_Java结构
  9. 【Android开发】微信精选,文章资讯类App开发记录总结
  10. API Gateway/API 网关(三) - Kong的使用 - 限流rate limiting(redis)
  11. arcgis根据7参转坐标_ArcGIS和COORD进行坐标七参数转换国家2000的方法
  12. Centos7(VPS)更改为中国时区并定期同步
  13. elasticsearch常用的curl命令
  14. win10照片查看器_非常好用的19个Win10小技巧,学会之后事半功倍
  15. 阿里走向下一个竞技场
  16. 关于ubuntu16.04 安装过程中卡住问题解决方法
  17. 达梦数据库DCA培训笔记(基于dm8)
  18. 如何使用工业级AP—Client模式使用介绍
  19. 微信html5推广,制作微信H5漂亮推广链接网站大收集,很多伙伴都收藏了
  20. 将JPG文件转换成word文档

热门文章

  1. 安全狗加入UAPP 共建国产操作系统安全生态
  2. C# 开发dynamics crm修改密码功能
  3. 用PYTHON 爬取系统的(电话号码,关系和姓名)到Excel
  4. 四象限法推导lm曲线_SEM如何用四象限法进行数据分析,提升CTR和CVR?
  5. 回文字符串——动态规划的一般解决方案
  6. 那些絮絮叨叨,请记住自己再次的承诺!
  7. 【转】iOS消息推送机制
  8. python商业爬虫实战与智能投顾基础_python机器学习到量化智能投顾,人生没有彩排,交易却可能回测...
  9. 音视频互动开发平台(SDK)
  10. 微信小程序 保存图片