图片 1Python神技之利用百度AI声音控制Computer关机

前言

二零一八年python语言慢火,那把火看趋势已然三番四次到了二〇一两年!

本次大家来看看哪些使用百度AI来声音控制Computer关机。首先必要安装百度AI的Python
SDK,而且创办语音识别的应用,获取AppID、API Key、Secret
Key那三项内容,以便在大家写的先后里应用,详细的情况可知上上篇小说,这里就不赘述了。

创造交互式web应用的办法在过去几年发生了不安的浮动。建站的选项就好像是无边的,并且只要你从头询问某些框架或然技能栈的利害,你飞快就能够感觉到纳闷。嗯..Django
vs Ruby on Rails vs Flask vs Node.js vs Spring vs Yii vs

除开在科学总结领域python有用武之地之外,在玩耍、后台等地点,python也大显神威,

图片 2Python神技之利用百度AI声音控制计算机关机

图片 3说Python酷炫的12个理由,反正看了您也会喜欢

自身将如约标准的花色支出流程,手把手教大家写个python小游戏,游戏的名字叫做alien
invasion!

总体代码如下:

Batman.js vs
<自行脑部流行的框架>.即使您因为Batman的名字而挑选它,笔者表示服。我们Josh.ai的体系须要管理好三种截然不相干的须求,Python让我们能够很灵巧的满足那么些以致有的时候会互相争辨的供给。

图片 4Python|10秒钟学会用python写游戏

<pre style=”-webkit-tap-highlight-color: transparent; box-sizing:
border-box; font-family: Consolas, Menlo, Courier, monospace; font-size:
16px; white-space: pre-wrap; position: relative; line-height: 1.5;
color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px;
background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232);
font-style: normal; font-variant-ligatures: normal; font-variant-caps:
normal; font-weight: normal; letter-spacing: normal; orphans: 2;
text-align: start; text-indent: 0px; text-transform: none; widows: 2;
word-spacing: 0px; -webkit-text-stroke-width: 0px;
text-decoration-style: initial; text-decoration-color: initial;”> 1#
coding: utf-82″””3@author: 凯文 Wong4@function:
python实现的录音及语音识别程序5@time: 2018/11/15 23:146″””7import
os8import wave9import numpy as np10from pyaudio import Py奥迪o,
paInt1611from aip import AipSpeech12import os131415class Recorder:16 def
init:17 # pyaudio内置缓冲大小18 self.num_samples = 200019 #
取样频率20 self.sampling_rate = 800021 # 声音保存的阈值22 self.level =
150023 #
count_num个取样之内出现COUNT_NUM个高于LEVEL的取样则记录声音24
self.count_num = 2025 # 声音记录的细微长度:save_length *
num_samples 个取样26 self.save_length = 827 # 录音时间,单位s28
self.time_count = 829 self.voice_string = []3031 # 保存为音频文件32
def save_wav(self, filename):33 wf = wave.open(filename, ‘wb’)34
wf.setnchannels35 wf.setsampwidth36
wf.setframerate(self.sampling_rate)37
wf.writeframes(np.array(self.voice_string).tostring38 wf.close()3940 #
读取音频41 def recorder:42 pa = Py奥迪(Audi)o()43 stream =
pa.open(format=paInt16, channels = 1, rate = self.sampling_rate, input
= True, frames_per_buffer = self.num_samples)44 save_count = 045
save_buffer = []46 time_count = self.time_count47 while True:48
time_count -= 149 # 读入num_samples个取样50 string_audio_data =
stream.read(self.num_samples)51 # 将读入的多少转换为数组52 audio_data
= np.fromstring(string_audio_data, dtype = np.short)53 # 总计大于
level 的抽样的个数54 large_sample_count = np.sum(audio_data >
self.level)55 print(np.max(audio_data)), “large_sample_count=>”,
large_sample_count56 #
假如个数大于COUNT_NUM,则最太守存SAVE_LENGTH个块57 if
large_sample_count > self.count_num:58 save_count =
self.save_length59 else:60 save_count -=161 if save_count < 0:62
save_count = 063 if save_count > 0:64
save_buffer.append(string_audio_data)65 else:66 if len(save_buffer)
> 0:67 self.voice_string = save_buffer68 save_buffer = []69
print(“Recode a piece of voice successfully!”)70 return True71 if
time_count == 0:72 if len(save_buffer) > 0:73 self.voice_string =
save_buffer74 save_buffer = []75 print(“Recode a piece of voice
successfully!”)76 return True77 else:78 return False79 return
True808182# 读取本地音频文件83def get_file_content:84 with
open(filePath, ‘rb’) as fp:85 return fp.read()8687if name ==
main‘:88 “”” 你的 APPID AK SK “””89 APP_ID = ‘14810929’90 API_KEY
= ‘hD1sGacRqCWybF9lBqumMriS’91 SECRET_KEY =
‘zKtG8uv3mv4tKqC5avL1ua9YGM38YAAG’92 client = AipSpeech(APP_ID,
API_KEY, SECRET_KEY)9394 while True:95 recorder = Recorder()96 #
起始录音97 recorder.recorder()98 # 保存音频文件99 recorder.save_wav100
# 识别当三步跳件101 res = client.asr(get_file_content, ‘wav’, 8000,
{102 ‘dev_pid’: 1536,103 })104 print(res[‘result’][0])105 try:106
if “计算器” == res[‘result’][0]:107 os.system108 elif “关机” ==
res[‘result’][0]:109 os.system(“shutdown -s -t 300”)110 elif
“打消关机” == res[‘result’][0]:111 os.system(“shutdown -a”)112 elif
“退出程序” == res[‘result’][0]:113 break114 except:115
pass</pre>

