Из идей: надо бы попробовать несжатый звук передать (но хватит ли пропуской способности, не знаю) - проверить, не сжатие ли это влияет.
Еще есть I2S микрофон у меня, его попробовать подключить (пока не знаю, как именно, но вроде что-то такое в SDK есть).
У вас наиболее вероятно, по моему мнению, ошибка либо в коде либо в схеме.
Поэтому перебор всего и вся методом тыка ничего не даст.
-----------------------------
Если хотите решить проблему, то надо проводить тесты и искать источник, а не лепить код вслепую.
===================
Предлагаю Вам проверить качество сигнала с цифрового микрофона и его сравнение с картинкой сигнала на выходе.
-------------------
Надо сделать вот такой тест.
1) в любой доступной Вам точке получения преобразованного сигнала надо получить данные либо в виде файла либо в виде графика.
2) На входе подключаете цифровой микрофон, Сам микрофон помещаете в пенопластовый кубик, а кубик накрываете стеклянным стаканом.
Таким образом создаем тишину.
Сигнал с выводов микрофона Data и clk записываете в логический анализатор, если нет анализатора то хотя бы на картину осциллографа.
--------------------
Если не сможете сами проанализировать адекватность данных , то выложите или пришлите мне.