It sounds like I should be hooking up 120 VAC to the speaker, using an NPN transistor
The simplest way is to use a transistor, with a lowish collector resistor say 100R. Then couple it into the speaker with a capacitor. That will stop excessive DC current through the coils but still allow AC to get through. The bigger the capacitor the louder it will be. Start off with 1uF.
The speaker has that 1.5W, 8 ohms rating.P = I*V, V = I*R, and so P = V2/R or...1.5 = V2/812 = V23.5 = V (approximately.)So you don't need more than 3.5V to drive the speaker. 110V would make sparks and let the magic smoke out.On the other hand, back to P=I*V, or 1.5 = I * 3.5 gives usI = 1.5/3.5 = 0.43A, more than 10 times the current output of the Arduino. That's why you need the resistor as well.With an appropriate limit of 40mA, you'd get P = I^2R or about 0.01W... (additional power dissipated in the resistors.)You could get some louder by connecting multiple pins to multiple resistors before connecting the speaker, adding their total current capability.Cheap powered speakers are so common and cheap these days that they're probably a better route.
Excuse the stupid question, but why not only use DC current? Does that harm the speaker?