跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

基于 UDP 协议的手机通话语音局域网传输 Python 脚本

一个基于 Python 的脚本,用于在局域网内接收 Android 手机通话的语音数据。该方案通过 UDP 协议传输语音流,利用 TCP 管理通话状态,解决了手机算力不足无法运行大模型的问题。系统支持设备发现、呼叫控制及 DTMF 发送等功能,可将语音发送至 AI 服务器进行识别与合成,实现低成本高效的 AI 电话机器人应用。

晚风告白发布于 2026/4/6更新于 2026/9/889 浏览
基于 UDP 协议的手机通话语音局域网传输 Python 脚本

一、前言

前面通过相关方案阐述了手机打电话过程中随机插播预录语音片段的功能,以及根据对方手机按下 DTMF 按键播放不同 IVR 应答语音片段的能力。

在 AI 电话沟通时,由于手机性能和算力的局限性,通常 AI 交互的模型和算法无法部署到手机上。因此需要将拦截到的手机通话的声音数据,通过网络(局域网或互联网)将语音包传输给 AI 算力服务器。由其对语音进行 ASR 识别和语义理解,并生成最终的应答 TTS 语音,反馈回手机注入到电话通话中。

当前市面上主流的实时语音流的传输方式主要有两种:

  1. SIP/WebRTC 协议及配套的 RTP/RTCP 语音数据传输。
  2. 直接将语音数据以 udp 广播或组播的方式分发给局域网内多个设备。

事实上手机电话通话做 AI 呼叫,本质上跟 SIP 协议没有太大的依赖关系。手机 APP 提取到通话声音后,完全可以把这个声音数据直接传给局域网内的 AI 服务器,或者让手机自己的 AI 模型来消费和应答这个声音会话。

本文就是基于这样的场景,使局域网内部署的一台 AI 服务器,就可以通过 udp 数据包,同时处理多台 Android 手机发来的 AI 呼叫请求,并生成对应 TTS 语音应答。

由于数据交互全在局域网内进行,其端到端通话的时延可以得到最大程度的保证。这样既能利用 AI 算力服务器的堆叠密度,又能同时处理和响应多路手机 SIM 卡的电话通话,实现高效的 AI 呼叫和成本的压缩。

当前商用方案是蓝牙电话的方案,需要依赖一个外置的 USB 蓝牙的配件,插入到手机上,才能拦截到电话通话的声音数据。

二、方案的依赖配件

目前拦截手机通话声音的蓝牙电话方案,需要将 USB 蓝牙的配件插入到手机上,才能在手机 APP 拦截到电话通话的事件和声音数据。

这个方案最大的好处是不限制手机,市面上任何品牌型号的 Android 手机,拿来装上 app,插上 USB 配件后,就能拦截到电话通话语音。普适性非常的广。市面上任何新的手机和二手的手机都支持这样用。

买来的 USB 蓝牙配件,可以直接插在手机上使用。但是因为是公共的标准配件,需要有一个 USB 转 typec 的转接头才能插到 Android 手机上,没有的话可以去购买一个即可,非常的便宜。

三、方案的依赖界面

蓝牙电话方案使用 Android 手机 APP,通过插入手机的 USB 蓝牙来直接拦截电话通话的声音。因此为了能让它将语音数据和通话事件公开到手机所在的局域网中,需要对【智能拨号器 app】进行一个基础的默认设置。

在【智能拨号器 app】的设置选项卡中,点击右上角齿轮图标,打开【APP 应用设置】界面后,将原先默认的'SIP 协议栈:连接 SIP 平台'关闭为'协议栈:手机 IVR-AI 语音处理'。

APP 应用设置中,做了这个默认设置切换之后,APP 拦截到的电话通话声音将不再进行 SIP 协议的转发,而是在手机 APP 自身和局域网内,广播寻址找到远程声音设备进行电话通话声音数据的播放和输出。

四、Python 客户端的命令行菜单

本文的 Python 脚本的源代码,即为拨号器的远程声音设备的标准输入输出的源文件,它支持 Windows/Linux/MacOS 三大平台。

详细的安装和配置步骤,可在附件下载路径中的 README.md 文件内容中查看。

执行了以下命令之后,随便输入 help 或直接按下 Enter 键,会打印命令行提示内容:

pip install sounddevice numpy colorama
python main.py

进去后输入 help 按提示逐个输入 discover / bind 绑定后手机 app 上会弹框出来提示是否接受远程声音设备的绑定,需要手机 APP 上允许。

至此,即可使用 call / hangup / dtmf 等指令,正常在 windows11 中使用 python 连接局域网内的智能拨号器 app 来实时通话啦。

用户可以简单的使用如下指令,来完成一个外呼的手机通话,对手机进行远程操控:

  • 如常用的拨打 10086 等待接通后说话:call 10086
  • 通话中发送 DTMF 数字:dtmf 2
  • 拨打完毕后挂断电话:hangup

五、拨号器声音程序架构

其实有 Python 脚本的源代码之后,什么架构啊、交互时序和指令内容啊,都是多余的。有啥不懂的直接跳转去看代码即可,反正就六七个 py 文件而已,非常的简洁易懂。