图片 5说Python炫耀的12个理由,反正看了您也会欣赏

设置pygame并创制能左右移动的飞艇

那边运用了面向对象的编制程序风格,第15-79行概念了叁个Recorder类,其首要作用是对音频文件举行拍卖,包罗将程序运维后将客户的声响以二进制流的款型读取并保存为wav格式的音频文件,
第82行到第85行读取生成的音频文件,并再次来到文件内容。第87行是主线程入口,只要客商没有对Computer说“退出程序”,就能一贯实施while循环读取客户的动静,将音频文件交给百度AI的口音识别接口,并赶回识其他文字内容。依照识别的从头到尾的经过,调用Python的os库执行相应的操作。

1 Python范儿

安装pygame

运转程序后,对Computer说一声“关机”,运维结果如下:

先是作者想说,笔者爱不释手Python那门语言。在某种意义上说,Python是个万金油——你能够依据某些有理有据的面向对象编制程序格局,也足以尝试有个别函数式编制程序的感到到。笔者列举部分python语言风趣的风味:生成器,map和filter操作,lambda函数等。有个别脾气大概看起来很令人费解,但为数不菲时候小编会深入到具体的行使场景,钻探为了变成某个风趣的天职自小编到底供给什么样。何况,作者开心python的缩进排版,当然那是私人民居房偏爱。缩进的裨益是带动相对干净卫生的代码,那在品种变得不小的时候会特别有效。Pythonic是个风尚话,尽管去开发三个巅峰,步向python解释器,敲入“import
this’来体验呢。

自己Computer是windows 10、python3.6,pygame下载地址:

图片 6Python神技之利用百度AI声音控制计算机关机

图片 7说Python炫目的10个理由,反正看了你也会喜欢

完结,撒花,ye~

2 你能够有所全方位

请自行下载对应python版本的

假定你正在寻觅配套完善的方案让三个类型尽快落地,能够思量Django框架。Django以声称“消除web开拓的当先四分之二零碎事情”而饮誉。这象征一旦运转Django应用,多量的作用如数据库管理,HTML模板效能(让页面即时生成内容)开箱即用。相当多拥趸也推崇Django自带的保管后台,它本人也是叁个Django应用,让客户能够低价的查阅、修改和删除数据库中已创造的靶子(通过创设数据库model和设定指标如何在dashboard中显得的定制类之间的照耀来促成)。除了官方版本的Django,另一大利好是无尽的第三方使用,能够直接引进到自个儿的花色中。理想图景下这几个外界的使用在通过不那么令人头疼的安排之后就足以健康工作了。Django初步于二〇〇〇年,近日社区早就极其巨大,那意味常常能够长足寻找到烦懑你的主题素材的答案。相对于其余的选项来讲Django是贰个很变得强大的软件,个人感觉必要开销一些时光工夫耳熟能详、高效的选拔各类零部件。假如您对少数开箱即用的方案(富含引进的第三方应用)以为满意,这表达您的等级次序早已有了很棒的起头。

pygame

图片 8说Python绚烂的11个理由,反正看了您也会喜欢

运转以下命令

3 你能够获得丰富多

图片 9Python|10分钟学会用python写游戏

在Python

开创Pygame窗口及响应客户输入

web框架的社会风气里,颇受招待的Flask框架与Django形成了分明相比较。关于Flask你所知晓的第一件事正是它的统一筹算思想之一——Flask是个“微”框架,宗旨丰富轻量级,开采者可以选用用种种格局来扩王新辉能。如若您的站点提供一各个动态内容供顾客浏览,那作者引入您利用Flask框架。小编认为创立Flask应用并把它逐步周到的经验是相当轻松欢喜、一览无遗的(纵然与Django相比较)。杰出的“hello

