求助:SIM808录制AMR音频文件的下载及跨设备上传方案
解决方案:SIM808录制音频的下载与跨模块上传
一、先确认核心前提:SIM808文件系统指令的正确用法
你之前测试的AT+FSCREATE/AT+FSREAD无效,大概率是参数或初始化步骤不对,按以下流程排查:
- 初始化文件系统
先执行AT+FSINIT=1(参数1代表模块内部Flash,0是SIM卡,AT+CREC默认录制到内部Flash),返回OK后再操作文件。 - 查找录制的AMR文件
用AT+FSLS列出根目录文件,会看到类似REC001.AMR的录制文件(命名规则为REC+三位数字.AMR,按录制顺序递增)。 - 读取文件到ESP32
- 获取文件大小:
AT+FSINFO="REC001.AMR",返回+FSINFO: <文件大小>,<剩余空间> - 读取文件内容:
AT+FSREAD="REC001.AMR",0,<文件大小>,模块会返回+FSREAD: <文件大小>,随后输出二进制AMR数据,最后返回OK。ESP32接收这段二进制数据后,可通过WiFi/蓝牙转发到PC,或保存到本地SD卡后再导出。
- 获取文件大小:
如果以上指令仍无效,说明你的SIM808固件版本不支持FS指令,用AT+GMR查询固件,升级到支持文件系统的版本即可。
二、替代方案:录制时实时转发音频到ESP32
如果FS指令确实无法使用,跳过模块内部存储,直接在录制阶段把音频数据实时传到ESP32:
- 通话接通后,先执行
AT+CREC=1开始录制,同时开启音频透传:AT+CMIC=2,0(参数2代表UART透传麦克风音频,0为默认增益)。 - 此时SIM808会将实时录制的AMR音频数据通过UART发送到ESP32,ESP32直接保存为AMR文件,后续直接导出到PC即可。
三、上传AMR文件到另一台SIM808
方法1:用FS指令写入文件
- 在目标SIM808上执行
AT+FSINIT=1初始化文件系统 - 创建空文件:
AT+FSCREATE="REC001.AMR",<文件大小>(<文件大小>为PC上AMR文件的字节数) - 写入文件:
AT+FSWRITE="REC001.AMR",0,<文件大小>,模块返回>后,发送AMR文件的二进制数据,发送完成后等待OK即可。
方法2:实时播放透传
如果不需要存储到目标模块,直接播放:
- ESP32读取PC上的AMR文件,通过UART以数据流形式发送到目标SIM808,同时执行
AT+CLVL=10设置音量(范围0-10),再执行AT+PLAY=1开启音频播放透传,模块会实时播放收到的音频数据。
注意事项
- 串口通信时务必使用稳定的波特率(建议115200或更高),避免二进制数据丢包。
AT+CREC录制的AMR文件为窄带格式(8kHz采样),上传时需确保文件格式一致,否则播放会异常。
内容的提问来源于stack exchange,提问作者Jakob_btrx
相关产品推荐
相关产品推荐

