将 voip 音频转换为文本以进行调试

Convert voip audio to text for debugging

在开发 voip 应用程序时,我通常会拿起一个 phone,与它交谈,然后拿起另一个 phone 并检查我是否听到自己的声音。如果我正在使用三种方式调用应用程序,这甚至会变得更加棘手。

使用软件phone 没有帮助。

理想情况下,我希望能够 运行 某些基于命令行的 sip ua 的多个实例,我可以在其中拨打一个号码。一旦 ua 拨号并且对方 ha 接听,两个代理交换音频。但是,应用程序不必听到一些音频,而是显示一些标识另一端的文本。可能是一些可以转换为文本的频率模式。然后此文本显示在应用程序上。

这样的事情能做吗?我正在创建针对 freeswitch 的应用程序。也欢迎在评论中提出如何调试 voip 应用程序的想法。

是的,绝对是。最简单的方法是拥有一个单独的 FreeSWITCH 服务器,用于放置测试呼叫和 sending/receiving 您的测试信号。

tone_stream 将以您需要的频率生成音调:https://freeswitch.org/confluence/display/FREESWITCH/Tone_stream

tone_detect 可以检测频率并执行操作,或者更好的是,生成可以通过 ESL 套接字捕获的事件:https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools%3A+tone_detect

生成此类调用的最佳方法是使用通过事件套接字与 FreeSWITCH 通信的拨号器脚本。在这里你可以看到我用 Perl 制作的一些(工作)示例:

https://github.com/voxserv/rring/blob/master/lib/Rring/Caller/FreeSWITCH.pm -- 这是我为测试提供商的 SIP 基础结构而构建的测试套件的一部分。如您所见,它连接到 FreeSWITCH,启动事件侦听器,然后发起呼叫并期待入站呼叫。然后它发送并分析 DTMF。

https://github.com/voxserv/freeswitch-helper-scripts/tree/master/esl -- 这些是专用拨号器,您也可以将它们用作示例。

https://github.com/voxserv/freeswitch-perf-dialer -- 这个会生成一系列调用,就像 SIPp 所做的那样。

另一种技术是播放示例音频文件并录制另一端接收到的音频[通话录音],然后比较两者。该系统适用于系统位于不同位置并且您正在测试端到端质量的设置。

有很多音频比较工具 [如 PESQ] 不仅可以帮助您检测音频的存在,还可以提供有关音频流中各种参数退化的统计信息。

这可以扩展为在发布时对 FS 补丁进行测试分析,还可以对您要执行的其他挂钩或质量标准进行测试分析。