Конвертируйте VoIP аудио в текст для отладки
Работая над приложениями VoIP, я обычно заканчиваю тем, что снимаю один телефон, разговариваю с ним, поднимаю другой телефон и проверяю, слышу ли я себя. Это даже сложнее, если я делаю приложения с трехсторонним вызовом.
Использование софтфона не помогает.
В идеале я хочу иметь возможность запускать несколько экземпляров некоторых команд на основе командной строки, в которых я могу набрать номер. Как только абонент набрал номер, а другая сторона подняла трубку, оба агента обмениваются аудио. Но вместо того, чтобы слышать звук, приложения отображают текст, идентифицирующий другой конец. Возможно, какой-то частотный шаблон, который можно преобразовать в текст. Затем этот текст отображается в приложении.
Можно ли что-то подобное сделать? Я создаю приложения против freeswitch. Идеи, как отлаживать приложения VoIP также приветствуются в комментариях.
2 ответа
Да, конечно. Проще всего было бы иметь отдельный сервер FreeSWITCH, который используется для размещения тестовых вызовов и отправки / получения ваших тестовых сигналов.
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 через Event Socket. Здесь вы можете увидеть некоторые (рабочие) примеры, которые я сделал с 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 по мере их выпуска, а также для других хуков или стандартов качества, которые вы хотите применять.