硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3637|回复: 23
收起左侧

[客户分享] 【原创】全网首发开源STM32实现SIP电话

  [复制链接]

8

主题

104

回帖

138

积分

初级会员

积分
138
发表于 2023-2-8 22:26:47 | 显示全部楼层 |阅读模式
本帖最后由 由崎星空 于 2023-2-9 08:42 编辑

本次分享内容:
      开源STM32实现SIP电话,通过开发板连接到本地SIP服务器,然后 其它终端通过连接同一个服务器实现,开发板 到 PC/手机/板子进行语音通信的功能。

详细介绍:

       软件使用:
              FreeRTOS + POSIX + CycloneTCP + PJSIP
       由于使用自己移植 Lwip + PJSIP没有调通过,所以用了CycloneTCP(ESP32是跑通LWIP了的)。
       PJSIP 为著名开源 SIP协议栈,其中包含了网络,音频算法等,感兴趣可以去浏览官方主页:https://www.pjsip.org/
       SIP服务器:由于测试我使用的 miniSIPServer ,如果大家感兴趣可以 在云服务器 安装 Asterisk 或者FreePBX。
       但是一定注意,千万要会添加注册策略,不然会被别人恶意用流量,最后自己交钱。

       硬件使用:
              STM32F429 + WM8978

       优化地方:
              由于使用的是F429本身性能处理3A算法不太行,如果能有个H7,可以跑跑 3A(自动增益控制,降噪,回声消除)。
           (我也想整个H7,最近可惜最近没啥钱了,哈哈)。

       如何自己使用:
             注意我使用的AC6,没有对应版本可以装,也可以将版本。
             1.先修改网络硬件,由于我使用的CycloneTCP,如果CycloneTCP支持的网卡,可以直接添加。
             2.由于原子使用了IO扩展芯片,可以删除掉,避免影响大家修改声卡。
             image.png

             3.修改音频接口,默认是SAI,可以用I2S,最好采样率为16000Hz,深度16bit,双声道(不是双声道需要修改,队列大小看图),Codec默认使用的wm8978。
             image.png

             4. 修改远端或本地SIP 服务器地址,账号名,密码名。
             image.png

视频分享:         
           https://www.bilibili.com/video/BV1V8411u7C4/  (这一次视频就比较长了)

软件代码:
           https://gitee.com/seliverwang/work_station.git  


以上为本次分享。


--------------


闲聊:     
    距离上一次分享给大家项目软件之后,不知不觉已经过了都快2年了,日子过的真快,又是做了很多项目,每天忙的不可开交,这段时间结婚更忙了,现在忙完了抽空有时间整理一下把,之前做的这个demo分享给大家(其实后面做的还挺多的,还去学了好久的SIP服务器都是后话了)。做嵌入式也搞了6年了,回过头来看,做的也挺多,但是现在越来越不知道后面想干点啥,想创业但是又没有方向(最重要没钱哈哈),既然没有方向就先上班呗,现在就想搞钱了,以后要是大家有啥想法,方向分享分享。













回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106664
QQ
发表于 2023-2-9 00:12:44 | 显示全部楼层
这个乐鑫有个无线音视频套件,效果还真不错,去年推出的时候一直想买个玩下,没时间弄,
https://www.bilibili.com/video/B ... 163e84f2caee8530c18

