Use at least a 20MHz oscillator. Below 20MHz it sounds pretty bad.

I built an auto dialer a long time back using DTMFOUT with only 1 cap & an 8-ohm speaker. It works great.

Didn't use any fancy filter circuits. Just 1 cap and a speaker.

Code:
         10uF     speaker
RB0 ----+-)|---------(  )--------GND.