foreach argument to get specific file types getting too many returns

You can add 'post_mime_type' => '...' to your $args, as in:

$mime_types = array ('audio', 'application') ;
$args = array (
    'post_type'         => 'attachment',
    'post_status'       => 'inherit',
    'post_mime_type'    => $mime_types,
    ) ;
$query = new WP_Query ($args) ;

See Mime-Type Parameters for more info.

It’s not documented very well but the mime-types you set can be “partial”, i.e., audio will match all audio formats, whereas audio/mp3 will only match MP3, etc.

I’m not sure what mime-type your “TRANSCRIPT” has, but I’m sure you do.