An audio amplifier opamp is designed for low noise but an LM358 is designed for low idle current which produces a lot of noise and crossover distortion. An opamp cannot drive a speaker, yours was severely overloaded and maybe the noise was overload distortion. You need a power amplifier to drive a speaker with plenty of current.
Since your comparator input is biased at 0V instead of at half the supply voltage then its output will be far from being symmetrical and it might not work. See post #4.
Since your comparator input is biased at 0V instead of at half the supply voltage then its output will be far from being symmetrical and it might not work. See post #4.