If you refer to sounds in Hammer using their raw directory location and filename (e.g.
sound/mysounds/sound.mp3), they will play quietly in-game. It's not Hammer's fault, it's the way the game handles the sounds.
If you want your sounds to play at a respectable volume you must turn them in to 'game sounds' by
making your own custom sound script for your map. The sound script is an external file that you include packed inside your BSP, and it refers to each custom wav or MP3 file. It presents the game with a 'game sound name', typically taking the format
category.sound_description. In this script file you specify volume, attenuation, speed and channel (is it an announcement, a voice line or a general sound?).
If you want a sound file to be heard at a persistent volume throughout the world (not attenuated by distance from a source point), you simply set the 'Plays Everywhere' spawnflag, if you are using an ambient_generic. If you are making your own custom soundscript, you can set the attenuation in the script for that sound to
SNDLVL_NONE. If you set your sound properties in your sound script you mostly won't need to touch the settings inside your ambient_generic as the properties in the sound script will take precedence. Using an external sound script means you don't have to recompile your map to test changes to your sounds. You can change the properties of each sound in the script and reload the map.
If you are playing voiceover lines to your players, like announcer lines, you don't need to use ambient_generic for each line. You can send an output to the tf_gamerules entity, using its PlayVO input, specifying the game sound name as the parameter (use PlayVORed or Blue to play a sound for only one team). You can find the TF2 sound scripts in the scripts VPK dir file, packed under the scripts directory.
MP3 files should always be used (128kbps, 44khz Stereo), unless you need the sound to loop, in which case use a looped wav file. Save the wav file using the MS-ADPCM codec for the best compression. Audacity and GoldWave support this codec (Audacity may need FFmpeg, I can't remember). If you are playing background music in your map, you may find that it continues to play in to the next round. You can combat this by fading it out or stopping it when one team wins, using logic (tf_gamerules also has some OnWin outputs). Alternatively, use the raw file path for your sound, rather than a game sound name, and remove the tick from the 'Is NOT looped' flag. This combination of settings makes TF2 stop the sound when the round changes, oddly.
If you want a good example of a custom sound script used in a deathrun map, download
dr_castle_steveh and extract its sound script (maps/dr_castle_steveh_level_sounds.txt). Decompile the map if you want (it's mine). Bear in mind that if you make a custom sound script Hammer won't be able to see its contents so you will have to work in blind faith. You can probably add your sound script to the scripts/game_sound_manifest.txt file, though (can be extracted from the VPK if it doesn't exist).