I found this page showing how to make an audio player using an SD card and an AtTiny85: http://elm-chan.org/works/sd8p/report.html
Supposedly the sound quality is higher that it would be with a typical Arduino because the AtTiny has faster PWM. If I understand correctly, this is because the AtTiny can do PWM at 64mhz and playing a 44100hz file for example at 10bit precision requires at least a 44mhz pwm speed, something beyond what a standard Arduino can do.
I found this video on Youtube where the output has been amplified so you can really hear the quality of it: http://www.youtube.com/watch?v=RVC_nLZy-T8
If you wish to output the sound to an amp of course, you need to filter it. But I was wondering... it seems a bit nonsensical to convert the output to analog to then input it into an amp. Would it not be more efficient to simply have the PWM output switch a mosfet on and off?
And with the switching frequency being so high, is there any need to actually filter the output if it's going directly into a speaker?
It seems like using an AtTiny85 running at 3.3v, with an SD card attached, and driving a logic level mosfet which powers a speaker directly from your battery would be a good way to get some fairly loud audio out of a simple and inexpensive setup.