Monday, September 20, 2010

Веселый робот

Гостевая публикация от Andrew Fink

Встречайте "Весёлого Робота"!

Сделаный на досуге энтузиастом http://magicprinc.blogspot.com/ из двух банок пепси-колы, старого радиоприемника, JDK 6.0 и собственных наработок. Вот оно настоящее Telco 2.0 - бесплатно для абонентов, бессмыслено для оператора! ;-)

+7(347) 293-4512

(К сожалению, для многих это межгород до Уфы, но можно звонить через дешевых VoIP провайдеров - это реальный мир с реальными физическими ограничениями)

Робот рассказывает разные динамически получаемые из Интернет анекдоты, тосты, интересные факты, получает курсы валют с официального сайта ЦБ РФ и озвучивает их дельтой (вырос на, не изменился... обратите внимание, что дельта озвучивается согласно правилам русского языка в винительном падеже ~ вырос на одну копейку).

Обязательно попробуйте, позвоните роботу! Известно, что любой анекдот рассказанный роботом на 20% смешнее!

PS1: К сожалению, ранжирования анекдотов по "качеству"/веселости нет - это уже был бы совсем не хобби проект (и чувство юмора у всех разное). Всё случайно выбирается из большого пула, на самом роботе только небольшой кэш.

Но я долго тестировал и уверяю, что часто попадаются смешные и очень смешные шутки. Кроме того, часто, несмешной анекдот, но произнесенный с драматическими пазуами "не там" - тоже смешно ;-) А уж от курса ЦБ если вы в дороге/перед обменником с простым телефоном - точно будет польза.

PS2:
Буду рад, если найдутся специалисты по звуку, которые подскажут linux утилиту/название эффекта для "де метализации голоса". Искал не нашел. Сделать как робот есть. Сгладить робота в нечто более человеческое - пока ничего.

Как это сделано:

В Уфе есть хорошая компания http://nettrans.ru/, у которой есть своя городская АТС, городская нумерация, шлюзы Cisco AS 5350 и сервис colocation.

Таким образом там стоит мой сервер с linux, asterisk и java, на который бесплатно был переадресован номер 2934512 (один обычный dial-peer на AS). Это обычный уфимский городской номер, т.е. если вы в Уфе, то для вас звонок может быть (см тариф вашего оператора) совершенно бесплатным.

На сервере: centos.org, asterisk.org, Sun/Oracle JDK 6 Update 21, Spring Framework, asterisk-java, Sound Exchange, Festival Speech Synthesis System и FestLang, Festival Lite, RHVoice , tomcat, slf4j.org (надеюсь все перешли на него?! Скажем "Нет!" JCL и самодельным оберткам).

Т.е. работает asterisk и tomcat, а само приложение представляет собой обычный web application( .war), который управляет asterisk и вызывает linux утилиты для обработки звука.

Для склонений числительных (дат, времени, денег), а также комбинирования статических звуковых файлов, временных файлов сгенерированных tts и собственного динамического контента (числительные, даты, время, деньги ;-) был написан свой генератор/плеер JVoicePlayer - о нём подробнее в следующих публикациях.

При звонке, приложение озвучивает меню, получает выбор пользователя - делает стандартные HTTP GET запросы в сеть Internet, получает контент как текст, подчищает, разбирает на фразы, передает в tts/JVoicePlayer и играет в канал Asterisk.

От редакции. Потестируйте сервис. Это реально обычный номер, не premium call (проверено :). Реальный пример интеграции голосовых сервисов и сети, собранный, между прочим, на Open Source решениях.

Можно и возразить относительно бесполезности для оператора. Если звонят свои пользователи - это их голосовые минуты (тариф), а если чужие - то все равно есть плата за приземление звонка, которую получает оператор.

И очень здорово, что есть живой номер, на котором такого рода сервисы можно попробовать. Эта тема нам близка. В обратную сторону (публикация голоса в сети) AbavaNet делала много различных сервисов. Например, голосовые SMS, Объявления 2.0, VoiceLJ и VoiceLI т.д. Вот еще некоторые ссылки: Аудио-газета,подкасты.
Не было, к сожалению, никакой технической возможности запускать их где-то еще, кроме короткого номера. Но это было неправильно - в таких сервисах нет премиальности.
Ну и интересно было увидеть реальную работу сервисов с бесплатным tts.

1 comment:

Andrew Fink said...

Если на этот номер позвонить с Москвы, то звонящий заплатит (допустим) 1.5рубля, а nettrans получит 20 копеек за терминацию трафика.

Богатеют богатые (тройка, электросвязи)