T1ZT(3MDKWAY]GGFI[~CMQC.jpg
回复

使用道具 举报

8

主题

104

回帖

138

积分

初级会员

积分
138
 楼主| 发表于 2023-2-9 07:12:04 | 显示全部楼层
eric2013 发表于 2023-2-9 00:12
这个乐鑫有个无线音视频套件,效果还真不错,去年推出的时候一直想买个玩下,没时间弄,
https://www.bili ...

        这个协议栈也支持 音视频,奈何MCU性能不行,所以没有跑视频,平时这个都是用Linux搞的,都默认支持带视频,不过应该F7或者H7都能跑带视频吧。

ESP32搞音视频是真不错,这个协议栈我也在ESP32上面跑,然后加上乐鑫ADF里面的消回音库(它的消回音库用的webrtc)效果就挺好。乐鑫没有开源它自己本身的VOIP,有的时候有问题不好排查,就没有用它自己的库。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106664
QQ
发表于 2023-2-9 09:24:24 | 显示全部楼层
由崎星空 发表于 2023-2-9 07:12
这个协议栈也支持 音视频,奈何MCU性能不行,所以没有跑视频,平时这个都是用Linux搞的,都默认 ...

F429跑这个其实完全无压力的,我的网络远程VNC桌面,跑视频播放器
https://www.armbbs.cn/forum.php?mod=viewthread&tid=30543



回复

使用道具 举报

8

主题

104

回帖

138

积分

初级会员

积分
138
 楼主| 发表于 2023-2-9 09:29:58 | 显示全部楼层
eric2013 发表于 2023-2-9 09:24
F429跑这个其实完全无压力的,我的网络远程VNC,跑视频播放器
https://www.armbbs.cn/forum.php?mod=vie ...

跑 VNC 和跑这个 视频流还是有点区别,如果跑原始视频流数据量太大了,网络协议栈和MCU处理速度不知道够不够,如果跑压缩的视频流,MCU运行压缩算法又是个问题,我用F429跑 重采样+AEC都很费力,跑视频压缩 h.264这些就更不够了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106664
QQ
发表于 2023-2-9 09:52:59 | 显示全部楼层
由崎星空 发表于 2023-2-9 09:29
跑 VNC 和跑这个 视频流还是有点区别,如果跑原始视频流数据量太大了,网络协议栈和MCU处理速度不知道够 ...

VNC就是压缩的数据流。原始数据,网络可传输不过来,数据量太大了。

同时运行了GUI刷新,jpeg解码,MP3解码,网络通信,VNC压缩数传, SDRAM虚拟桌面等,这些都是同时刷的。
回复

使用道具 举报

8

主题

104

回帖

138

积分

初级会员

积分
138
 楼主| 发表于 2023-2-9 10:08:01 | 显示全部楼层
eric2013 发表于 2023-2-9 09:52
VNC就是压缩的数据流。原始数据,网络可传输不过来,数据量太大了。

同时运行了GUI刷新,jpeg解码,MP ...

哥,我说的可能有点不清楚,你分享的VNC我之前也学习过,很多都是用的 MCU硬解和 MCU硬件DMA支持的,除了MP3解码很少软解,但我这个如果跑视频只能纯软件,没法用硬件支持,所以CPU占用率很高。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106664
QQ
发表于 2023-2-9 10:18:20 | 显示全部楼层
由崎星空 发表于 2023-2-9 10:08
哥,我说的可能有点不清楚,你分享的VNC我之前也学习过,很多都是用的 MCU硬解和 MCU硬件DMA支持的 ...

你看错了,F429不支持硬件,所有的全都是软件实现(jpeg解码,MP3解码,VNC压缩数传),只有个GUI刷新是DMA,解码出来后刷新数据到DMA
回复

使用道具 举报

8

主题

104

回帖

138

积分

初级会员

积分
138
 楼主| 发表于 2023-2-9 10:36:03 | 显示全部楼层
eric2013 发表于 2023-2-9 10:18
你看错了,F429不支持硬件,所有的全都是软件实现(jpeg解码,MP3解码,VNC压缩数传),只有个GUI刷新是D ...

嗯嗯,后面设置分辨率低的参数,再试试h.264,之前跑不动会卡。
回复

使用道具 举报

5

主题

201

回帖

216

积分

高级会员

积分
216
发表于 2023-2-10 14:00:13 | 显示全部楼层
看起来做的还是挺不错的嘛,长了点知识了
回复

使用道具 举报

8

主题

135

回帖

159

积分

初级会员

积分
159
发表于 2023-2-10 17:44:32 | 显示全部楼层
结婚,恭喜恭喜啊
回复

使用道具 举报

8

主题

104

回帖

138

积分

初级会员

积分
138
 楼主| 发表于 2023-2-11 19:15:03 | 显示全部楼层
tcs_stm32 发表于 2023-2-10 17:44
结婚,恭喜恭喜啊

  谢谢
回复

使用道具 举报

8

主题

104

回帖

138

积分

初级会员

积分
138
 楼主| 发表于 2023-2-11 19:17:10 | 显示全部楼层
honami520 发表于 2023-2-10 14:00
看起来做的还是挺不错的嘛,长了点知识了

这个是个demo,如果实际使用场合通常用esp32这种带wifi的会好点,我们后面实际方案也基本上也是用的这种SOC
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2023-3-8 10:34:02 来自手机 | 显示全部楼层
楼主,方便加个联系方式吗,付费找你定制个东西,感觉你能搞定
回复

使用道具 举报

10

主题

43

回帖

73

积分

初级会员

积分
73
发表于 2023-7-25 11:29:11 | 显示全部楼层
收藏学习!另外请教楼主提到的音频自动增益控制算法 哪里有,谢谢!
回复

使用道具 举报

8

主题

104

回帖

138

积分

初级会员

积分
138
 楼主| 发表于 2023-8-5 14:03:18 | 显示全部楼层
lishang4650 发表于 2023-7-25 11:29
收藏学习!另外请教楼主提到的音频自动增益控制算法 哪里有,谢谢!

可以用 webrtc 的 AGC 算法。或者 speex的
回复

使用道具 举报

0

主题

28

回帖

28

积分

新手上路

积分
28
发表于 2023-8-6 17:51:58 | 显示全部楼层
楼主对音频算法理解很通透呀 这个要怎样入门?
回复

使用道具 举报

8

主题

104

回帖

138

积分

初级会员

积分
138
 楼主| 发表于 2023-8-10 08:51:00 | 显示全部楼层
大个给力 发表于 2023-8-6 17:51
楼主对音频算法理解很通透呀 这个要怎样入门?

我也是菜鸟,多看点DSP相关的书籍,然后动手做实验,然后看别人的代码。特别硬汉 的DSP教程可以跟着做做,然后去 matlab上找算法测试。
回复

使用道具 举报

1

主题

19

回帖

22

积分

新手上路

积分
22
发表于 2023-10-17 12:02:50 | 显示全部楼层
感谢 楼主,学习之!
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2024-1-3 18:09:57 | 显示全部楼层
你好, 方便加QQ沟通吗?
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2024-1-3 18:12:07 | 显示全部楼层
你好,方便QQ或者微信沟通吗? 我现在没权限给你发信息
回复

使用道具 举报

8

主题

104

回帖

138

积分

初级会员

积分
138
 楼主| 发表于 2024-1-6 15:54:21 | 显示全部楼层
shukun 发表于 2024-1-3 18:12
你好,方便QQ或者微信沟通吗? 我现在没权限给你发信息

你好有什么问题需要沟通吗?可以联系QQ 1220420938
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2024-1-10 12:36:34 | 显示全部楼层
加你QQ,请通过下
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-3-1 02:31:24 来自手机 | 显示全部楼层
楼主,加你QQ了,请通过一下吧,跟您探讨一下SIP
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 08:08 , Processed in 0.253561 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表