新建二个文本夹alien_invasion,并在文件夹中新建alien_invasion.py文件,输入如下代码。

world”Flask版只需求客户编写7行代码,当然这几行代码也干不了别的事,不过很好的反映了Flask为了提供简洁性所推动的奋力。

图片 10Python|10分钟学会用python写游戏

就扩展性来讲,Flask将甄选数据库建设方案、模板语言以及别的web应用基本组件的话语权都交由开荒者。那让笔者深感作者对和睦的使用从头到脚都尽在支配。假如您是多少个初入门的开辟者,不指望团结主宰动用什么技巧来支撑自个儿的网址,请牢记Flask社区里已经有非常多遍布使用的扩展能够让您用相对“标准化”的不二诀要来消除这个恼人的选项。比如作者很推荐Flask专家MiguelGrinberg的那篇tutorial。你将见到只须要经受一丢丢难过(比较于Flask的另外竞争者来讲)就足以建构起三个早熟可用的Flask应用。Flask框架在你初阶塑造利用的时候能够提供数不胜数便利,同临时候不会给您这些你不知底自个儿是否须要的麻烦部件。

运营上述代码,大家得以博得一个茶色分界面包车型客车窗口:

4 撬起python的世界

图片 11Python|10分钟学会用python写游戏

归来语言本人,Python以“唯有想不到未有找不到”为差十分少具有应用提供库扶助而盛名。小编认为python的宗旨库都提供了齐全的文书档案,那让情状变得不如。贰个很好的例子是普及应用的Numpy和Scipy八个用于科学总结的库。从社区中您能够获取大批量用于总计工作的第三方库,举例酷炫的人工智能和机械和工具学习有关的库(访谈PyBrain试试看).远近闻明作为最广为应用的语言之一,python有一个硕大的社区,那表示有大气先行者的QA,何况一再难点都早就有了精良的答案。作者把Python看作贰个通用型的言语,把它座落你的枪炮Curry,在今后十分短一段时间它都能发挥效用。

创设设置类

图片 12说Python酷炫的13个理由,反正看了您也会欣赏

为了在写游戏的经过中能便捷地成立一些新职能,下边额外编写一个settings模块,个中富含二个Settings类,用于将有着安装存款和储蓄在二个地方。

5 易于布置

那样在之后项目增大时修改游戏的外观就越发轻松。

有些时候你有叁个华侈的web应用想让外人把玩但大概不知该怎么着操作,幸运的是自己有过布署Python应用的欢跃体验。小编是Heroku的听众,因为Heroku能够做过多事务,包蕴创造虚构处境,安装Python信赖包,通过把app链接到Github源上让修改代码变得轻易,假如您愿意它也能够在并不是管理域名、DNS的场所下提供一种访谈线上web应用的方法,极其管用的荒唐日志以及一旦您想就足以特别轻易的扩大计算能源。Heroku乃至还提供了大气的恢弘库用于增加到网站里,举例存款和储蓄扩大(比方PostgreSQL也许Redis),站点监察和控制,email插件等等。当然除了Heroku还应该有许多另外代替方案让您的利用跑起来,你能够依照本身对应用调整级其余愿意以及价格因平昔决定。

大家率先将alien_invasion.py中的显示屏大小及显示器颜色举行修改。

图片 13说Python炫人眼目的十一个理由,反正看了你也会喜欢

首先在alien_invasion文件夹下新建python文件settings.py,并向里面增多如下代码:

6 数据库职业的绝佳选拔

图片 14Python|10分钟学会用python写游戏

后边小编直接关系过在行使Flask框架开垦时感受到的狡滑。而对于数据库专门的学问的话那或多或少更显然了。Python有一套完备的库用来拍卖数据库连接、查询和保管。小编前段时间重视运用PosgreSQL,而即正是对于PostgreSQL也可能有相当多少个库能够选拔。Psycopg是分明的PostgreSQL

然后再alien_invasion.py中程导弹入Settings类,并选择有关设置,修改如下:

Python适配库,它提供了一种精简的措施连接并运维一下中央的查询,适用于创设新部件的时候。若是您爱怜,能够选用另多少个方案SQLAlchemy库,它以ORM闻名海外。ORM的意趣就是您能够创立Python类来效仿必要查询的数额库表,然后就足以经过操作Python里的靶子来操作数据库中的数据。若是你想防止手写SQL查询语句,SQLAlchemy也提供了一种Python式的询问艺术,那对开拓者来讲尤为自然。数据库是全体应用的基本,所以花一些本领接纳最切合你的站点的方案是值得的。

