clipped from: ubuntuforums.org   
I've always wondered this--you should only have to restart linux if you change the kernel!--and I think I found out how:

do:

sudo /etc/init.d/alsa-utils restart

But sometimes this won't work if something is really holding on to the sound so do:

name@comp:~$ lsof | grep pcm
sh 5079 name 70u CHR 116,6 13639 /dev/snd/pcmC0D0p
esd 5080 name 70u CHR 116,6 13639 /dev/snd/pcmC0D0p

to find the process id and then kill it and restart:

name@comp:~$ kill -9 5079
name@comp:~$ kill -9 5080
name@comp:~$ lsof | grep pcm
sudo /etc/init.d/alsa-utils restart

and hopefully that will work.

I tried all of the above and nothing worked till I did
/etc/init.d/alsa-utils reset
One more thing to try.