Running small external speaker via 3.5mm connection
The 3.5mm output of the raspberry Pi is a line level output. It cannot drive a speaker directly. You will need an amplifier. Headphones/Earbuds vary, but are often 32 ohm, with a power rating of half or less watts. Most small speakers are 1/2/4/8 ohms, with a power rating of 1 or more watts. The line level output just can't drive them.

You can get a simple amplifier premade, or use a audio amplifier chip like the LM386 or TPA2080D1 and a few passive components and make your own.

Alternatively, you can buy a dollar store battery powered mp3/ipod speaker and gut it, powering it off one of the Raspberry's voltage output pins.