Как уже сказали выше, есть много инструментов для распознавания речи, вам надо использовать их, а не писать свое.
Далее. Предположим, вы распознали голос и получили на выходе, грубо говоря, String переменную с фразой, произнесенной в микрофон. 
Тут уже начинаются ваши сложности. 
В вашу пользу играет то, что у вас есть N тэгов (заранее встроенных в приложение), по которым распределяются расходы. Например: Еда, Мобильная связь, Обучение, Кредиты, етк.  Их число ограничено,  не бесконечно и известно заранее.
Дальше ваша цель - составить "словари" для распределения этих String переменных по категориям. 
Из сложностей - разный порядок слов, синонимы и просторечия, излишнее и\или недостаточное описание + дефекты распознавания речи. 
Решите для себя следующую задачу: 
У вас есть 15 текстовых описаний расходов в произвольной форме (начиная от "сегодня я потратил пятьдесят тысяч рублей на баночку вкуснейшей черной икры" и заканчивая "пятихаточка на мобилу"). 
Вам нужно соотнести их по категориям расходов. 
Как? Словари, ключевые слова, максимальное количество совпадений. Как-то так. 
Когда закончите с этим - прикрутите распознавалку речи и проблем уже не будет.