Python 仅使用扬声器和麦克风进行软件传真需要多长时间?

Python 仅使用扬声器和麦克风进行软件传真需要多长时间?,python,protocols,signal-processing,fax,Python,Protocols,Signal Processing,Fax,故事 我没有任何传真硬件,所以我很难与有传真噪音的人在电话中进行沟通。很难想象在2012年,人们仍在使用以树和纸为食的通讯设备。所以,我想通过传真向他们宣布,互联网、电子邮件和视频会议的新时代终于到来了 问题 由于我没有任何传真硬件,显然最快的选择是通过在线服务发送消息。从另一方面来说,传真硬件基本上是一个扬声器、一个麦克风和一点点数字信号处理代码。唯一明显的问题是代码。传真协议是已知的——即使在Python中实现它也不成问题,但到目前为止,我还没有看到任何使用speaker+mic进行传真的

故事

我没有任何传真硬件,所以我很难与有传真噪音的人在电话中进行沟通。很难想象在2012年,人们仍在使用以树和纸为食的通讯设备。所以,我想通过传真向他们宣布,互联网、电子邮件和视频会议的新时代终于到来了

问题

由于我没有任何传真硬件,显然最快的选择是通过在线服务发送消息。从另一方面来说,传真硬件基本上是一个扬声器、一个麦克风和一点点数字信号处理代码。唯一明显的问题是代码。传真协议是已知的——即使在Python中实现它也不成问题,但到目前为止,我还没有看到任何使用speaker+mic进行传真的示例。CPU的性能是毋庸置疑的——现代PC有足够的能力计算2400位/秒的噪音。所以我唯一的技术解释是延迟(噪音从麦克风传播到DSP代码,再传播到扬声器的时间)太长,会干扰传输

问题

如果上述情况属实-传真协议所需的延迟是多少?
是否有测量麦克风扬声器延迟的工具?
我还错过了什么?
可以用Python实现所有功能吗

另外,当我(除了我已经发现)为什么要重新发明事物时,我什么也找不到

代码可以在法布里斯·贝拉德(是的,QEMU和Javascript PC仿真器的家伙,他很棒;)的网站上找到,他在软件调制解调器上做了一些工作。根据his,有“声卡接口”代码以及各种协议的调制/解调。我还没有查看源代码,但这可能会提供有用的片段。网站上还有更多的指针

Linmodems.org链接到一些人,他们似乎已经完全实现了您想要实现的发送部分,尽管是一个古老的工作站。看一看这张照片


此外,2003年有一个家伙似乎想要同样的东西,尽管当时他没有xkcd来描述;)

这个问题令人惊讶。我真希望每一个问题都有这么多的背景和思想。我喜欢你的照片,这是我读过的最好的问题之一。你所描述的或多或少是调制解调器卡从十年或二十年来一直在做什么。它们实际上是软调制解调器,用软件编码,只需简单的硬件即可将信号调制到线路上,而不需要使用声耦合器;)问题可能不是计算性的,请参阅可怜的WinModem,当CPU运行缓慢时,将调制解调器信号生成从后面传递给CPU。只要你说“传真用扬声器和麦克风”,你就陷入了14kbit/s运行的调制解调器的声学耦合的物理问题。我从未见过有人试图跨越这一障碍。为什么不编写一个程序来为您过滤传真噪音呢?一台低端传真机或传真调制解调器将比您通过麦克风和扬声器实现传真的时间要便宜得多。(eBay最新推出的“传真调制解调器”USB设备售价12美元,包括运费!)“任何支持传真操作标准接口的调制解调器都可以使用”。问题是我没有调制解调器。链接不错。它们可以用来制作手动测试的传呼机,但它们仍然没有解释为什么没有纯粹的麦克风+扬声器解决方案。我已经指出,解释V.21协议描述中的时间延迟就足以回答这个问题。@techtonik查看GNU无线电邮件列表中线程的最后一篇文章,他们或多或少地将电话线直接连接到声卡。我想你也可以通过声耦合实现同样的效果,尽管损失和噪音更多我怀疑没有扬声器/麦克风设置的部分原因是麦克风无法区分自己发送的信号和接收的信号。也就是说,它只能半双工工作。除非扬声器和麦克风彼此充分隔离,否则不能同时播放声音和录制不同的声音。