Eu tive um problema semelhante e encontrei uma solução alternativa. Em vez de usar spd-say eu usei o espeak diretamente.
Tenho certeza de que isso é bastante elementar, mas não consigo entender.
Meu script:
#!/bin/bash
sez ()
{
echo $1
spd-say "$1"
}
sez "does this work"
sez "this does work"
O que estou tentando fazer é usar o spd-say em uma função para fazer o computador falar comigo.
A parte de eco da minha função funciona. Ele produz as duas linhas de texto que eu forneço a ele na ordem esperada. No entanto, a parte do spd-say não. Apenas diz a última linha. Estou assumindo que é porque o segundo comando é "sobrescrever" a saída do primeiro porque ele está tentando executá-los em paralelo com a mesma saída. Eu tentei adicionar; wait, & & amp ;, e várias outras coisas ao final do comando sez, na próxima linha depois, dentro da função no comando spd-say, etc, mas tudo o que estou tentando é isn ajudando.
O que estou fazendo de errado?