Как работает распознавание речи в iOS приложениях?
====================================================

 Здравствуйте, я начинающий дизайнер. Появилась идея сделать концепт финансового приложения, где расходы и доходы можно вводить голосом. Например сказать: «300 рублей на телефон» и приложение поймет и запишет куда надо.   
  

Я начинающий дизайнер и нет опыта в программировании, обращаюсь к вам, чтобы проверить свою идею на прочность. Даже если это только концепт, то чтобы это небыло просто набором картинок, а продуманное приложение которое можно воплотить в жизнь.  
  

Как я себе это представляю:  
  

Например человек говорит: «300 рублей на еду» — приложение понимает, что 300 это 300. Рублей это валюта. «Еду» — тег, то на что мы тратим эти самые 300 рублей. При этом приложение не должно записывать этот расход в тег «еду», а в тег «еда». При этом приложение должно само определять, что это расход (для этого в приложений будут предустановленные теги).  
  

Можно определять время: «Потратил вчера 300 рублей на еду».   
  

Повторяемые транзакции: «45 000 рублей зарплата каждый месяц 25 числа».  
  

Запланированные транзакции: «4000 рублей за свет напомнить завтра в 10:00»  
  

Перевод со счета на счет: «Снял с карты 5000 рублей» — переводит со счета «карта» на счет «наличные».  
  

Так же было бы неплохо сделать управление приложением через голос. Например: «удалить счет карта», или «удалить последнюю транзакцию», или «открыть настройки. Возможно ли вообще такое?  
  

Возможно ли реализовать такое в приложении? Насколько это сложно и т.д. Делали ли вы подобные приложения? Пользовались бы вы таким приложением?   
  

Спасибо. 

 От компании яндекс есть технология, она разрешает и поощряет ее встраивать в приложения для android and ios - SpeechKit Cloud API. 

 Как уже сказали выше, есть много инструментов для распознавания речи, вам надо использовать их, а не писать свое.  
**Далее**. Предположим, вы распознали голос и получили на выходе, грубо говоря, String переменную с фразой, произнесенной в микрофон.   

Тут уже начинаются ваши сложности.   

В вашу пользу играет то, что у вас есть N тэгов (заранее встроенных в приложение), по которым распределяются расходы. Например: Еда, Мобильная связь, Обучение, Кредиты, етк. Их число ограничено, не бесконечно и известно заранее.  

Дальше ваша цель - составить "словари" для распределения этих String переменных по категориям.   

Из сложностей - разный порядок слов, синонимы и просторечия, излишнее и\или недостаточное описание + дефекты распознавания речи.   
  

Решите для себя следующую задачу:   

У вас есть 15 текстовых описаний расходов в произвольной форме (начиная от "сегодня я потратил пятьдесят тысяч рублей на баночку вкуснейшей черной икры" и заканчивая "пятихаточка на мобилу").   

Вам нужно соотнести их по категориям расходов.   

Как? Словари, ключевые слова, максимальное количество совпадений. Как-то так.   

Когда закончите с этим - прикрутите распознавалку речи и проблем уже не будет. 

 Тут есть другой момент, через который вы "перескочили", сразу обратив внимание на технические вопросы распознавание речи. Момент этот - юзабилити. Идея, как я понимаю, в том, чтобы ускорить ввод информации - наговорить голосом легче, чем вбивать на клавиатуре, так ведь?  
  

А теперь давайте посмотрим полный сценарий использования приложения:  

1. Достать телефон  

2. Разблокировать его  

3. Запустить приложение  

4. Включить в нем режим ввода информации (голосом или вводом текста - неважно).  

И только после этого начинается, собственно, "*упрощение*". Спросите себя - какой процент от общей совокупности действий пользователя составляет это упрощение? Стоит ли игра свеч? Если пользователь **уже** выполнил **столько** действий "руками", то что мешает ему довести начатое до конца теми же самыми руками? :)  
  

Ведь, в отличие от Siri, например, которая является частью операционной системы и активируется прямо с экрана блокировки в пару нажатий, ваше приложение будет требовать от пользователя вышеперечисленных действий. 

 Голосовой ассистент:   
[Дуся](http://dusi.mobi/) (Android)  
[Cortana](https://ru.wikipedia.org/wiki/Microsoft_Cortana) (Win10, WinPhone, планируется iOS и Android)