图片 15Python|10分钟学会用python写游戏

7 急迅开荒

增添飞船图像

自己上边的保有观点都证实了您能够便捷搭建起五个足以运转的利用原型,那也是民众对Python的稳固印象。只要有一个像样于Flask的框架,一些用来拍卖客商授权和数据库连接的扩张以及用Heroku飞快运维,你就能够高速看见结果(特别是思虑到python本人的简洁性)。在您愿意尝试新东西并观望效果的时候,那将会是庞大的方便。

接下去,我们需求将飞船步向游戏中。为了在显示屏上绘制游戏用户的飞艇,大家将加载一幅图像,再利用Pygame绘制它。

图片 16说Python炫丽的12个理由,反正看了你也会喜欢

在打闹中差不离能够使用各种类型的图像文件,可是使用位图像和文字件最为轻巧,那是因为Pygame暗中同意加载位图。

8 直观的一道机制

就算别的门类的图像也能加载,不过急需设置额外的库。

Python自带文书档案完善的同步机制。

大家推荐去免费的图片素材网址上去找图像:

当你的站点有众多客商访谈并且更动内部消息的时候,你就须求思考怎么着维护你的多寡,那样哪个人在哪些日子足以访谈就变得清楚了解。Python有明显的语法来给数据结构加锁,设置条件变量以允许越多的事件同不时间进行等。这么些东西大概不会立马用上,不过把它们装在后背燃料箱里面迟早会发挥效用,终究没人想被死锁住。

图片 17说Python炫彩的12个理由,反正看了您也会欣赏

大家在主项目文件夹(alien_invasion)中新建二个文件夹叫images,将如下bmp图片放入其中。

9 异步效用的无尽选项

图片 18Python|10分钟学会用python写游戏

本身前面提到了创立大多数人觉得的“普通网址”(访谈站点里分歧的页面,填一些表单,点击有个别亮闪闪的按键等)的部分千真万确的缓和方案。而小编辈Josh.ai正在开辟一款私有帮手用来保管智能家庭,那象征实时报导在付出中异常主要。思量到那般的急需,上边的这种普通网址就不适用了,终归我们的关怀点是实时性并不是给客户提供精美的页面。幸而Python也提供了方案。异步通讯,比释尊讲,不管在别的时候客商都能够让乔希“关闭厨房的灯”,而Josh也要及时给用户有效的报告。守旧的伸手-应答循环并不拾叁分适用。有贰个盛行的Python项目能够用于拍卖这种气象——Tornado。在档案的次序主页的侧面你能够看见开垦者将这些框架归类为“异步网络库”,完美!它提供WebSockets,一种令你能够在任哪天候让客商端和服务器调换数据的不二诀要。其余叁个值得研商的秘密应用方案是gevent
websocket库,它应用轻量级的“茶绿”线程来快速处通讯难题。

接下去,大家创立飞船类ship.py:

图片 19说Python炫彩的11个理由,反正看了您也会喜欢

图片 20Python|10分钟学会用python写游戏

10 初学者的佛法

重构:模块game_functions

最后,许多篇章源赞扬Python是初大方的一级语言。如上所述,Python从任何语言借鉴了众多因素,那让初专家有众多精选能够品味。客户可以找到很棒的入门教程一边读书重大的编程范式一边读书如何将品种周密起来。展开终端开首测验有个别python代码非常有利,设置好贰个开首专门的学业的条件也很直观。解决了这么些以后,只要你愿意,只须求import
PyBrain,以后您就是二个神经网络的我们了。

在大型项目中,平日索要在丰富新代码前重构既有代码。重构的目的是为着简化代码的布局,使其特别便于扩张。

笔者们将落到实处一个game_functions模块,它将累积大量让游戏Alien
invasion运维的函数。通过创造模块game_functions,可避免alien_invasion.py太长,使其逻辑更易于驾驭。

函数check_events()

第一大家将处总管件的代码移到多少个名字为check_events()的函数中,指标是为着隔断事件循环

图片 21Python|10分钟学会用python写游戏

然后大家修改alien_invasion.py代码,导入game_functions模块,并将事件循环替换到对函数check_events()的调用:

图片 22Python|10分钟学会用python写游戏

函数update_screen()

将更新显示屏的代码移到一个名称叫update_screen()函数中,并将以此函数放在模块game_functions中:

发表评论

电子邮件地址不会被公开。 必填项已用*标注