Нет, не просто пошуметь, ой как не просто пошуметь. Я пользуюсь asterisk с самых первых версий (с 1.0, если точнее). Вышел он как раз по-моему когда я начал заниматься VoIP — 3 года назад. Как много времени прошло, насколько больше функций стало в астериске. Но одно остаётся неизменным 🙂 Кто пользуется SIP провайдерами и не видел сообщения «Comfort noise support incomplete in Asterisk RFC 3389. Please turn off on client IP.»? Да, в астериске нет до сих пор поддержки CNG и VAD.
Вкратце что это такое:
Во время телефонного звонка существует особенность: обычно говорит только один абонент, а второй слушает. При этом вполне логично, что информация передаётся только в одном направлении: от говорящего к слушателю. При этом вовсе не обязательно передавать голосовую информацию. Но тут сразу возникает чисто психологический момент: если говорящий слышит абсолютную тишину в трубке, то онт обязательно спросит: «Алло, алло! Вы меня слышите?». Поэтому логично вместо тишины выдавать в трубку шум. Собственно VAD — процесс выявление пауз в разговоре и прекращение передачи голосовых фреймов. CNG — генерация шума на стороне говорящего абонента.
Ни то не другое не реализовано в астериске, хотя попытки были. Вот какие изменения требуются, исходя из того что я прочитал. Может я что-то не так понял, поправьте:
1) Первое и самое малое: требуется генератор белого шума. Я взял когда-то написанный модуль, стряхнул пыль и отправил версию для trunk в трекер.
2) Поддержку CNG имеют не все кодеки. Поэтому в код, который занимается трансляцией из одного кодека в другой CNG можно просто добавить как очередной кодек. Разрешение использовать CNG можно записывать как кодек cng и vad прямо в список кодеков.
3) DSP астериска нужно научить распознавать интервалы тишины, чтобы в нужный момент прекращать передачу голосовых фреймов.
4) Существуют ещё какие-то проблемы с jitter буфером, ещё не разобрался.
Кажется, в данный момент астериск при получении CNG фреймов просто прекращает передачу RTP. И тишина...