ТЕКСТ: АНДРЕЙ ЕРМОЛАЕВ. Добрый день. Хочу поделиться с вами историей, как небольшой эксперимент перерос в полноценное приложение, которое c большим трудом, с четвертого раза, пропустили в App Store. Но в результате все мои усилия оправдались.
Все началось с того момента, как Apple выпустил iPhone 4S, и началась широкая рекламная кампания голосового ассистента «Siri». К сожалению, «Siri» не поддерживала русский язык и ее геолокационные сервисы не работают за территорией США. Купил я это чудо техники, побаловался разговором с «Siri». Скажу честно, понимала она мой английский с третьего раза и это мне быстро надоело. И стал я ждать, когда наши разработчики сделают что-то подобное. Но время шло, Apple не торопился русифицировать «Siri» да и русские разработчики не проявляли инициативу.
Тогда я сам решил провести эксперимент, насколько сложно самому сделать такое приложение. Конечно речь о полном аналоге «Siri» не шла. Я прекрасно понимаю, какие требуются ресурсы, для создания полноценного русскоязычного аналога «Siri», но хотелось создать что то очень похожее.
Разработка
Вначале я продумал логику приложения. Я решил все преобразования речь–в–текст и текст–в–речь сделать на сервере, а приложению предназначалась только функция интерфейса. Такое решение работало бы и на самых слабых устройствах, а также обладало кроссплатформенностью. Таким образом логика приложения получилась такая: записываем речь собеседника, передаем ее на сервер для распознавания, используем звуковой движок для распознавания речи, анализируем распознанную строку и формируем ответ, преобразуем строку обратно в речь и передаем на телефон ссылку на mp3 поток, телефон воспроизводит ответ. Получается немного запутанно и медленно, но другого пути нет. Продумав логику, я взялся воплощать это все в жизнь.
Аппаратная часть затруднений не вызвала. Выбрал звуковой движок, заказал выделенный сервер, настроил все это, проверил работоспособность и взялся за логику. Начал читать литературу по искусственному интеллекту и анализу речи. Понял, что все это очень сложно и решил пока просто разобрать предложения на фразы, сделать простейший анализ и выделить ключевые слова. В результате составляю базу знаний, сравниваю, выделенные из предложения, ключевые слова с базой. Потом, выдаю на преобразование в речь, ту фразу, которая наиболее полно соответствует запросу.
Серверную часть написал на PHP. Чтоб к серверу не обращались посторонние и не «уронили» его, предусмотрел передачу телефоном специального токена, который жестко зашит в приложение. Приложение, также, передает на сервер свои координаты для использования в геолокационных сервисах. Сервер записывает в базу данных UDID телефона и все вопросы пользователей, а также ответы на них. Сделано это по двум причинам. Во первых анализируя вопросы и ответы, можно оперативно узнавать пожелания пользователей и оперативно пополнять базу данных, а также смотреть где программа дает неверные ответы и поправлять ее. Во вторых это сделано на будущее, по UDID телефона приложение может отслеживать ветку разговора, прошлые вопросы конкретного пользователя и соответственно более интеллектуально строить беседу. Само приложение на телефоне трудностей в разработке вообще не вызвало. Несложный интерфейс, и обычные http POST и GET запросы, пара дней времени и приложение готово.
Ревю
Запаковав приложение, и отправив в Apple на ревю, я стал ждать результата. Если бы я только знал, что мои проблемы только начинаются. Приложение проходило ревю четыре раза, висело в статусе «In Review» по пять дней, что очень странно. Обычно им хватает одного двух дней для ревю. Требования Apple были порой не логичные, а на письма отвечают весьма пространно, в лучших традициях советских бюрократов. Но, надо признать, очень оперативно. В первый раз отклонили, написав очень похожа (so similar) на «Siri». Очень похоже, конечно, понятие растяжимое. Пишу им письмо с вопросом, что надо изменить, поменять дизайн или функционал. Получаю весьма пространный ответ, мы вам не можем сказать что надо изменить, просто сделайте не похоже на «Siri» и присылайте опять на рассмотрение.
Был еще один интересный момент. Пока в apple размышляют казнить или помиловать, решаю глянуть на сервере чем там apple у моего приложения интересуется. Ведь все вопросы и ответы заносятся в базу данных. И вижу я по базе данных, что как минимум с трех разных телефонов, «пытает» apple мое приложение. Вначале они на английском спрашивали “test”, “google”, потом, видать, нашли русскоговорящего сотрудника, и он уже повел диалог на русском. Спрашивали «привет», «как дела», «погода в Москве». Решаю подшутить над сотрудниками apple, меняю в базе ответ на вопрос «погода в Москве» на «Откуда я знаю какая погода в Москве, я же тут в Купертино отвечаю на Ваши вопросы». Шутку не оценили и приложение отклонили, конечно не по этой причине. Иконка микрофона видите ли им очень иконку Сири напоминает. Но ведь у Сири иконка круглая, а у меня квадратная. Но решаю не спорить, а просто меняю иконку и перезаливаю приложение.
На третий раз они потребовали убрать вообще из приложения и с иконки все изображения микрофонов. К этому моменту я уже с ними не спорю, а просто делаю что они говорят, так получается быстрее. И когда я уже ни на что не надеялся мне в почту, неожиданно, сваливается письмо из Apple, что приложение одобрили. Ну наконец то!!!
Что в итоге получилось
На сегодняшний день, приложение может следующее: показывает прогноз погоды, согласно местонахождению; показывает текущее время; ищет в интернете фотографии и картинки; умеет звонить абоненту из адресной книги; определяет и показывает на карте ваше местонахождение; находит на карте ближайшие к вам объекты (ресторан, бар, аптека); ищет авиарейсы; показывает отели и цены на них в указанном населенном пункте. Многие команды, доступные на телефонах с «Siri» были убраны по требованию Apple.
Зато с приложением можно просто поболтать «за жизнь». Оно пытается поддержать разговор и отвечает на простейшие вопросы. Иногда отвечает не в тему, отчего получается еще забавнее.
Постскриптум
Слово «аналог» не зря взято в кавычки. Я прекрасно понимаю, что для создания действительно чего то похожего на Siri, нужны гигантские ресурсы и много средств. Приложение, по этому, и размещено в категорию «Развлечения». Зато, программа работает на всех айДевайсах с прошивкой 4.0 и выше: iPhone 3GS, 4, 4S, iPod touch, iPad 1, 2, 3.
Ну и напоследок промокоды: если у вас на форуме больше 200 сообщений, напишите с вашего аккаунта в личку админу «Хочу пообщаться с Катей». В ответ получите промо-код. Их всего десять.
Цена: $1.99 [iTunes link]
70 комментариев
Форум →Хочу пообщаться с Катей :)
Сразу вспомнилась Catterpilar или как там её, которая стала потом Катей, всего-то 4 года тому назад
@2iPhones, код выслал в личку на форуме.
@Информатор, спасибо! Будем общаться :)
Не куплю из за убогого дизайна. Простите за откровенность.
@suponix, +1. Простите за +1. И за откровенность.
Я тоже хочу:
Хочу пообщаться с Катей
@Aleksandr10rus, здесь ничего просить не надо. Только через форум, только при >200 сообщений.
Грязные ногти рулят !!!! Как и приложение видимо…..
Хочу пообщаться с Катей
Ужасный голос, не красивое видео, не красивый интерфейс, фифифи
Специально даже авторизовался чтоб написать.
Как они могли выложить приложение с таким ужасным интерфейсом? Им не стыдно? У них внутри ничего не дрогнуло даже наверно…
Земеля :).. неожиданно.
Успехов в развитии.
@TAIFUN, Спасибо!
Можете что-то лучше – вперед!!!парень без ресурсов имея лишь знания,пару книг,и iPhone создал приложение,а вы ничего кроме негатива из себя не представляете!
@emil4ik, Спасибо за поддержку. Дизайн пришлось упростить до невозможности. Эпл все нормальные варианты отклонял, говорил похоже на “Сири”. Так что пришлось сделать так, чтоб не подкопались.
Хочу пообщаться с Катей :)
Только что купил.Ругаться матом не буду.Лучше поддержу и буду ждать развития програмки.Спасибо первопроходцам:)
Странно что пропустили. А вообще как насчет закона о сбора и хранения персональных данных? Тем более о месте нахождения пользователя плюс вся статистика. Без письменного согласия хранить данные, которые тем или иным способом могут идентифицировать пользователя – просто незаконно.
@Whilser, Персональными данными называются данные, по которым можно однозначно идентифицировать пользователя. А по фразе и координатам не возможно идентифицировать пользователя. Кстати определение координат можно легко запретить.
@Andrey Ermolaev, А как же UDID?
В любом случае, жду выхода официальной русской Siri, “поделки” мало интересны, тем более с брешами в безопасности.
@Whilser, Тут уже обсуждался этот вопрос. UDID телефона не относится к персональным данным.
Автору программы:
Удачи в развитии приложения, одна просьба, исправьте грамматические ошибки. Это же просто ужас.
Как пример: “может лучше Вы мне что то расскажите, а то …”
Ни запятых, ни дефиса в “что-то”, в слове “расскажИте” в этом случае вместо И ставится Е.
Это очень отталкивает от приложения. Как говорится, в человеке всё должно быть красиво.
@turboforik, Перед “а то” запятую поставил на автомате. У Вас её нет.
@turboforik, Уже исправил. Спасибо.
Хочу пообщаться с Катей :)
@slatvick, ник на форуме @viaphone
Тоже не прочь “Хочу пообщаться с Катей”
Все верно приложение такого класса одному сложно создать
Ведь не все програмеры еще и художники.
Ели есть команда тогда проще. Но все равно молодца. Главное чтоб сервак не умер от запросов.
@Tolin, Да вроде держится пока сервак. Хотя бывают нарекания от пользователей.
Почему mp3??? На обычном EDGE я думаю ваша программа будет думать по несколько минут?
Какое то преобразование записи по моему лучше делать на телефоне. Как это делает shazam. Он отправляет на сервер только несколько байт midi. С текстом однозначно сложнее.. Но имея базу из несколько сотен тестировщиков можно спокойно преобразовывать в тот же midi на телефоне и отправлять по 2 файла. После того как мы соберем базу midi можно отказываться от mp3.
Сама реализация как собственно я и говорил в похожем топике несколько недель назад. А все отрицали правду :)
Обычные опенсорс решения по распознаванию… Никакого “УХ” не наблюдается.
@GoSo, Ух ты! В midi! Из wave! Любой звук!!! В несколько байт!
В спортлото писали?
Андрей, написал Вам через сапорт iTunes не знаю дойдет до вас сообщение или нет – есть движок семантического анализа для классификации текстов на естественном языке, работает с вероятностью верной классификации текста – 70-85%. Можем дать попользоваться, по крайней мере как то это обсудить. Если интересно свяжитесь со мной. Мой ник в скайпе такой же как тут , почта – jarwhite на гмаил ком .
@jarwhite, Добрый день. Все получил, очень заинтересовало. Обязательно свяжусь с Вами.
Здравствуйте, Андрей!
Хочу спросить, как конкретно инициируется телефонный звонок по имени. Дело в том, что в ответ на просьбу позвонить такому-то, находится соответствующая запись в адресной книге, но потом набирается непонятно что, за этим следует сообщение “набранный номер не существует”. В записи два телефона (“сотовый (избранное)” и “iPhone”), два e-mail, skype, день рождения. За какое поле может ошибочно хвататься программа вместо номера телефона? (Встроенный в систему Voice Assistant все делает правильно)
И еще, не планируете сделать автоматическое завершение запроса по паузе? А то два раза нажимать на кнопку как-то не очень…
@Afx40, Здравствуйте. Такое может быть если у вас номер занесен в международном формате со значком + впереди. Так было сделано, чтоб детишки не вызвонили случайно за границу все деньги. Уберите плюсик и код страны и должно быть все ОК.
Для лучшей работы с контактами я советую создать псевдоним к контакту. Находите нужный контакт, нажимаете изменить, пролистываете до конца и нажимаете на кнопку “Добавить поле”. Находите там поле “Псевдоним” и заполняете его. Теперь при необходимости позвонить просто произносите добавленный псевдоним.
@Andrey Ermolaev, спасибо за ответ. Когда “+7” заменил на “8”, помогло.
@Afx40, По паузе есть завершение запроса. Просто наверное пауза длинная:)
@Andrey Ermolaev, ой, действительно, я просто был нетерпелив :)
А что, распознает весьма недурственно! Для себя придумал тест – попросить найти фотографии бладхаундов. Что только не выдумывали в ответ все англо-“понимающие” Сирики… А Катерина с первого раза. Спасибо!
@Afx40, Рад, что Вам понравилось.
Хочу пообщаться с Катей :)
Хорошая работа и приложение, но ужасный дизайн
@beliv, Эпл заботится, чтоб никакое приложение ничем не напоминало Сири. Они заставили убрать все иконки микрофонов и еще много чего. Такова “плата” за то что приложение пропустили.
@Andrey Ermolaev, куплю сегодня ибо земляк и сам что-то делаешь :) Это заслуживает огромного уважения и благодарности. Мне очень нравится, что в моей стране есть люди, которые действительно как-то мыслят и не сидят на месте. Но следующий этап должен вывести это приложение на качественно новый уровень. Считаю, что неразумно прикрыватся Эпплом в плане пропуска приложения в стор. Да, дизайн сначала наверное действительно напоминал Сири, но суть не в том чтобы сделать его уродливым, а в том чтобы сделать что-то новое! :) Вы только посмотрите какой успех у Clear, хотя функционал ничем особым не отличается. Я считаю, что как старт сгодится, но дальше нужно работать над интерфейсом. Сделать его инновативным. Это мое мнение) Успехов!
@Waterfree Fish, Спасибо. Постараюсь!
“Приложение, также, передает на сервер свои координаты для использования в геолокационных сервисах. Сервер записывает в базу данных UDID телефона и все вопросы пользователей, а также ответы на них..” – вот это вот, ну очень не нравится… :)
@t_spot, Я же написал для чего это необходимо. Координаты телефона я не сохраняю, а только использую для показа погоды и местоположения на карте. А UDID сейчас использует очень много приложений, хотя бы для отправки нотификаций. Ваши опасения беспочвенны.
@t_spot, интересно, зная UDID, я смогу взять на твое имя кредит в банке или отследить, с кем ты спишь по нечетным числам? ПАНИКА ПАНИКА!
Хочу пообщаться с Катей )))
голос поменяйте Кати плз ) акцент и тормоз. понимаю что сырая еще, надеюсь на дальнейшие доработки. 2$ не пожалел при условии, что будет дорабатываться, не забрасывайте.
@akim_k, Спасибо! Не заброшу.
Купил, потестил, для начала неплохо. Будем ждать обновы)
@blackmouse, Спасибо. База данных и слов пополняется ежедневно.
@Andrey Ermolaev, вот это очень радует! кстати, Вы на третьем месте аппсторе в топ платных. удачи!
Большое спасибо за проделанную работу! Надеюсь это ускорит появление Siri на русском, а не отложит его :)
Приобрету обязательно!
Здравствуйте Андрей!
Меня очень заинтересовал Ваш проект.
По стилю изложения я почувствовал в Вас родственную душу.
Хочу предложить Вам свои силы в дальнейшем совершенствовании проекта.
Я являюсь автором математической модели, которая позволит Вашей Кате не только отвечать на вопросы, но и испытывать эмоции. Она сможет радоваться и грустить, обижаться и прощать, любить и ненавидеть.
Если это удастся реализовать, то это будет не «аналог» Siri, а намного лучше.
Предлагаю свои интеллектуальные и финансовые ресурсы.
Если Вас заинтересовало мое предложение, то прошу связаться со мной по электронной почте: мой ник собака km.ru
@peletor, Спасибо, обязательно свяжусь
в моем магазине (литва) нету :(
жаль, очень жаль, хотелось попробовть
@admiless, Что то я упустил этот момент. Сейчас добавлю.
@admiless, Добавил.
@Andrey Ermolaev,
жду как появиться :)
Сири у нас только как ассистент работатает, “нет информации о местах xxx в вашей стране…”
я не особо жду что будет поиск мест, но “отечественная” разработка все же приятно :)
@Andrey Ermolaev, появилась.
Будем тестить :)
@admiless, Отлично. Желаю успеха.
Interesting.
I’d like to talk to Katya))
Купил , чтобы поиграться,но так и не смог позвонить никокому из приложения добавлял псевдоним менял +7 на 8,создавал новый контакт – безуспешно
Андрей, добрый день.
Выражаю свою признательность, ваш проект очень интересен!
Работаю над большим стартапом в Лондоне, который потенциально станет новой вехой в развитии интернета. Напишите мне, расскажу больше, и подумаем о возможном сотрудничестве. ybaronov НА gmail ком
@formotion, Спасибо. Обязательно напишу.
@Andrey Ermolaev, Так держать! ) Надеюсь на то, что в конечном результате все будет работать так, как ожидается. Странно, что приложение пропустили. Работайте дальше) Принципиально КУПИЛ программу. Надеюсь вырученных денег хватит на стимуляцию Вашей дальнейшей работы) /меняйте голос на менее пугающий, нужно правильно ставить ударения в словах(хотябы в имени Катя), нужно работать над геолокацией (хочу находить ближайшие магазины и кафешки к примеру),интерфейс просто адский и его нужно менять.
Считаю, что если купертиновцы впустили такое приложение в магазин, то официальный выпуск сири не за горами!!
@Чудотворец, Большое спасибо. Обязательно продолжу работу.
@Andrey Ermolaev, какие движки для распознавания/генерации речи использовали, если не секрет ? Очень даже неплохо получилось.
Спасибо.
@Makca, Не секрет. Гугловские.
в моем магазине ( Portugal ) нету
Нашли орфографическую ошибку в новости?
Выделите ее мышью и нажмите Ctrl+Enter.Как включить тёмный экран блокировки на iPhone без Always On Display
Как просматривать сохраненные пароли Safari в iPhone
Как передать Slo-Mo видео через iMessage
Разделяем историю звонков и сообщений на двух iPhone с одним Apple ID
Можно ли перенести рингтоны с одного iPhone на другой
Как сделать снимок экрана на Apple Watch
Как включить виджет с днями рождения на iPhone?
Как быстро вводить эмодзи и специальные символы в macOS