The main problem (and there are several) is in your "sdriver" block. You have two saturating transistor amplifiers in series, with no way to control the gain or force them into a linear mode of operation. The simplest fix might be to change that block to a single "emitter follower" stage.
It looks like your speaker has a 100K resistor in series? That's not going to give you much sound.
Your op-amp seems to have a +5V / 0V power connection. The gain-setting resistor in the feedback network is connected to ground. Since your "sigriser" block biases the input voltage to a fairly low value, I guess the amplifier might be operating in the linear region (I haven't checked), but this isn't usual practice.
Your RC / sigriser circuit isn't much of a filter. It works somewhat, but could be simplified and improved. Not the source of your clipping problem though.
There's probably more, but you might start with this.