树莓派:第三篇 用树莓派做个语音助手
树莓派功能十分强大,作为一个微型电脑,独特的阵脚设计使得树莓派开发的自定义程度非常高。本篇博客通过使用python语言,封装一个简单的语音助手程序。
零、物品清单
123451:一个树莓派(3代、4代皆可)2:免驱的usb声卡(声卡需接在树莓派usb接口)3:麦克风(接在声卡上)4:有线音响(音响可连在声卡上,也可连在树莓派的3.5mm接口上)(树莓派播放设备默认使用3.5mm接口,具体过程需要自定义播放设备)
如果要设置usb声卡输出,参考教程配置声卡教程,如果使用默认3.5mm接口输出可以忽略。
设计语音助手有如下过程:录音、语音识别、图灵机器人对话、语音合成,以下对各个过程进行介绍。
一、pyaudio录音
使用python语言进行录音,主要是将说话者声音输出成一段音频文件。对于python来说,这很容易。通过引用pyaudio库,可以进行录音、播放、生成wav文件等。
首先,我们在树莓派上需要下载pyaudio库: pip3 install pyaudio
在pyaudio的官网介绍上有对pyaudio的详细介绍pyaudio官网,以官网示例:
创建一名为rec的python ...
树莓派:第二篇 使用网页控制你的树莓派
树莓派就相当于一个简单的带GPIO口的Linux电脑,他的拓展性非常的强。我们可以用它来实现很多功能,特别是将树莓派当做是一个服务器,通过网页与树莓派进行交互。这个是一个用网页控制树莓派小车的程序。
今天的内容非常的少,所以很快就可以看完。
网页内容
我们首先要在网页上绘制一些按键,通过按键来控制树莓派。绘制方法比较简单,建议自学。将一下代码保存并命名为index.html
index.html12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale ...
大数据:第二篇 使用echarts工具实现数据可视化
echarts上手简单、自定义高。
本篇学习笔记适合前端小白,使用echarts不需要了解太多的js、HTML。教程分为两个部分:echarts学前准备,echarts学习记录
echarts学前准备
一、使用编辑器
echanrts可视化工具,通过HTML语言进行编写。一般编辑HTML的编辑器有Adobe Dreamweaver、Hbulider等编辑器(编辑器下载使用请百度)
具体编辑器可参考网址:编辑器参考 。
二、下载官方echarts.js文件
echarts工具,实则是js文件,通过编辑网页HTML调用js文件,来实现。
官网:官网下载链接
官网参考下载方式较多,建议使用方法一:从下载的源代码或编译产物安装,下载带有原码的js文件。(如有下载疑问请自行百度)
三、5分钟上手echarts
上手echarts请参考,官网——文档——教程,参考案例十分简单。
考虑到很多小白不会创建HTML项目,以下附上教程:
具体在Hbulider进行如下操作
1、新建HTML项目,如图
2、将必要的echarts.js文件粘贴到js目录下
(我们默认放到js,养成归档习惯)
3、编辑 ...
大数据:第一篇 配置一个spark+Scala的环境
今天教大家配置一个IDEA的环境,以及如何新建一个工程,废话不多说,搞起来
1.下载IDEA
这里推荐一个微信公众号软件安装管家,关注后给它发送软件名,像下面这样:
选择一个最新的版本,最好是英文版
ps:IDEA已经有2020版,想要最新版的可以去官网下载再百度破解方法
点进去之后,就可以看到百度网盘的链接以及安装方法,写的很详细,所以我这里就不再赘述了
2.新建工程
3.添加scala文件夹
4.添加scala SDK
ps:为了版本匹配,不是对工程很了解的同学尽量下载2.10.4 2.12.10,后面我添加的依赖都是这个版本
如果没有这个选项的话,要先安装Scala插件
5.修改工程目录
6.设置settings.xml文件
ps:有些同学是 Create ‘settings.xml’
把你原先的settings.xml的内容删掉,替换成下面这段
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545 ...
机器学习:第三篇 使用随机梯度下降法(SGD)求解方程
使用随机梯度下降法(SGD)求解一元三次方程的根。在知乎上看的。
求解分析
原题目是求解: a3+a2a^3+a^2a3+a2 这里为了方便于我们理解,我把方程简化成2元方程:a2=49a^2 = 49a2=49。使用随机梯度下降法求解方程。
我们可以把我们平时遇到的神经网络看成是一个函数 y=fθ(x)y=f_\theta(x)y=fθ(x),其中y是神经网络的输出,θ\thetaθ是神经网络的参数,而x是神经网络的输入。
我们就可以把题目看成是有一个神经网络,假定函数为 y=fθ(x)=θ2−49y=f_\theta(x)=\theta^2-49y=fθ(x)=θ2−49,要求的这样一个最佳的θ\thetaθ 使得无论输入x的任意值,使得y都逼近于0。
我们首先需要定义一个损失函数来对参数进行评估:cost(x)=fθ2(x)cost(x)=f_\theta^2(x)cost(x)=fθ2(x),当cost(x)的值越小,那么θ\thetaθ的表征预测值和准确值就越接近。
神经网络的目标就是求得一个θ\thetaθ使得上面的损失函数最小。
使用随机梯度下降法迭代求取θn\t ...
树莓派:第一篇 用树莓派点亮一个LED灯
树莓派已经完全脱离了一般的嵌入式单片机体系了,它对于嵌入式软件开发已经走在了一个非常高的高度了。用树莓派做嵌入式开发的好处在于你不需要关心硬件层面的东西,只要按照引脚接好,然后调用特定的函数就可以使用了。。。
Tips:本文用到的工具都可以在文章末尾的压缩包中找到。
前言
我把嵌入式开发分成硬件开发以及软件开发,STM32属于完全型的,既要懂得硬件原理,会操作寄存器,会通过使能特定的信号来实现对硬件不同状态的控制。也要能够对算法逻辑非常的清晰,中断处理,算法程序设计等等,还有各种稀奇古怪的知识,比如volatile,这个关键字基本上不会在软件开发中用到,但是在STM32中经常被提及,因为STM32的中断啥的特别多。
树莓派和Ardunio是可以属于那种纯粹的上层软件开发,你可以只关心代码怎么写,而不需要考虑我该怎么驱动他。当然,如果你找不到对应的库文件,你还是需要自己去驱动硬件的,就像小学期的一个超声波模块一样,死活找不到合适的树莓派的超声波模块,只能自己动手写一个驱动程序了。
还有一个是树莓派使用的语言是C或者Python,Python用的比较多,所以要学树莓派还需要一点Pytho ...
Python:第二篇 超简单的图像手势识别
如果我们在日常生活中,想要写一个手势识别的程序,需要从哪开始?先选一个合适的神经网络模型,然后拍摄大量的手势图片,手动分类之后进行训练?这对于想学习机器学习的同学来说是不错的。但是这种方法需要耗费大量的精力还有时间成本,如何快速有效的写一个图像手势识别程序?
说明
这篇文章是教大家在做一些项目的时候,如果我们遇到了一些需要用到机器学习的地方,例如图像识别,语音识别,人脸定位,行为分析,数量统计等等,或者说你要自己训练一个神经网络,完全可以寻求别人已经训练好的模型。可以在百度云AI开放平台上面轻松找到。在阿里云上也可以找到类似的平台。
这里可以找到你需要用到的绝大部分AI接口。这里以图像手势识别为例,简单介绍一下使用方法。
准备
一个百度云账号
合理搭建的Python环境
创建一个人体分析应用
在百度ai开放平台上创建一个应用,名称随意,类型随意,接口选择人体分析,应用描述随便写点。
人体分析每天可以免费使用10000次,基本上足够我们日常使用了。
在创建完之后,我们可以在应用下面获得APP_ID、API_KEY和SECRET_KEY。
使用接口
接口的使用其实不难,如果不会使 ...
Python:第一篇 网络爬虫入门
这只是一个最最最基础版本的Python爬虫入门,代码是我两年前写的,最近两天没事翻出来再写(shui)一篇博客。就是爬取王者荣耀英雄的皮肤。然后备注也是写的十分的详细,所以就不做过多的解释,如果想提高自己Python水平的同学可以照着敲一遍。
获取加载文件
打开王者荣耀官网。
然后随便点一个英雄的界面,然后按f12打开开发者调试工具。
然后我们把这个花间舞的头像指向的地址复制出来,就是后面那个地址,然后把它粘贴在地址栏,就可以看到我们得到了一张花间舞的高清图片,我们要爬取的就是这张图片。
获取图片地址信息
我们一般会多打开几张图片,然后观察他们的共性。
我们可以发现,就只有上面的141和bigskin后面的代码不一样,那我们就可以猜测414和199应该就是英雄的代号,2和3就是指第几张图片,这就好办了,那我们又怎么知道英雄的代码和皮肤的代号呢。
我们先返回到这个英雄界面,我们知道,网页要加载这些图片,肯定不是一开始就这样排好的,肯定有一个文件里面存了这些图片的信息,所以一般只需要更新那个文件就可以更新这个网页的内容了,我们先把那个文件找出来,一般这种文件都是json或者js为后 ...
天上的星星不见了
最近森林里出现了一件怪事,夜空中的星星每天晚上都会少一颗,最先发现这件事的是小狐狸。
为什么小狐狸会在意这种根本没人在乎的事情呢?原来,小狐狸种的葡萄快成熟了,他每天盯着这些青葡萄流口水,他实在是太喜欢吃葡萄了,可是现在又没法吃,最后导致自己经常性失眠。于是,小狐狸用起了最原始的办法,每天晚上躺在葡萄架下面数星星,一颗星星,两颗星星,三颗星星…等到小狐狸数够3000颗的时候,小狐狸就打着呼噜睡着了。
可是这一次,当小狐狸数到2999颗星星的时候,却找不到第3000颗星星了,到了第二天,只剩下2998颗星星了,小狐狸连续观察了好几天,发现每天都会比昨天少一颗星星。
这下子小狐狸开始着急了,如果这样下去,天上的星星越来越少,以后自己岂不是又要失眠了?
小狐狸的眼睛滴溜溜地转:“一定是谁把星星给偷走了,看我怎么把你找出来。”
小狐狸给葡萄树围上了木栅栏,带上背包和干粮就出发了。
第一天,小狐狸先去了长颈鹿的家,因为长颈鹿的脖子长,看得也远,说不定他知道是谁偷走了星星。
“长颈鹿先生,请问你知道是谁偷走了星星吗?”
“什么?星星少了吗?我看这夜空中的星星很多呀,怎么会少呢?”长颈鹿抬头看了 ...
嵌入式:第二篇 通信协议汇总
由于这几天接触到了各种通信协议,但是却没有搞懂,造成了一点尴尬。。。来总结一下各个通信协议之间的区别。
IIC协议(也叫I2C协议)
IIC协议(Inter-Integrated Circuit)协议,是由PHILIPS(荷兰皇家飞利浦)公司提出的。为了让主板、嵌入式系统或手机用以连接低速周边外部设备而发展。IIC协议是我们现在使用最多的通信协议。
物理接口
IIC总线只使用两条双向漏极开路的信号线(串行数据线:SDA,串行时钟线:SCL),并利用上拉电阻。IIC总线仅仅使用SCL,SDA两根线,就实现了数据间的交互。而且IIC支持的电压范围相当大,例如+3.3V或者+5V都可以。
SCL(Serial Clock):串行时钟线,传输CLK信号,一般是主设备向从设备提供
SDA(Serial Data):串行数据线,传输通信数据
物理接口示意图
IIC协议符合严格的通讯时序图,如果需要传输数据,就要符合通讯协议。
具体的时序图不需要知道的太清楚,了解即可。i2c时序图的详细讲解
地址及数据方向
IIC总线上的每个设备都有自己的独立地址,主机发起通讯时,通过 SDA 信号线发送设备地 ...