在柯南的剧场版《战栗的乐谱》之中,柯南通过唱出特定频率的声音来模拟电话的按键音,从而由远处拨通了报警电话。我看字幕上写着“切实可行”,便对此产生了兴趣。
我想我们完全可以用编程来实现一个电脑拨号键盘,通过按键从音箱中发出对应的电话按键音,传入电话听筒实现拨号。
也许这样只会对电话键盘进水的人有用吧(比如我-_-#),但是进一步,我们还可以实现通过电脑管理一个常用电话薄,然后通过便捷的关键字过滤查找电话(比如输入“王”、“微软”、“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下载:https://files.cnblogs.com/SkyD/WaveCallKey.rar
独立的拨号音wav文件:https://files.cnblogs.com/SkyD/PhoneWave.rar
本文的PDF版本下载:http://www.box.net/shared/e43j0xmsc4
http://www.uushare.com/user/icesee/file/1018323
PS:话说柯南都演了10年了,电视上播出有500多集了吧,他们居然还在上一年级!!万年留级生啊,太缺了~
转载请遵循此协议:署名 - 非商业用途 - 保持一致
并保留此链接:http://skyd.cnblogs.com/