I'm fairly new to THREE JS but was working on a similar project in the recent past. To make the heart grow and shrink, I would invoke the Scale tool within the Animation loop of THREE.js :
count = 0
function render() {
if (count < 21){
heart.scale.x += 0.01
heart.scale.y += 0.01
heart.scale.z += 0.01
count += 1
}
if ((count > 20) && (count < 40)) {
heart.scale.x = cube.scale.x - 0.01
heart.scale.y = cube.scale.x - 0.01
heart.scale.z = cube.scale.x - 0.01
count += 1
} else if (count == 40){ count = 0}
renderer.render( scene, camera );
}
You could also use Tween JS for a more clinical and realistic heartbeat function.
for Sound, take a look at this example : http://threejs.org/examples/#misc_sound
for setup with your LeapMotion, I would imagine that you would have a conditional that triggers the animation loop when receiving input and triggering the beating heart and sound loop. Syncing the animation and sound loop should be straightforward.
Hope this helps.