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