分页: 1 / 3

[测试]工作中用声音控制计算机上命令的执行

发表于 : 2007-08-07 15:52
eexpress
http://www.ibm.com/developerworks/cn/op ... index.html 原文

http://www.cs.princeton.edu/sound/softw ... ek-1.3.tgz 没有configure,也没makefile,怎么搞呢。

赶紧搞啊。

http://www.emacswiki.org/cgi-bin/alex/c ... e.pl_patch

图片
创建简单的音调序列

下载 源代码并找到 cmdWhistle.pl 脚本。这是 Perl 主程序,允许您创建音调序列,侦听特定音调序列及 run 命令。本文将先向您介绍 cmdWhistle.pl 程序的用户空间使用和配置,然后再说明各个功能。

用以下命令运行 cmdWhistle.pl 程序:sndpeek --print --nodisplay | perl cmdWhistle.pl -c。此命令将启动侦听麦克风的 sndpeek 程序并将输出打印到 Perl 程序。此程序运行后,请生成一些简单的口哨声 —— 稳定的单音调或具有 1-3-2 停顿的音调。注意,您必须在噪声相对较少的环境中运行此程序,因此请插入耳机并确保 CD 驱动器盘片停止旋转。如果膝上型电脑的电池着火,请在运行此程序之前先拔掉感烟探测器。

用不同的速度和音调做试验来感受 cmdWhistle 程序捕捉事件的能力。体验程序的音调检测过程的微妙对于创建重复的复杂音调序列来说很重要。第一个音调序列应当很简单:两声低音哔哔,间隔为 0.5 秒。运行 sndpeek --print --nodisplay | perl cmdWhistle.pl -c,当看到 “enter a tone sequence” 时,吹两声口哨,音调之间有 0.5 秒延迟。自动超时将在 4 秒钟(可配置)后发生,并且将打印出类似以下示例的音调序列:25.00 25.00 _#_ 0 500000 _#_ <command here> _#_ <comment here>。

命令设置和音调序列检测

让我们来仔细研究该行:音调值、分隔符、时间值、分隔符、命令区域、分隔符和注释区域。下一步是要将这一行复制到 cmdWhistle.pl 程序的默认配置文件中:{$HOME}/.toneFile,也可能是 /home/<username>/.toneFile。用以上音调序列行创建 ~/.toneFile 之后,可以修改该行来运行程序。将命令区域文本更改为 /bin/echo "two low" 并将注释区域修改为描述性内容,如 25.00 25.00 _#_ 0 500000 _#_ /usr/bin/echo "two low" _#_ two low tones。

现在您已经修改了配置文件来给出通知,用命令 sndpeek --print --nodisplay | perl cmdWhistle.pl 以守护进程模式运行 cmdWhistle.pl 脚本。程序将在背景中静静地侦听来自 ~/.toneFile 列表的任何事件。尝试以同样的时间间隔并以相同的音调吹两声低音调口哨,您将看到文本 “two low” 打印到屏幕上。如果需要详细查看运行中的 cmdWhistle.pl 脚本,请用命令 sndpeek --print --nodisplay | perl cmdWhistle.pl -v 以守护进程模式运行该脚本。如果系统支持图形显示,请删除 --nodisplay 选项以获得声音输入的优秀 3-D 视觉效果。

发表于 : 2007-08-07 16:10
crazyMouse
解压后,
cd sndpeek-1.3/src/sndpeek

make linux-alsa, make linux-jack, make linux-oss, make osx, or make win32
中根据使用环境任选一

发表于 : 2007-08-07 16:11
eexpress
看到了这提示的。不是没明白吗。@@@
知道的,赶紧出个测试报告啊。 :lol:

发表于 : 2007-08-07 16:29
crazyMouse
图片

搞定

用alsa的话,看makefile.alsa中的

LIBS=-L/usr/X11R6/lib -lglut -lGL -lGLU -lasound -lXmu -lX11 -lXext -lXi -lm -lsndfile

这句,

照单抓药吧,完成了就可以编译了[/img]

发表于 : 2007-08-07 16:30
windwiny
src/snd.. 里面有makefile

发表于 : 2007-08-07 16:30
crazyMouse
晕....贴图贴错....

发表于 : 2007-08-07 16:33
aitilang
有人用了没?

发表于 : 2007-08-07 16:43
crazyMouse
编译好的

发表于 : 2007-08-07 18:56
eexpress
sndpeek '/home/exp/媒体/事件声音/Auf-wiedersehen.wav' 正常。3D的。可热键调整。

☎ sndpeek --print --nodisplay | perl cmdWhistle.pl -c
enter a tone sequence:
seconds: Invalid argument at cmdWhistle.pl line 53.

sub getEpochSeconds {
my $TIMEVAL_T = "LL"; # LL for microseconds
my $start = pack($TIMEVAL_T, ());
syscall(&SYS_gettimeofday, $start, 0) != -1 or die "seconds: $!"; <----------------- 53 行。
return( (unpack($TIMEVAL_T, $start))[0] );
}#getEpochSeconds

perl熟悉的来哦。

发表于 : 2007-08-08 9:14
crazyMouse
EE,你用的我编译的那个?我编译的那个是没改源程序的. 记得你贴的那篇IBM上的文章上讲,要改了原代码修改输出格式的.所以上面的问题,可能不是perl造成的.

你把IBM那个link给我一下,我再修改一下编译一次试试.

发表于 : 2007-08-08 9:53
eexpress
哦。就是1楼那个里面的哦。

发表于 : 2007-08-08 9:59
skyx
ee 发布一个声控软件吧, 3块钱都不用了,问题是在播放音乐时, 还能识别吗? 是不是要大声吼叫才行 :lol: :lol: :lol:

三年前我的linux手机就是可以语音拨号和语音控制的 也可以听短讯(不用预先录音,基本上等同于语音输入法) ,linux上的语音输入法很早就有了............................moto 中国研究院可能申请了专利。

发表于 : 2007-08-08 10:01
eexpress
skyx
一边去。就知道风言风语的。

发表于 : 2007-08-08 10:05
skyx
不是,我是说有没有可能把moto 的linux 语音技术做个反向工程??反正都是linux的

发表于 : 2007-08-08 10:07
eexpress
怎么会,那都是芯片支持的。芯片又不兼容。