什么是FreeSWITCH?

欢迎使用FreeSWITCH。本文最早写于2009年,最后更新时间是2022年6月4日。

FreeSWITCH是一个开源的电话软交换平台,主要开发语言是C,以MPL1.1发布。

它有很强的可伸缩性 ── 从最简单的软电话到商业级的软交换平台几乎无所不能。它支持SIP、H323、WebRTC等通信协议。另外,它还支持很多高级的SIP特性,如Presence、BLF、SLA以及TCP、TLS和sRTP 等。它可以作为SBC使用和多协议网关使用,也可以作为B2BUA连接其它的VoIP系统,如OpenSIPS、Kamailio、Asterisk等。

FreeSWITCH支持各种带宽的语音编解码,支持 8K、16K、32K及48KHz的高清通话,并可以在桥接不同频率的语音时自动进行转换。它可以运行在32位及64位的Windows、macOS、Linux以及Solaris等平台上,伸缩性极强,不管是一个信用卡大小的Raspberry Pi,还是数十、数百核的大型Linux服务器,都能运行FreeSWITCH。此外,它还可以运行于Docker容器及K8S云原生环境中。

它支持 TTS(Text To Speach)、ASR(Automatic-Speach Recogonition)以及VAD(Voice Activity Detection)等。允许你使用Lua、Javascript、Python等嵌入式脚本语言来控制呼叫流程,或者你也可以通过Event Socket与C、Go、Ruby、Erlang、Python、Perl、Java等任何你所熟悉的语言进行交互。

为了避免重复发明轮子,它使用了相当多的第三方软件库。同时,为了方便编译和安装,很多第三方库代码都集成到了FreeSWITCH源代码树中。

它使用一种模块化、可扩展性的结构,只有必需的功能和函数才会加入到内核中,从而保证了其稳定。作为一款开源软件,它最大的好处就是你可以拿过来自己编译进行,并根据你的需要来开发自己的模块。

它的作者Anthony Minissale曾是Asterisk的开发者,关于开发FreeSWITCH的原因和动机请参阅FreeSWITCH背后的故事

如果想进一步深入了解FreeSWITCH,《FreeSWITCH 权威指南》当然是最好的指导书。

如果从源代码编译安装FreeSWITCH有困难,你也可以试一下XSwitch,它是一个已经编译好的FreeSWITCH,并且有专业的图形管理界面。

Anthony在2017年带领他的团队成立了新的公司Signalwire,踏上了新的征程,使用FreeSWITCH做云通信服务和API。

如果你读到这里还意犹未尽,可以继续阅读FreeSWITCH新手指南