本次分享内容:
开源STM32实现SIP电话,通过开发板连接到本地SIP服务器,然后 其它终端通过连接同一个服务器实现,开发板 到 PC/手机/板子进行语音通信的功能.
视频展示
https://www.bilibili.com/video/BV1V8411u7C4/
软件代码:
https://gitee.com/seliverwang/work_station.git
内容介绍
详细介绍:
FreeRTOS + POSIX + CycloneTCP + PJSIP
由于使用自己移植 Lwip + PJSIP没有调通过,所以用了CycloneTCP(正式用的时候,ESP32运行PJSIP是ok的)。
PJSIP 为著名开源 SIP协议栈,其中包含了网络,音频算法等,感兴趣可以去浏览官方主页:https://www.pjsip.org/
SIP服务器:由于测试我使用的 miniSIPServer ,如果大家感兴趣可以 在云服务器 安装 Asterisk 或者FreePBX。
但是一定注意,千万要会添加注册策略,不然会被别人恶意用流量,最后自己交钱。
硬件使用:
STM32F429 + WM8978
优化地方:
由于使用的是F429本身性能处理3A算法不太行,如果能有个H7,可以跑跑 3A(自动增益控制,降噪,回声消除)。
如何自己使用:
注意我使用的AC6,没有对应版本可以装,也可以将版本降低到6.xx都可以。
1.先修改网络硬件,由于我使用的CycloneTCP,如果CycloneTCP支持的网卡,可以直接添加。
2.由于原子使用了IO扩展芯片,可以删除掉,避免影响大家修改声卡。
3.修改音频接口,默认是SAI,可以用I2S,最好采样率为16000Hz,深度16bit,双声道(不是双声道需要修改,队列大小看图),Codec默认使用的wm8978。
-
修改远端或本地SIP 服务器地址,账号名,密码名。
结束语
也没什么好说的,这个本身是个demo版本,如果要正式场合使用,还要考虑很多东西,基本上是个思路吧,分享给喜欢搞音视频的朋友。顺便提一下,正式场合通常用的 WiFi Soc会好点比如ESP32 (我们也用的ESP32)。
现在这个环境这么差,开源出来估计会被diao吧,无所谓,大家喜欢的就互相学习吧。