A method of retrieving a watermark in a watermarked signal involves
processing a signal having odd- and even-overlapped blocks and where the
watermark is contained in the even blocks. For each k-th block, the
method comprises subtracting the odd-numbered blocks from the k-th block
of the watermarked signal to generate s*.sub.k(n), applying an FFT to
s*.sub.k(n) to generate a phase S.sub.k(f), calculating a phase of
S.sub.k(f) as .phi.(f) and a phase of an original signal S.sub.k(f) as
.phi.(f), calculating the difference .PSI.(f) between .phi.(f) and
.phi.(f); and retrieving the watermark embedded in .PSI.(f). A Viterbi
search may be the algorithm used to retrieve the watermark.