no content after shortcode

You forgot the closing </audio> tag at the end.

function html5_audio($atts, $content = null) {
extract(shortcode_atts(array(
    "src" => '',
    "preload"=> 'none',
    "loop" => ''
), $atts));
return '<audio src="'.$src.'" preload="'.$preload.'" loop="'.$loop.'" /></audio>';
}
add_shortcode('audio', 'html5_audio');