Вместо этого:
webbrowser.open(start_url + voice_note.replace('open', '').replace('%20', '') + end_url)
Используйте функцию strip ():
webbrowser.open(start_url + voice_note.replace('open', '').strip() + end_url)
Или проще говоря:
webbrowser.open(start_url + voice_note.replace('open', '').replace(' ', '') + end_url)
Причина в том, что выпытаясь заменить "% 20", а не пробел. % 20 - это закодированное значение пробела в URL.