学柯南,用电脑拨电话

作者:斯克迪亚

在柯南的剧场版《战栗的乐谱》之中,柯南通过唱出特定频率的声音来模拟电话的按键音,从而由远处拨通了报警电话。我看字幕上写着“切实可行”,便对此产生了兴趣。

我想我们完全可以用编程来实现一个电脑拨号键盘,通过按键从音箱中发出对应的电话按键音,传入电话听筒实现拨号。

也许这样只会对电话键盘进水的人有用吧(比如我-_-#),但是进一步,我们还可以实现通过电脑管理一个常用电话薄,然后通过便捷的关键字过滤查找电话(比如输入“王”、“微软”、“136”等字符串,快速过滤掉不含关键字的联系人),并呼出,相信没有哪个电话机会比电脑的管理功能更强大吧。

还可以为OutLook写一个插件,来实现对联系人的拨叫。

网上搜了搜,原来有人同样对此感兴趣,并已经做了实验:http://www.xycad.com/html/93/t-32793.html

他是根据片中的这个表格来生成的按键音:

而我发现Adobe的Audition 3.0中就内置了这样的功能,只需打开菜单“生成 > 脉冲信号..”:

可以看到,这里已经有那个表格了,而默认的脉冲信号设置也就是使用的这个表格。

输入“13800138000”,调整一下其他选项,按“确定”生成:

局部放大看看:

只需按此方法将每个按键音生成,并独立保存为.wav文件,就可以嵌入在.Net程序中,通过SoundPlayer播放了。

我为此编写了WaveCallSound.dll,专门实现发音功能,其中已内嵌了这些独立的按键音资源:

这里面只有一个WaveCallSound静态类,包含两个扩展方法,分别对应string和char类型,作用就是播放对应的电话号码按键音:

使用WaveCallSound.dll时只需将其引入项目,然后引用WaveCall命名空间,之后只要这样使用就可以了:

WaveCallSound.播放('9',true);
WaveCallSound.播放('8',true);
WaveCallSound.播放('7',true);
WaveCallSound.播放('*',true);
WaveCallSound.播放('#',true);
WaveCallSound.播放('3',true);
WaveCallSound.播放('5',true);
'6'.播放(true);
'3'.播放(true);
'4'.播放(true);
WaveCallSound.播放("13988991029");
"10060".播放();

然后我还制作了一个WPF程序WaveCallKey(中文名暂定为“我靠”?),用以提供拨号界面:

使用方法如下:

1.拿起电话听筒,使话筒贴近音箱:

2.使用WaveCallKey程序进行拨号。

3.正常通话即可。

虽然固话逐渐会被手机替代,但现在也还是有很大份额的,所以这样的应用也还是有些意义的(手机话费全报销的同志就不要喊话了~)。

感兴趣的朋友可以在此基础上做出电话薄管理或者OutLook插件,相信那会在业务员中大卖的哈^^

WaveCallKey拨号程序及WaveCallSound.dll下载:http://files.cnblogs.com/SkyD/WaveCallKey.rar
独立的拨号音wav文件:http://files.cnblogs.com/SkyD/PhoneWave.rar
本文的PDF版本下载:http://www.box.net/shared/e43j0xmsc4

相关日志

楼被抢了 12 层了... 抢座Rss 2.0或者 Trackback

  • Someone

    很骚,真得很骚!

  • kof2008

    汗一个.作者真的是太雷了.不过这份精神值得赞赏:)

  • ssjjtj

    受教了。强呀!!
    要刻苦学习了!!!!

  • 星空无语

    这个太牛了,呵呵。。。。看在Conan的份上,支持一下。。

  • 天使之翼

    这个好像N年前就可以了,记得N年前,我还不知道电脑是什么,邻居家有人有手机,不过那时的手机费贵,电话机按键坏了,他就用手机按号,把喇叭放到听筒那里,手机按号,按完就自动拔出去了,记得还是用诺基亚大个的那种~~呵

  • 天使之翼

    就是用音频拔号,可以模拟出音频就可以拔号~~

  • latteye

    看完文章,只能说:“我靠!”

  • cocobear

    有意思,不知道现在的手机有没有支持音频拨号的/

  • ck

    这个也是用电脑准确模拟出来的 要是想柯南那样 叫出来 那就是真牛逼了

  • ice

    鸡肋

  • 乖乖

    看了,很神奇呀

  • 我嘞个去。太强悍了。。
    这都行。
    想起《Learning Python the hard way》里序言的一句话,会编程真TM太酷了。

发表评论