если удаляю ... начиная с playBtn.addEventListener('click', .... тогда воспроизводится. НО ... не меняется значек плей на пауза.Это выдает вас с головой - вы похоже вообще не понимаете смысл всего этого кода. Когда вы удаляете обработчик playBtn.addEventListener(click ... все функции которые расположены выше не делают вообще ничего, потому что их вызов только внутри этого обработчика и происходит.
window.onclick = function(){
audio.play();
}
Это важно, т.к. если изначально пустой, то у вас ни в какой момент не может быть больше одного необработанного хештега, и можно ставить курсор в тот тег, который вводится прямо сейчас. Если там может быть со старта текст с несколькими хештегами - все сложнее. Если там может быть со старта HTML - то есть идет редактирование поста, например, то все еще запутаннее.