仅使用扬声器和麦克风进行软件传真需要多少延迟?

16

故事

我没有传真设备,因此很难与那些电话上有传真噪音的人进行通信。即使在2012年,人们仍在使用消耗树木和纸张进行通信的设备,这一点都难以想象。因此,我想通过传真向他们宣布新时代的互联网、电子邮件和视频会议终于到来了。

http://xkcd.com/454/

问题

由于我没有传真设备,显然最快捷的选择是通过在线服务发送消息。另一方面,传真设备基本上只包括扬声器、麦克风和一些数字信号处理代码。唯一明显的问题就是代码。传真协议已知——甚至可以用Python实现,但迄今为止,我还没有看到使用扬声器和麦克风进行传真的示例。 CPU性能不在问题范围内——现代PC具有足够的计算能力,可以计算2400比特/秒的足够噪音。因此,我唯一的技术解释是延迟(从麦克风到DSP代码再到扬声器的噪音传输时间)太长,以至于会干扰传输。

问题

如果上面所说是真的——传真协议需要什么延迟?
有没有工具可以测量麦克风-扬声器延迟?
我还错过了什么?
是否可能在Python中实现所有内容?

P.S. 在我查阅ITU时找不到任何信息(除了我发现ITU为您寻找)。


1
这个问题太棒了。我真心希望每一个问题都有这么多的背景和思考。我喜欢你包含图片的事实,这是我读过的最好的问题之一。 - Jakob Bowyer
3
您所描述的内容,大致上就是模拟调制解调器卡片已经做了十年或二十年的事情。它们实际上是软调制解调器,在软件中进行编码,并拥有简单的硬件来将信号调制到电线上,而不使用声学耦合器;) - mensi
1
问题很可能不是计算上的,可以看看可怜的WinModem,它将调制解调器信号生成从CPU移交过来,而当时的CPU速度非常慢。一旦你说“用扬声器和麦克风传真”,你就陷入了一个物理问题,即在14kbit/s运行的调制解调器中进行声学耦合。我从未见过有人尝试跨越这个障碍。 - msw
一台低端传真机或传真调制解调器的价格要比你花费时间通过麦克风和扬声器实现传真便宜得多,而且是非常非常非常非常非常便宜!(eBay目前搜索“传真调制解调器”的最热门结果是一个包括运费在内只需12美元的USB设备!) - kindall
@JakobBowyer,感谢夸奖,这张图片来自xkcd - anatoly techtonik
显示剩余8条评论
2个回答

2
Fabrice Bellard(没错,就是QEMU和Javascript-PC模拟器的那个家伙,他很棒)在软件调制解调器方面做了一些工作。根据他的项目页面,有关于声卡接口以及各种协议的调制/解调代码。我没有查看过源代码,但这可能提供有用的片段。还有linmodems.org网站提供更多指向。

Linmodems.org链接了已故Tony Fisher的软件,他似乎已经实现了你想要达到的发送部分,尽管是针对一个古老的工作站。请查看manpage

此外,GNU Radio邮件列表中的这篇文章来自一个看起来也想要相同东西的人,尽管当时还没有xkcd来描述它 :)


不错的链接。它们对于制作手动测试的蜂鸣器可能很有用,但仍然没有解释为什么没有纯麦克风+扬声器解决方案。我已经到了解释V.21协议描述中的时间延迟就足以回答这个问题的地步。 - anatoly techtonik
@techtonik,看一下GNU无线电邮件列表中的最后一篇帖子,他们将电话线直接或多或少地连接到声卡。我猜你也可以通过声学耦合实现相同的效果,尽管会有更多的损失和噪音。 - mensi
我怀疑没有扬声器/麦克风设置的部分原因是麦克风无法区分其自己正在传输的信号和正在接收的信号。也就是说,它只能半双工工作。除非扬声器和麦克风彼此隔离,否则您无法同时播放声音和记录不同的声音。 - Nathan

1

1
任何支持传真操作标准接口之一的调制解调器均可使用。问题在于我没有调制解调器。 - anatoly techtonik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接