Eu instalei o SVOX pico2wave e criei um script. Agora, quando entro:
speech "Hello world"
O mecanismo de texto para voz do computador diz em voz alta "Olá, mundo". Além disso, eu uso na .bashrc
variável PROMPT_COMMAND
definida como:
PROMPT_COMMAND="speech 'Command executed.'"
Portanto, o bom mecanismo de conversão de texto em voz me anuncia em voz alta que o comando é executado, antes de retornar o prompt no terminal.
No entanto, isso fica entediante depois de um tempo e eu pensei que seria muito legal finalizar cada comando no terminal com o computador falando uma linha de texto diferente (pense no piloto automático do Starship Enterprise).
Então, criei no .bashrc uma variável de matriz, com diferentes mensagens:
array[0]="Shields at 90%"
array[1]="Engaging proton overdrive"
array[2]="Autopilot disengaged"
array[3]="Targetting solution available"
array[4]="Alert. Incoming missile."
array[5]="Deploying countermeasures."
array[6]="Firing torpedoes."
array[7]="Engaging auto-cannon."
array[8]="Severe damage on deck 17. Sealing off."
array[9]="Deploying repair droids to deck 17."
O que eu gostaria é que cada vez que eu execute um comando no terminal, a variável PROMPT_COMMAND
seja atualizada e leia uma linha aleatória diferente na matriz.
Presumo que preciso de um loop, mas não sabia como fazê-lo.
Ficaria muito grato por qualquer ajuda. Obrigado.
fonte
-l=de-DE
para o idioma local como-l=en-US
.speech
executável? É um apelido paraespeak
?Respostas:
Crie um script e salve-o em algum lugar que contenha suas linhas e a lógica para escolher uma linha aleatória da sua matriz e chamar o
speech
comando nessa linha:Em seguida, no seu
.bashrc
ou.profile
conjuntoPROMPT_COMMAND
:Apenas substitua o
speech
porecho
para obter uma mensagem em vez da voz.fonte
${array[$RANDOM % ${#array[@]}]}
estar entre aspas duplas?set -x
para ver o que eu estou falando :)Tutorial de edição posterior:
Graças à resposta da Ravexina acima, agora o problema está resolvido e a solução funciona de maneira fantástica. Vou dar instruções passo a passo abaixo, para as outras pessoas interessadas em fazê-lo funcionar no Ubuntu 18.04
1. Instale o pacote SVOX pico2wave:
2. Crie o script de fala
e coloque esse conteúdo, inserindo o usuário correto no caminho:
salvar e sair.
3. Crie o script shell_speech.sh conforme indicado por Ravexina acima:
salvar e sair.
4. Torne os scripts executáveis e adicione seu diretório ao PATH para que eles possam ser chamados de qualquer lugar:
5. Modifique .bashrc
adicione a seguinte linha:
salvar e fechar
Nota: você pode adicionar quantas linhas novas desejar na matriz em
~/scripts/bin/shell_speech
fonte
PATH
, você não precisa incluirbash
no seuPROMPT_COMMAND
e eu usaria aspas simples caso você adicione outras coisas posteriormente que precisarão ter a execução adiada:PROMPT_COMMAND='shell_speech'
/bin/bash
vez de um simplesbash
... (boas práticas, caso alguém coloque outra falha no seu caminho antes/bin
...). Eu devo até sugerir um arquivo aleatório temporário no/tmp
diretório, em vez detest.wav
em sua casa ... ps> dar uma olhada na fortuna .bash
é uma maneira de obter mais. Links, script, permissão de gravação em diretórios abertos, compartilhados ... Além disso - você pode perder - os scripts podem sobreviver até seu primeiro objetivo ou proprietário ... e você (ou outra pessoa) pode usá-los após um tempo suficiente que você não se lembra de todos os comandos escritos dentro (nós fazemos isso), sob diferentes condições. Colocar\bin\bash
o caminho explícito é uma boa prática. Para evitar fazê-lo ... um risco.