通过VoIP播放音频文件

时间:2011-01-30 20:27:57

标签: audio voip

我想实现一个可以实现以下的简单VoIP系统;

  1. 用户上传mp3或wav文件并提供电话号码。
  2. 拨打给定的电话号码,当选择电话时,播放上传的mp3 / wav文件。播放完整个文件后,电话会挂断。
  3. 我想知道是否有支持这个的开源库?还是一个我可以实现这个目的的开源软件?

3 个答案:

答案 0 :(得分:1)

我为我的工作做了类似的测试。

我有

  1. 使用Freeswitch在我办公室的盒子上测试框架,我在FreeSWITCH盒子上创建了一些密码用户。
  2. 然后我使用sip测试工具/客户端来管理与sip代理的连接,以及另一个用户。
  3. 例如......说我的freeswitch是ip:120.0.0.7

    我正以5000用户身份注册该freeswitch,我想呼叫同时注册的用户4000.

    我使用 SIPP(linux) SIPCLI(windows。)

    <强> SIPP

    SIPP的好处在于它非常强大,可以进行无数的性能测试,而不是。但是发送音频有点挑战,但它是可行的。你基本上是在一些编解码器(g711,g729等)中发送录制音频的pcap,所以你运行如下命令:

    sudo sipp -s [the phone number/ user] [your freeswitch] -sn uac_pcap -mi [your ip] -l 1 -m 1
    

    最后两个参数(l和m)设置多少负载,默认情况下sipp每秒发送10个呼叫。你可能不想要那个。所以我说“限制对#的调用”,m说“一次只运行x次调用。”

    <强> SIPCLI

    更简单的方法是sipcli(但它只是一个Windows工具。) 在sipcli中,你基本上可以发送一个wav文件,以及文本到语音。我喜欢它。它有一个内置的库,可以拨打号码,你可以传递类似-t的内容“这是测试用于测试和测试的测试工具。”它会在通话时将其转换为音频。你还可以构建指向你录制的wav文件的场景....

    SIPCLI将使用类似SIPP的命令进行连接:

    sipcli [user/phone number] -d [domain or proxy] -t "This is text i want converted to speech on the phone call" 
    

    你也可以传递给wav的链接。

    sipcli也可以发送dtmf音调,或者你可以指向wt的dtmf音调。

    场景编辑器起初有点复杂,需要一点时间习惯。但是一旦你掌握了制作场景文件的麻烦,这很容易。

    SIPP的好处

    SIPP可以捕获性能指标(在您配置的起点和终点之间的整个时间内以毫秒为单位) SIPP可以在您想要的一端驱动数千个电话 SIPP可以增加呼叫或在运行中减少呼叫 SIPP可以生成statisics和csv文件进行分析 您编写的SIPP方案本身正在构建数据包。因此,您可以更好地控制数据包在INVITE上发送的内容。 SIPP是开源的

    SIPP的否定

    SIPP无法发送wav文件 SIPP无法生成自己的dtmf音(它使用pcaps,这可能会有问题) SIPP无法生成文本到语音 SIPP有点复杂

    SIPCLI的好处

    SIPCLI可以即时将文本转换为语音 SIPCLI可以使用录制的wav发送给收件人 SIPCLI易于使用 SIPCLI也可以作为接收者(即IVR播放问候语并接受输入) SIPCLI有一些逻辑来验证收到的数据(比如用户按#3,然后按#4。)

    SIPCLI的否定

    SIPCLI不允许您访问它发送的SIP标头(因此对测试的控制较少) SIPCLI不执行加载或性能指标 SIPCLI的编辑器起初有点困难,但它并不像学习SIPP的高级功能那么难 SIPCLI不是开源....它的试用率是90%有用。要获得其他10%(更长的电话),您需要以70美元的价格购买。

    我也尝试过像PJSua这样的其他工具,但是这两个工具是我测试你所谈论的场景的绝佳方法。

    关于Framework / softwsitch / proxy ...我使用Freeswitch。

答案 1 :(得分:0)

是您可以使用Asterisk,Freeswitch(我的个人偏好)或许多与此类似的其他平台。

一旦你有freeswitch设置,请查看此链接以实现目标: http://wiki.freeswitch.org/wiki/Javascript_QuickStart

答案 2 :(得分:0)

使用ivrworx进行简单测试

参见流光示例。