It's the same deal for "met" and "heard", so to keep it simple I'll just use "met" in the examples.
"I met him" means that I'm talking about a specific time in the past when I met him
"I have met him" means that I've met him on one or more occasions on the past. It's not important when those occasions were; all I'm trying to get across is that I have met him at some time.
However, if the word "before" is added, and the sentence ends there, then this often implies the second meaning (because "before" itself often means "at some time(s) in the past"). I would therefore usually say "I have met him before" to avoid an inconsistency between the tense and the word "before". But other speakers may not agree with this, and so you might well hear "I met him before". I get the impression that the latter form might be more common in American English, but a native American English speaker would need to confirm that. An additional complication, though, is that "before" can also be used to mean "recently", or "a little while ago". In this case I would not use "have". For example, if I was introduced to a visitor for a second time then I might say "I met him before".
If "before" is followed by a time reference then "have" is normally not used. For example, "I met him before I joined", not "I have met him before I joined."