The idea is to delay the sound (sometimes also reduce its amplitude) and add it to your original signal. Assuming that
Import["yourWavfile.wav", "Elements"]
yields:
{AudioChannels,AudioEncoding,Data,SampledSoundList,SampleRate,Sound}
the duration (in seconds) of your sound file is the length of your Data over the SampleRate (e.g. 20000). Thus to delay your signal by e.g. 0.2 seconds simply drop the first 0.2*20000=4000 points and add 4000 zeros at the end of the resulting list. In some cases you may also wish to reduce the intensity of the shifted measurements by multiplying by a given factor 0.5, 0.8 etc. (initially set it to 1). Finally, add the shifted signal to the original one and you should have an echo effect. I am sure there are more elegant ways to do it, here is my attempt (note that snd[[5,2]] is the SampleRate and snd[[3,2,1]] are your raw data):
echo[sound_, delay_, intens_]:=Module[{snd, shift, secondSnd, echoSound},snd = Import[sound, "Rules"];shift = delay*snd[[5,2]];secondSnd=PadRight[Drop[snd[[3, 2, 1]], shift], Length[snd[[3, 2, 1]]]];echoSound = intens*secondSnd + snd[[3, 2, 1]];Sound[SampledSoundList[echoSound, snd[[5, 2]]]]]
Try echo["MyWavFile.wav", 0.2, 1]
in which 0.2 is the delay in seconds and 1 is the amplitude of the shifted sound.
ListConvolve
). $\endgroup$