电路

如何建立一个文本语音IOT扬声器:6个步骤

кириллица

кириллица

目录:

Anonim

组装部分非常简单:开发板和音频扬声器必须通电。我选择了一个5V 2A手机充电器和一个USB集线器来实现这一目标,但只要它们通电就会发生任何事情。

除了电源之外,还需要音频电缆将开发板的音频输出连接到扬声器的音频输入。

我没有为整个东西建造一个外壳,你可以把它打开或放在一个盒子里,如你所愿。例如,你可以在ebay上使用这样的塑料盒,你需要为电缆和扬声器输出钻一些孔

第2步:准备好开发板

准备好我的意思是:

- 操作系统启动并运行

- 配置wifi

- 启用ssh

- 安装了python,pip,git和festival

每个板都有自己的设置机制。幸运的C.H.I.P.附带预安装的操作系统,您需要做的就是配置wifi并启用ssh。我不会详细介绍如何配置这些,因为每个主板都有所不同。在C.H.I.P.他们在这里有一个设置文档。

要在基于debian的开发板上安装pip,请使用apt-get来安装我们需要的软件包。我假设已经安装了python> = 2.7。

sudo apt-get install -y pip git festival

第3步:安装和配置软件(python服务器)

首先,我们需要下载项目并安装python依赖项:

cd / root
git clone http://github.com/danionescu0/home-automation cd home-automation / remote-speaker sudo pip install -r requirements.txt

这个项目位于一个更大的家庭自动化项目中,我们现在不会谈论这个,但如果你愿意,可以随意探索它并提出一些问题。
然后是配置部分,通过编辑config.py,您可以更改API身份验证的默认端口,用户名和密码。端口可以​​保持为80,但必须更改用户/通道组合以确保安全性。

vi config.py
host ='0.0.0.0'port = 80 http_user ='test_user'http_pass ='test_pass'

它的最后一部分是我们的web服务器在重启时自动启动,我们将使用systemctl来做到这一点:

vi remote-speaker.service
Unit说明=启动远程扬声器After = network-online.target Service Type = simple ExecStart = / usr / bin / python“/root/projects/remote-speaker/server.py”Install WantedBy = multi- user.target

用您自己的路径替换/root/projects/remote-speaker/server.py,例如:/ root / home-automation / remote-speaker
现在将服务配置复制到/ etc / systemd / system /并启用它:

cp remote-speaker.service / etc / systemd / system /
sudo systemctl enable remote-speaker.service sudo systemctl start remote-speaker.service sudo systemctl status remote-speaker.service

如果一切顺利,你会看到这样的事情:

●remote-speaker.service - 启动远程扬声器
加载:已加载(/etc/systemd/system/remote-speaker.service;已启用)活动:活动(正在运行)自2017年3月19日星期一05:39:58 UTC; 2s ago Main PID:29626(python)CGroup:/system.slice/remote-speaker.service└─29626/ usr / bin / python /root/projects/remote-speaker/server.py Jun 19 05:39:58 chip systemd 1:已启动启动远程扬声器。 Jun 19 05:39:58 chip python 29626:启动v0.12.13服务器启动(使用WSGIRefServer())… Jun 19 05:39:58 chip python 29626:收听http://0.0。 0.0:80 / Jun 19 05:39:58 chip python 29626:按Ctrl-C退出。

第4步:测试实施

好吧,现在我们的python服务器正在侦听端口80以进行API调用,我们将测试它,但首先是关于如何调用服务的一些事情,有两种选择

一个) 从本地newtork调用该服务,例如从您的笔记本电脑调用该服务,该笔记本电脑恰好与开发板位于同一个无线新设备上。在这种情况下,您需要找到内部IP地址。

使用ifconfig
………………………………………….. ……….. wlan0链接封装:以太网HWaddr cc:79:cf:23:74:e9 inet addr:192.168.0.107 Bcast:192.168.0.255掩码:255.255.255.0 inet6 addr:fe80 :: ce79:cfff:fe23:74e9 / 64适用范围:Link up BROADCAST RUNNING MULTICAST MTU:1500公制:1 ………………………. ……………………………

所以在这种情况下,本地IP地址将是“192.168.0.107”,为了测试API是否正常工作,您可以使用curl在本地网络中发出http请求,如下所示:

sudo apt-get install -y curl
…. curl -i --user test_user:test_pass“http://192.168.0.107/api/tts?text=my+speech+test%0D%0A×=1”HTTP / 1.0 200 OK日期:星期二, 2017年6月20日18:49:27 GMT服务器:WSGIServer / 0.1 Python / 2.7.9内容长度:0内容类型:text / html;字符集= UTF-8

--user将添加用户名为“test_user”且密码为“test_pass”的认证头,然后是请求的GET主体:
*协议:“http”

* IP地址:192.168.0.107

*隐式端口:80

* url:/ api / tts

* url编码获取参数文本和时间,文本表示文本到语音文本,时间表示有多少时间重复它如果你没有听到语音播放进入开发板并发出问题

sudo systemctl status remote-speaker.service

它将发出服务器日志的一些调试行
b) 从外界打电话给服务。您将需要知道您的外部IP,然后在路由器中配置一个端口转发。通过搜索谷歌“什么是我的IP”,您可以找到外部IP的最简单方法。转发它的端口有点复杂,您可以查看本教程以获取更多详细信息。

基本上你告诉路由器,对于本地IP“192.168.0.107”,你想将本地端口80转发到外部端口80或其他一些端口。每个路由器接口的配置都不同。

第5步:它是如何工作的(可选)

如果您对代码不感兴趣,可以安全地跳过此步骤。

它用python编写的项目实际上非常简单。我们有两个主要文件的代码:server.py和TextToSpeech.py​​ Server.py加载配置并使用瓶框启动http服务器。它暴露了一条路线“/ api / tts”。

当调用它检查授权头并根据配置验证它时,然后调用TextToSpeech obect TextToSpeech.py​​包含围绕festival命令的包装器,你可以在控制台中检查它:

回声“一些文字”|节日 - 来

这就是它,其余的文件是用于配置。

第6步:使用扬声器

我们谈到了如何构建这个东西,但现在有什么用途。我会尝试提出一些想法和例子:

如果你知道一点点编程,你可以编写一个小的python脚本来做任何事情,如闹钟,阅读电子邮件,告诉你笑话,关于你facebook账号的通知等。

如果你的编程技巧不是很好,那么你可以使用类似thingpeak的东西。 ThingSpeak是一个开源的“物联网”Web应用程序。如果您没有帐户,请访问帐户创建页面。

Thingspeak支持您在系统中定义一些“动作”,这些动作可以是http调用,它们被称为“thinghttp”。好的,我们可以定义对语音的http呼叫,说“请醒来”并使用“timecontrols”来定义何时应该进行呼叫,它支持一次呼叫或重复呼叫。界面很容易使用。请查看视频,了解如何使用这一部分的事物web界面。

但这并不是这个在线工具的全部功能,你可以使用一个名为“thingtweets”的应用来控制对你在tweeter上发布内容时定义的语音的http调用。更复杂的工具是“反应”,如果连接到thingspeak的某个传感器报告某些值,您可以定义阈值。

这是一款功能强大且功能多样的工具,可以在30美元以下构建,它可以通过API实现语音通知,因此如果您具备一些编码技能,它将打开一个可能性的世界。