Não estou respondendo sua pergunta sobre como resolver o problema do script; No entanto, vou arriscar uma explicação sobre o porquê isso está acontecendo. O áudio é um fluxo que é enviado para o dispositivo de áudio, é uma comunicação unidirecional; Não espere mais resposta do dispositivo, uma vez que o alvo esteja localizado e o fluxo esteja em andamento. Como tal, não é fácil detectar quando o fluxo é interrompido, ao contrário de qualquer fluxo de dados bidirecional, quando seria óbvio que não há mais nenhuma comunicação; assim, depois que o fluxo é interrompido, por uma suspensão, o fluxo é interrompido e ele perde seu alvo. No entanto, não percebe que isso aconteceu devido ao processo de localização de destino acontecer apenas quando o fluxo está sendo iniciado; quando o ponteiro de memória é inicializado.
O trabalho mais provável é pesquisar e reinicializar esses locais de memória.
O Pulse Audio, ao que parece, usa vários buffers dependendo do hardware, o hardware é, naturalmente, o alvo final do fluxo. Qualquer um desses buffers, se eles perderem o ponteiro para o local da memória, interromperá a reprodução. Aqui está um pequeno artigo interessante:
É mais provável que dma esteja acontecendo durante este processo, de modo a liberar o fluxo de qualquer dependência pesada de cpu; claro, dependendo do seu hardware.
Espero que isso ajude de alguma forma.