Instead of an ACK text, maybe an MD5 hash could be sent as part of the message. If the MD5 mismatches with the concatenated text message stream then you know you have a dropped or corrupted packet.
Unfortunately that does introduce additional complications like knowing which packet failed (maybe there's a better method for checksuming for this type of situation?), but even in the worst case scenario, it only adds a small overhead to infrequently resend the entire stream than to double up each stream with ACK responses.