Ви берете змінну NAME, і намагаєтесь у кінці отримати у TRS транслітеровану її версію. Для цього треба
1) присвоїти TRS значення NAME
2) виконати якісь операції над TRS
Що й робив початковий скрипт. Ви ж переставили операції місцями, в результаті у вас іде транслітерація на порожній TRS, потім в самому кінці їй присвоюється значення NAME і проганяється через sed.
Тобто вам треба перше входження TRS з правої сторони від = поміняти на NAME, а NAME у рядку з sed поміняти навпаки на TRS.
Щоб транслітерація не відбувалася на розширенні — вам треба або його прибирати перед транслітерацією (щось типу ${NAME%.mp3}), або ж конвертувати назад вже після транслітерації (знайома операція заміни ${TRS/.../...}).
Також ви замінили лапки навколо $0 на одинарні. Цього не треба робити — одинарні лапки позначають рядок, в якому не відбувається розкриття змінних ($...).
Зауважу, що ваша версія скрипта іде рекурсивно по директоріям, але лише по тим, що закінчуються на '.mp3'.
Загалом якість коду (і оригіналу теж)