вторник, 20 января 2009 г.

Путешествие группы формант по голосовому тракту. Глава вторая.

Обсуждение плана. Прелести монтажа под открытым небом в хорошую погоду. - То же - в дурную погоду. Принимается компромиссное решение. Первые впечатления от Монморенси. Не слишком ли он хорош для этого мира? Опасения отброшены как необоснованные. Заседание откладывается.


Аналоговая сигнализация


Простейшая сигнализация используется в аналоговой телефонии - вы поднимаете трубку, а оттуда раздается радостный, располагающий к набору номера, гудок. Гудок вам посылает АТС, которая узнала о вашем проявлении интереса по снятой трубке => замкнутой цепи. Вы с радостью тыкаете кнопки, а телефон, также радостно, безусловно, отщелкивает ваши нажатия импульсами, или пропевает его комбинациями двух частот АТС. АТС, сама или с товарками быстренько разбирается в сути вашего щелкуче-певучего послания и найдя вашего адресата, подает сигнал его аппарату, что пора трезвонить, чем этот аппарат и займется со всей щенячьей радостью. А пока аппарат вызываемого абонента будет дергаться в параксизмах довольства, вы будете слышать длинные гудки, которые будут успокаивающе сообщать вам, что АТС о вас не забыла. Если аппарат дергался зря, и трубку никто так и не возьмёт, вы получите серию коротких гудков.

Нетрудно заметить, что аналоговая сигнализация такого типа рассчитана отнюдь не на автоматику. Короткие и длинные гудки гарантировано не являются стандартными - ведь характеристика короткий/длинный вполне человеком воспринимается. А значит и заботиться тут не о чем.

Руководствуясь подобными соображениями, создатели телефонных систем подарили незабываемую массу ощущений администраторам VoIP шлюзов - в форумах по Addpac можете почитать детективные истории по записи гудка занятости от АТС и последующего его анализа различными аудио редакторами. На самом деле все не так страшно с отбоем.

А вот где и вправду очень обидно становится - это дозвон до абонента традиционной телефонной сети. Есть во FreeSWITCH такая переменная call_timeout (подобное есть в параметрах Dial в Asterisk), которая задает время попытки дозвониться. Если в течении скажем 20 секунд трубку никто не взял, то вызов уйдет в голосовую почту, например. Так вот если вы настроите переадресацию на свой сотовый аппарат, и захотите в случае неудачи перевести звонок в голосовую почту - ничего не выйдет. Шлюзу фактически невозможно определить идет ли вызов или уже кто то взял трубку (если это конечно не GSM шлюз, в GSM шлюзах с сигнализацией все хорошо). Также определить по коротким гудка занят ли абонент, или положил трубку после разговора, сложно.

Да, конечно можно наворотить всяческих детекторов появления голоса в линии, но если я не сразу понимаю, что на том конце кто то соизволил дотянуться до трубки, то уж автоматика, с её процентами погрешности здесь никак не годится для серьезного использования - получится плохо, когда вызываемый уже взял трубку, а автоматика все еще размышляет - "вот это голос, или не голос? Наверное все таки не голос, ждем дальше".

Таким образом видно моё отношение к перспективам аналоговых стыков с городскими АТС - нет перспектив - аналоговая сигнализация в цифровом веке это атавизм, зачем эти костыли, когда АТС совершенно точно знает взяли на том конце трубку или нет. Весь вопрос всего лишь в том, что она об этом никак не сообщает, рассчитывая на то, что у аппарата человек, который признает собрата.

Очевидно, что стык надо делать или цифровым (ну тут из вариантов я только E1 видел, и тот R1.5, и PRI еще поискать надо, хотя, возможно, где то есть еще и ISDN BRI), или делать VoIP стык. Сейчас уже многие провайдеры предоставляют городские телефоны через VoIP.

В следующей серии зянятно-развлекательное описание протокола SIP.

воскресенье, 4 января 2009 г.

G.729 для FreeSWITCH готов

То есть я собрал из библиотек IPP, кодека для Asterisk, и mod_g729 от FreeSWITCH свой mod_g729. Кодирование работает прекрасно, декодирование пока вызывает вопросы.

Забавный эффект - собеседника, подключенного по G.729 слышно, но есть артефакты, иногда, если сильно тараторить в трубку, фразы начинают долетать медленно. Хотя возможно во всем виновата связь - тестировал с удаленным шлюзом, так как найти G.729 в другом месте не смог.

Забирайте тут. Тестируйте, правьте код.

Обсуждение здесь.

Обновление: тестирование с моим Nokia E61 показало хорошие результаты и на декодировании.