At the most basic, your page will need to have a hidden <audio>
element and some javascript to trigger the playback.
You can simply add the URL of the audio file for each post to your custom field, then call get_post_meta()
in your template to bind it to the player. Then on the frontend you can bind a click handler to your button that plays the pre-defined audio element.
The custom field (named audioURL in this example)
http://absolute.url/to/audio/file.mp3
In your template file
<audio id="audioPlayer" src="https://wordpress.stackexchange.com/questions/244689/<?php get_post_meta(get_the_ID(),"audioURL', true); ?>" preload="auto">
The JavaScript
// Vanilla JS
document.getElementById('yourButtonID').onclick = function() {
document.getElementById('audioPlayer').play();
}
// Or if you're using jQuery
$('#yourButtonID').on('click', function() {
$('#audioPlayer')[0].play();
})
Hope this helps!