Longer time ago in Elektor a Driver was built with an BS170 / BS250 pair as driver for the PWM signal.
The full PWM Voltage goes to this pair.
The "filter" is then the slew rate of loudspeaker.
For my last project ( MiDi Metronom ) I used a LM 386 too.
As filter I used a T filter with inductors and a capacitator at the LM386 input, because the signal goes to a High Power Amp.
And It's not a good Idea to put there 77KHz rectangular in.
As source File You can use any 8 Bit raw mono audio file.
With a tool ( xxd ) You can covert that direct into C-Code and use it.
Look here:
https://github.com/baldram/ESP_VS1053_Library/issues/18
So You can play any alarm sound You want.