Try Export["~/Desktop/test.txt", Compress@sound] and in = Uncompress@Import["~/Desktop/test.txt"]. The way you did it, it gets imported as a string. There's other ways, but the one I present is what I always use to export/import arbitrary data structures: it's cross-platform and robust (as far as I can tell).
Regarding the second example and the comments:
tubadat = ExampleData[{"Sound", "Tuba"}, "Data"];
ListPlay[tubadat, SampleRate -> 22050]
Export["~/Desktop/TubaDat.txt", Compress@tubadat];
in = Uncompress@Import["~/Desktop/TubaDat.txt"];
ListPlay[in, SampleRate -> 22050, PlayRange->{-1,1}]
tubadat == in
works; the sounds seem identical and tubadat==in evaluates to True. Note that setting the sample rate is necessary (it defauls to 8k).
To summarise, you need to
make sure you're importing in the right format (your original code ended up importing as a string)
fix the sample rate as it defaults to the wrong values for this case.
possibly fix the max amplitude (otherwise the sample is amplified or clipped)