For anyone interested, I put together a bit of a hack to handle repeater identification, for something like a Retevis RT97, which doesn't have a way to connect a real controller. It isn't as good as a proper repeater controller, but I think it could be good enough in many cases (or at least better than nothing). It certainly shows some intent to comply.
Essentially, I wrote an Android app which listens for sound and uses Android's text-to-speech capabilities to transmit a message. It will transmit this message any time it hears sound and it has been more than 15 minutes since the last time it identified itself.
I installed it on an old Android phone and connected it to a BTECH GMRS-V1 (with VOX enabled) using a BTECH APRS-K1 cable. The HT is configured to communicate through the repeater. So, the HT just needs to be reasonably close to the repeater to handle the identification function. It waits until things have been quiet for a second before transmitting, but it could still get walked on by any signal that is stronger. So, the identification won't always be heard, but I expect it would be heard a lot of the time. It would certainly be heard if someone was just "kerchunking" the repeater to see if they could bring it up.
I haven't published a release build, yet, but if you're interested, I could email you an APK file -- or you could just build it from the source: https://github.com/nathanchilton/remote-identifier