建立一个覆盆子Pi-powered巴克表,第4部分

在本系列的最后一部分,我们开始录制声音和它保存在文件;现在我们需要把这些样本从零售物价指数我们可以对它们进行分析。

  • 在Facebook上分享
  • 在Twitter上分享
  • 分享在LinkedIn
  • 在Reddit分享
  • 通过电子邮件分享
  • 印刷资源
叫主
misshappiness

我的史诗系列的第3部分“建立覆盆子Pi-powered巴克表”中,我讨论了如何使用arecord命令捕获音频和我发现我得到更好的声音中的一个古老的USB摄像头比华丽的(但非常便宜)我开始与USB声卡。我伤口在第3部分收集60秒在WAV声音文件格式在子目录树莓π,每个命名的样本的开始时间(如。2016 - 09 - 07 - 04 - 42 - 27. wav)。

我们需要这些文件的零售物价指数我们可以对它们进行分析。从理论上讲,这可以在黑板上完成但现在我们将FTP到其他的机器进行分析。所以,让录音的地方我们可以切割它们,我们要用ncftpput,包括FTP工具ncftp包中。安装ncftp我们将运行以下命令在命令行零售物价指数(一如既往,在安装一个新的包,你应该跑步sudo apt-get更新第一个):

sudo apt-get安装ncftp

我们的记录是$ HOME /树皮所以我们现在可以FTP到另一台机器上使用下面的命令行:

ncftpput - u admin \ \ dd \ - v - p密码\ ftpserver \ /树皮\ $ HOME /皮/ *。*

让我们分解(参见手册页ncftpput命令行选项):

  • - u管理- p密码目标FTP服务器的登录凭证吗
  • dd导致本地文件成功上传后被删除。
  • - v抑制的显示上传进度计
  • ftpserver要么是目标FTP服务器的IP地址或名称吗
  • /树皮远程目录来存储文件吗
  • $ HOME /皮/ *。*的规范文件通过ftp传输

现在我们需要做的是自动化,以便每次录音完成后,它被发运到FTP服务器。这就是我们可以用一个很酷的命令,inotifywait,监控更改的文件和目录。inotifywait使用inotify”,Linux内核子系统行为扩展文件系统通知更改文件系统,并报告这些更改应用程序”(维基百科)。这个工具是在包inotify-tools这是安装:

sudo apt-get安装inotify-tools

inotifywait安装,我们可以建立一个BASH脚本如下:

arecord - d plughw: 1、0 - q -缓冲时间= 5000000 - f dat - c 1 - t wav——max-file-time 60 use-strftime $ HOME /皮/ Y % - % - % d % H - % - % S。wav &

而真正的

NEWFILE中= ' inotifywait % f - q -格式- e close_write $ HOME /树皮
ncftpput - u admin - p密码dd ftpserver /树皮$ HOME /皮/ NEWFILE中美元
完成

我讨论了线开始arecord之前的帖子&最后的命令告诉BASH作为后台任务运行它。的在做…创造了一个无限循环和开始NEWFILE中分解如下:

  • NEWFILE中=设置一个临时的环境变量
  • 该撇号导致一切到下一个撇号评估作为一个整体被传递给命令之前,在这种情况下,设置的值NEWFILE中。没有这个,NEWFILE中将“inotifywait”而不是价值的输出inotifywait
  • inotifywait块,直到一个特定的文件系统事件发生
  • q阻止程序打印基本状态信息,我们不需要
  • ——缓冲时间=5000000分配一个缓冲区的5秒(见下文)
  • ——% f格式指定文件系统事件发生时,输出inotifywait将文件的名称,有受到影响吗
  • - e close_write这指定了事件等,文件关闭
  • $ HOME /树皮要监视的目录吗

所以,当一个文件创建的arecord是封闭的$ HOME /树皮子目录,inotifywait停止封锁和打印关闭文件的名称将被存储在环境变量中NEWFILE中和脚本将简历。命令ncftpput将执行并将文件名发现的inotifywaitFTP服务器,瞧!完成工作!

运行上面的BASH脚本的覆盆子π生成输出如下:

pi@RPi-01: ~ sh barkometer.sh美元
/home/pi/bark/2016 - 10 - 01 - 13 - 18 - 57. - wav: 5.49 MB 5.28 MB / s
/home/pi/bark/2016 - 10 - 01 - 13 - 19 - 57. - wav: 5.49 MB 5.19 MB / s

现在,您可能已经注意到,在参数arecord在上面的脚本中,我添加了一些不是我在命令行中讨论第3部分。我说的是——缓冲时间=5000000因为我原来的arecord命令行你偶尔会看到超支报道是这样的:

pi@RPi-01: ~ sh barkometer.sh美元
/home/pi/bark/2016 - 10 - 01 - 13 - 18 - 57. - wav: 5.49 MB 5.28 MB / s
/home/pi/bark/2016 - 10 - 01 - 13 - 19 - 57. - wav: 5.49 MB 5.19 MB / s
/home/pi/bark/2016 - 10 - 01 - 13 - 19 - 57. - wav: 5.49 MB 5.19 MB / s
泛滥! ! !(至少191.372女士长)
/home/pi/bark/2016 - 10 - 01 - 13 - 20 - 57. - wav: 5.49 MB 5.77 MB / s
/home/pi/bark/2016 - 10 - 01 - 13 - 21 - 57. - wav: 5.49 MB 5.72 MB / s
/home/pi/bark/2016 - 10 - 01 - 13 - 22 - 57. - wav: 5.49 MB 5.79 MB / s
泛滥! ! !(至少38.328女士长)

这些错误显然是由于资源不但是究竟是什么原因导致他们简直太神秘。我认为这可能是由于I / O限制的SD卡,但是当我试着使用/ tmp子目录(这是基于ram)来存储音频文件我仍然得到相同的结果;如果你有任何了解这个问题,请让我知道。我找到的解决方案是添加一个5秒的缓冲(在命令行中指定的值在微秒)修复问题的成本使用更多的内存。

在本期文章中我们最后的任务是设定零售价格指数(RPi)开始时我们的脚本运行。有多种方法来达到这个目的,但我们将使用一个最简单的,编辑用户自动启动文件:

纳米~ / config / lxsession / LXDE-pi /自动运行

Raspbian的默认桌面插件,自动启动文件的内容是这样的,除非你已经改变:

@lxpanel——概要LXDE-pi
@pcmanfm LXDE-pi——桌面配置文件
@xscreensaver飞溅
@point-rpi

我们需要在文件的末尾添加一行:

@bash /home/pi/barkometer.sh

这将调用BASH的一个新实例,并执行脚本。因为这是一个用户的上下文中,这意味着用户必须登录,自动登录是一个好主意。一个重要的问题是,用户登录才能发生Raspbian已完成所有子系统所以我们可以肯定的是,开始,除非有一个问题,我们需要的服务,比如将建立一个无线连接。

现在有很多我们可以做更多的脚本的健壮aschecking如果FTP服务器访问和采取行动的,如果不是,我们运行日志的输出命令,将TFP的日志服务器,整理遗留任何WAV或日志文件重启,等等,但就目前而言,我们已经取得了我们的主要目标;记录周围的音频环境和保存到远程服务器进行分析。

在本系列的下一部分中,我们将开始弄清楚如何分析我们的录音。

评论?想法吗?我写信或低于然后跟我来评论推特脸谱网

相关:

版权©2016 IDG通信公司。足球竞彩网下载

企业网络2022的10个最强大的公司