How to find the time instant where my sent signal and received signal can synchronize?
This is usually addressed via looking for a known pattern in the data frame. 

The modulation scheme is not mentioned but when synchronisation is required, a Phase Locked Loop (PLL) is most commonly employed. The PLL will track the received signal and tune a local oscillator to its frequency AND phase. When lock is achieved the signal that a local oscillator produces (at the side of the receiver) is perfectly "aligned" (or synchronised) with a component of the received signal (for example, the carrier). At this point, demodulation of actual information can start. 

This still leaves us with the problem of knowing which bits in this stream of zeroes and ones produced by the demodulator are the actual message bits. For this reason, a known sequence of bits is used to mark the start of the actual frame. For more information, please see section "Preamble" from this link.

Of course, the PLL tracks the received signal continuously and counteracts phenomena such as Doppler (for example), which might have a significant effect in acoustic communications. So, in general, it would be worth implementing the PLL part.

Alternatively and if you are only interested in a play-back -> Record -> Demodulate kind of operation, then you can insert a sequence of symbols at the beginning of the transmitted information to force the modulator to produce a short segment of "known signal". A sequence of 10 zeroes for example, could be used to produce a segment of a clean sinusoid. At the receiving end and once you have recorded your signal, you can use cross-correlation to align (in an one-of manner) the known signal with the received and then use this (static) information to demodulate the rest of the received signal. This is still, in a very rudimentary way, what a PLL would do anyway.

Hope this helps.