但这里为了便于理解,还是画蛇添足一次:Python 脚本作为【远程声音设备】的程序,主要使用 udp+tcp 结合的方式来进行工作的。

UDP 协议负责进行广播找人、寻址和绑定双方的目标设备,以及电话通话时直接传输上行和下行的全双工的语音数据。UDP 占用 42700-42703 的 udp 端口。

TCP 协议负责建立稳定的连接,保证通话的事件和状态能够准时、完整的在局域网双方设备之间进行数据交换。TCP 占用电脑的随机端口和手机的 42700 端口。

它们之间的逻辑架构,如下图所示:

六、Python 程序的传输端口和交互指令

Python 脚本做为拨号器的远程声音设备,交互指令和状态机总体还是比较简单的,交互指令的时序图如下:(它主要分为三个阶段:UDP 发现、TCP 连接、电话通话)

交互执行的详细 json 格式内容如下:

指令描述指令 json 格式内容
UDP 设备发现{ "type": "REQUEST_AUDIO", "sn": "设备 GUID 或空字符串" }
声音源响应{ "type": "RESPONSE_AUDIO", "sn": "f87cca772abcf96f", "company": "设备厂商", "ip": "192.168.31.241", "port": 42700 }
Call 消息{ "type": "Call", "number": "13800138000", "call_type": "normal" }
Answer 消息{ "type": "Answer" }
Hangup 消息{ "type": "Hangup" }
DTMF 消息{ "type": "DTMF", "digit": "1", "duration": 100 }
外呼响应{ "type": "OnCallDialing", "number": "13800138000" }
呼叫振铃事件{ "type": "OnCallProgress", "number": "13800138000" }
电话被接通{ "type": "OnCallConnected", "number": "13800138000" }
被拒接{ "type": "OnCallReject", "reason": "用户拒接" }
主动取消{ "type": "OnCallCancel", "reason": "用户取消" }
接通后挂断{ "type": "OnCallHangup", "reason": "正常结束" }

详细的交互指令内容,见上述附件下载路径压缩包中的 README.md 文件内容所述,需要的可自行下载后查阅。

七、总结

经本篇章这么一顿操作,我们也算是部分的代码开源了。从文中各个章节的描述上看,其实局域网内的数据交互,是非常的简洁的。事实上也本就该如此,如果不考虑目前 AI 算力和芯片差异,真正的【端到端】AI 通话,就应该是【手机 - 手机】通话,跟网络(局域网或互联网)没有半毛钱关系。

只是因为当前手机算力不足,没法跑 AI 的大模型,才引出了将手机通话的语音传递到 AI 算力服务器上。AI 响应完毕后转成 TTS 语音数据再返回手机做注入而已。

这样就引出了【1 个 AI 算力服务器 + 多个 Android 手机】这样复用的高效率组合,这样的场景下,很明显,直接使用 UDP 或 RTP,将语音数据通过一个 udp 端口发到 AI 服务器,使 AI 服务器能够同时处理多路语音的呼叫,是正常的标准做法。

我们通过这种方式,在【拦截手机打电话的声音】基础之上,很容易就能扩充出:通话中【随机插播预录语音片段】、AI 外呼、AI 来电接听等高级功能。

本文的 UDP 寻址和电话语音数据的交互方式,对同方向的语音和视频类应用,也具有一定的参考意义。

目录

  1. 一、前言
  2. 二、方案的依赖配件
  3. 三、方案的依赖界面
  4. 四、Python 客户端的命令行菜单
  5. 五、拨号器声音程序架构
  6. 六、Python 程序的传输端口和交互指令
  7. 七、总结

更多推荐文章

查看全部
  • 基于 YOLOv8 的无人机红外可见光光伏缺陷检测数据集与训练指南
  • React Native 集成虹软 ArcFace 人脸识别实战指南
  • 《AI 提效手册》深度解读:五款主流 AI 工具实战指南
  • 网络运维与网络安全运维的区别及就业前景分析
  • GitHub 趋势日报:2025 年 06 月 26 日开源项目盘点
  • AI 编程工具深度对比:Cursor、Copilot、Trae 与 Claude Code
  • 数据结构顺序表定义、操作与综合应用题解析
  • B 树与 B+ 树详解及数据库索引应用
  • 网络安全工程师就业前景分析与零基础入门指南
  • GitHub Copilot Pro 学生免费认证与 VS Code 集成指南
  • 网络安全基础与黑客技能入门指南
  • 黑客概念内涵的演变与渗透测试基础指南
  • CentOS 7 Docker CE 安装与配置指南
  • 相干伊辛机在医疗与医疗 AI 领域的应用前景
  • OpenClaw v2026.3.8 全平台部署及 Ollama 本地模型对接实战
  • PostgreSQL 使用 Python 和 JavaScript 编写自定义函数指南
  • GLM 语言模型实战指南:构建智能写作系统
  • Python ORM 框架:SQLAlchemy 完全指南
  • 35 岁程序员职业危机分析与技术进阶指南
  • 数学建模竞赛全流程指南与 AI 提示词

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online