.. image:: https://img.shields.io/pypi/pyversions/amodem.svg :target: https://pypi.python.org/pypi/amodem/ :alt: Python 版本 .. image:: https://img.shields.io/pypi/l/amodem.svg :target: https://pypi.python.org/pypi/amodem/ :alt: 许可证 .. image:: https://img.shields.io/pypi/v/amodem.svg :target: https://pypi.python.org/pypi/amodem/ :alt: 包版本 .. image:: https://img.shields.io/pypi/status/amodem.svg :target: https://pypi.python.org/pypi/amodem/ :alt: 开发状态
该程序可以使用简单的耳机在两台计算机之间传输文件,实现真正的空中隔离通信(通过扬声器和麦克风),或使用音频线缆(以获得更高的传输速度)。
发送方将输入数据调制成音频信号,然后通过声卡播放。
接收方录制音频,并将其解调回原始数据。
该过程需要一个手动校准步骤:发送方必须为其声卡找到最佳输出音量,该音量不会使接收麦克风饱和,并为解调提供足够好的信噪比。
HackerNews 讨论:https://news.ycombinator.com/item?id=17333257
该调制解调器使用 OFDM 通过音频线缆进行通信,具有以下参数:
这样,调制解调器可以达到 80kbps 比特率 = 10 kB/s(在最佳信噪 比条件下)。
每个 250 字节的数据帧使用简单的 CRC-32 校验和来验证数据完整性。
确保已安装所有必需的软件包(在 Debian 上):
$ sudo apt-get install python-numpy python-pip portaudio19-dev git
从 PyPI 获取最新发布版本:
$ pip install --user amodem
或者,尝试从 GitHub 获取最新(不稳定)开发版本:
$ git clone https://github.com/romanz/amodem.git
$ cd amodem
$ pip install --user -e .
对于图形和可视化(可选),安装 matplotlib Python 包。
验证安装,运行:
$ export BITRATE=48 # 显式选择高调制解调器比特率(假设良好的信噪比)。
$ amodem -h
usage: amodem [-h] {send,recv} ...
音频 OFDM 调制解调器:48.0 kb/s(64-QAM x 8 载波)Fs=32.0 kHz
位置参数:
{send,recv}
send 将二进制数据调制为音频信号。
recv 将音频信号解调为二进制数据。
可选参数:
-h, --help 显示此帮助消息并退出
在 Windows 上,您可以从 MinGW <https://packages.msys2.org/base/mingw-w64-portaudio>_ 下载 portaudio 库。
然后,您应该使用以下命令行标志指定 DLL:
-l AUDIO_LIBRARY, --audio-library AUDIO_LIBRARY
PortAudio 共享库的文件名。
在发送方和接收方之间连接音频线缆,并运行以下脚本:
在发送方:
~/sender $ export BITRATE=48 # 显式选择高调制解调器比特率(假设良好的信噪比)。
~/sender $ amodem send --calibrate
在接收方:
~/receiver $ export BITRATE=48 # 显式选择高调制解调器比特率(假设良好的信噪比)。
~/receiver $ amodem recv --calibrate
如果未设置 BITRATE,调制解调器将使用 1 kbps 设置(单频率 BPSK 调制)。
调整发送方计算机的输出音量,直到所有频率都能良好接收:
3000 Hz: 良好信号 4000 Hz: 良好信号 5000 Hz: 良好信号 6000 Hz: 良好信号 7000 Hz: 良好信号 8000 Hz: 良好信号 9000 Hz: 良好信号 10000 Hz: 良好信号
如果信号"太弱",请提高发送方的输出音量。
如果信号"太强",请降低发送方的输出音量。
如果信号"太嘈杂",可能是噪声水平太高或模拟信号失真。
请在校准会话期间运行以下命令,
并将生成的 audio.raw 文件发送给我进行调试:
~/receiver $ arecord --format=S16_LE --channels=1 --rate=32000 audio.raw
您可以查看 校准过程的截屏 <https://asciinema.org/a/25065?autoplay=1>_。
准备发送方(生成要发送的随机二进制数据文件):
~/sender $ dd if=/dev/urandom of=data.tx bs=60KB count=1 status=none
~/sender $ sha256sum data.tx
008df57d4f3ed6e7a25d25afd57d04fc73140e8df604685bd34fcab58f5ddc01 data.tx
启动接收方(将等待发送方开始):
~/receiver $ amodem recv -vv -o data.rx
启动发送方(将调制数据并开始传输):
~/sender $ amodem send -vv -i data.tx
发送方应输出类似的日志:
2015-02-06 18:12:46,222 DEBUG 音频 OFDM 调制解调器:48.0 kb/s(64-QAM x 8 载波)Fs=32.0 kHz
2015-02-06 18:12:46,222 INFO 已加载 PortAudio V19-devel(构建于 2014 年 2 月 25 日 21:09:53)
2015-02-06 18:12:48,297 INFO 发送 2.150 秒的训练音频
2015-02-06 18:12:48,297 INFO 开始调制
2015-02-06 18:12:49,303 DEBUG 已发送 6.000 kB
2015-02-06 18:12:50,296 DEBUG 已发送 12.000 kB
2015-02-06 18:12:51,312 DEBUG 已发送 18.000 kB
2015-02-06 18:12:52,290 DEBUG 已发送 24.000 kB
2015-02-06 18:12:53,299 DEBUG 已发送 30.000 kB
2015-02-06 18:12:54,299 DEBUG 已发送 36.000 kB
2015-02-06 18:12:55,306 DEBUG 已发送 42.000 kB
2015-02-06 18:12:56,296 DEBUG 已发送 48.000 kB
2015-02-06 18:12:57,311 DEBUG 已发送 54.000 kB
2015-02-06 18:12:58,293 DEBUG 已发送 60.000 kB
2015-02-06 18:12:58,514 INFO 已发送 60.000 kB @ 10.201 秒
2015-02-06 18:12:59,506 DEBUG 正在关闭输入和输出
接收方应输出类似的日志: 2015-02-06 18:12:44,848 调试 音频 OFDM 调制解调器: 48.0 kb/s (64-QAM x 8 载波) Fs=32.0 kHz 2015-02-06 18:12:44,849 信息 PortAudio V19-devel (构建于 2014年2月25日 21:09:53) 已加载 2015-02-06 18:12:44,929 调试 异步读取线程已启动 2015-02-06 18:12:44,930 调试 跳过 0.100 秒 2015-02-06 18:12:45,141 信息 等待载波音: 3.0 kHz 2015-02-06 18:12:47,846 信息 载波在 ~2265.0 ms @ 3.0 kHz 处检测到 2015-02-06 18:12:47,846 调试 已缓冲 1000 ms 的音频 2015-02-06 18:12:48,025 调试 载波从 2264.000 ms 开始 2015-02-06 18:12:48,029 调试 载波符号振幅: 0.573 2015-02-06 18:12:48,030 调试 载波当前相位: 0.061 2015-02-06 18:12:48,030 调试 频率误差: -0.009 ppm 2015-02-06 18:12:48,030 调试 频率校正: 0.009 ppm 2015-02-06 18:12:48,030 调试 增益校正: 1.746 2015-02-06 18:12:48,198 调试 前缀正确 2015-02-06 18:12:48,866 调试 3.0 kHz: 信噪比 = 34.82 dB 2015-02-06 18:12:48,866 调试 4.0 kHz: 信噪比 = 36.39 dB 2015-02-06 18:12:48,867 调试 5.0 kHz: 信噪比 = 37.88 dB 2015-02-06 18:12:48,867 调试 6.0 kHz: 信噪比 = 38.58 dB 2015-02-06 18:12:48,867 调试 7.0 kHz: 信噪比 = 38.86 dB 2015-02-06 18:12:48,867 调试 8.0 kHz: 信噪比 = 38.63 dB 2015-02-06 18:12:48,867 调试 9.0 kHz: 信噪比 = 38.07 dB 2015-02-06 18:12:48,868 调试 10.0 kHz: 信噪比 = 37.22 dB 2015-02-06 18:12:48,869 信息 开始解调 2015-02-06 18:12:49,689 调试 已获得 6.000 kB, 信噪比: 41.19 dB, 漂移: -0.01 ppm 2015-02-06 18:12:50,659 调试 已获得 12.000 kB, 信噪比: 41.05 dB, 漂移: -0.00 ppm 2015-02-06 18:12:51,639 调试 已获得 18.000 kB, 信噪比: 40.96 dB, 漂移: -0.00 ppm 2015-02-06 18:12:52,610 调试 已获得 24.000 kB, 信噪比: 41.47 dB, 漂移: -0.01 ppm 2015-02-06 18:12:53,610 调试 已获得 30.000 kB, 信噪比: 41.06 dB, 漂移: -0.00 ppm 2015-02-06 18:12:54,589 调试 已获得 36.000 kB, 信噪比: 41.37 dB, 漂移: -0.00 ppm 2015-02-06 18:12:55,679 调试 已获得 42.000 kB, 信噪比: 41.13 dB, 漂移: -0.00 ppm 2015-02-06 18:12:56,650 调试 已获得 48.000 kB, 信噪比: 41.31 dB, 漂移: -0.00 ppm 2015-02-06 18:12:57,631 调试 已获得 54.000 kB, 信噪比: 41.23 dB, 漂移: +0.00 ppm 2015-02-06 18:12:58,605 调试 已获得 60.000 kB, 信噪比: 41.31 dB, 漂移: +0.00 ppm 2015-02-06 18:12:58,857 调试 检测到 EOF 帧 2015-02-06 18:12:58,857 调试 已解调 61.205 kB @ 9.988 秒 (97.9% 实时) 2015-02-06 18:12:58,858 信息 接收到 60.000 kB @ 9.988 秒 = 6.007 kB/s 2015-02-06 18:12:58,876 调试 正在关闭输入和输出 2015-02-06 18:12:58,951 调试 异步读取线程已停止 (读取了 896000 字节)
接收器完成后,验证接收文件的哈希值:
~/receiver $ sha256sum data.rx 008df57d4f3ed6e7a25d25afd57d04fc73140e8df604685bd34fcab58f5ddc01 data.rx
你可以在这里观看数据传输过程的屏幕录像。
音频可以写入/读取中间 PCM 文件(而不是扬声器/麦克风),使用以下命令:
$ echo 123 | amodem send -o /tmp/file.pcm
发送 0.800 秒的训练音频
开始调制
已发送 0.004 kB @ 0.113 秒
$ amodem recv -i /tmp/file.pcm
等待载波音: 2.0 kHz
载波在 ~150.0 ms @ 2.0 kHz 处检测到
载波相干性: 100.000%
载波符号振幅: 1.000
频率误差: 0.000 ppm
开始解调
123
接收到 0.004 kB @ 0.011 秒 = 0.376 kB/s
确保已安装 "matplotlib" 包,并在接收端运行:
~/receiver $ amodem recv --plot -o data.rx


职场AI,就用扣子
AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!


多风格AI绘画神器
堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。


零代码AI应用开发平台
零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。


免费创建高清无水印Sora视频
Vora是一个免费创建高清无水印Sora视频的AI工具


最适合小白的AI自动化工作流平台
无需编码,轻松生成可复用、可变现的AI自动化工作流

大模型驱动的Excel数据处理工具
基于大模 型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


AI论文写作指导平台
AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。


AI一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号