Amplify quiet passages in an mp3 file

The best way to do this is a Dynamic Range Compressor. Audacity has one built-in, under "Filters->Compressor."

This is, essentially, a program that removes the range between quiet sounds and loud sounds. It's surprisingly easy to use.

Set the "Threshold" value to something very low. Set the "Noise floor" to around -30DB. Set the ratio to a very high fraction -- Most of the time, I max it out at 10:1. Then check the "make-up gain for 0db" box.

Set both the attack and decay time to the lowest possible values. These are useful when applying compressors to music, but for speech, they just make it sound weird.

Here's an example. I made a quick audio file, which contains myself speaking both very softly, and very loudly (using the Windows version because I happened to be booted into Windows while answering this, but the compressor interface is almost exactly the same on all platforms): An audio file with a wide dynamic range

Now, I apply the "Compressor" filter to it:

Me applying the filter.

And, viola, the quiet parts and the loud parts are roughly the same volume. File post-compression