Here is a couple of insights for your system:
1.- The different sound sources must play different signals (beacons), that may be resolved at the receiver device. A simple example would be to transmit a set of tones (one by speaker) with different frequencies. A slightly more complex solution would be to transmit other kind of signals with low cross-correlation (e.g. Gold, Kasami or Zadoff-Chu sequences).
A different approach at all would be to transmit actual modulated messages that somehow don't interfere each other at the receiver. This is usually even more complex.
2.- Regarding the method for distinguishing the different signals at the receiver, the typical solution is to use a set of matched filters (one filter for each beacon signal). Then, determine the TDoA by measuring the differences between the time indexes in which you find peaks at the matched filters' outputs.
On the other hand, if you really need to use modulation/encoding, a simple set of matched filter won't be enough, you will probably need to implement actual demodulation schemes, which may include synchronization algorithms and other practical restrictions.
According to my personal experience, and considering your introduction lacking much detail, you may successfully use a set of (frequency separated) tones at the transmitter, and a set of matched filters at the receiver. At least as a first approach, and if the performance is not good enough for you, you may use more advanced techniques. I honestly believe that in most cases no further cumbersome techniques are required.
I hope this helps!