Вообще формула простая, я думаю автор до нее дошел, осталось только правильно ловить фронты звука.
alfa = arccos((t2-t1)*Vs/L), где t2-t1 - разность времени, Vs - скорость звука, L - база (расстояние между микрофонами).
На самом деле можно сразу вычислить базу в микросекундах: T = 10^6*L/Vs. Vs=340 м/с, 1 см = 29.4 мкс.
Тогда alfa = arccos((t2-t1)/T).
Если источник звука близко - будет небольшое отклонение от этой формулы, в связи с тем, что фронт звуковой волны - окружность, а не прямая, но для расстояний бОльших 3-4 баз этим можно пренебречь.
"У каждого говорящего базовая частота основного тона индивидуальна и обусловлена особенностями строения гортани. В среднем для мужского голоса она составляет от 80 до 210 Гц, для женского — от 150 до 320 Гц" (с) вики. Буква А - это не И, будем считать что не выше 200 даже у детей. 200 гц = 5 мс, 1 мс = 340 мм, т.е. 5 мс это полтора метра, а то и больше. Значит, робот вполне может работать с отдельными фронтами гласного звука, наловить скажем несколько десятков разностей фронтов, усреднить, выкинуть самые "непохожие" чтобы не портили статистику и уже результат подставить в формулу выше. Естественно arccos считать не библиотечной функцией, а по таблице приближенно.
Кстати, сразу видно что АЦП аврки тут не сильно подходит, потому как у него одно преобразование пары значений - 130 мкс, да еще и не одновременно, а у нас разброс фронтов при расстоянии 10 см около 300 мкс максимум, получаем меньше 3 градаций возможных. Но! АЦП аврки можно разогнать, тут бродил пример вообще с видеосигналом. Но я считаю, что обычных ног порта должно хватать, главное правильно намерять и хорошо усреднить.