Instalé SVOX pico2wave y creé un script. Ahora cuando entro:
speech "Hello world"
El motor de texto a voz de la computadora dice en voz alta "Hola mundo". Además, uso en .bashrc
la variable PROMPT_COMMAND
definida como:
PROMPT_COMMAND="speech 'Command executed.'"
Entonces, el agradable motor de texto a voz me anuncia en voz alta que el comando se ejecuta, antes de devolver el mensaje en la terminal.
Sin embargo, esto se vuelve aburrido después de un tiempo y pensé que sería genial terminar cada comando en la terminal con la computadora hablando una línea de texto diferente (piense en el piloto automático de Starship Enterprise).
Así que creé en .bashrc una variable de matriz, con diferentes mensajes:
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."
Lo que me gustaría es que cada vez que ejecute un comando en la terminal, la variable PROMPT_COMMAND
se actualice y lea una línea aleatoria diferente en la matriz.
Supongo que necesito un bucle, pero no sabía cómo hacerlo.
Estaría muy agradecido por cualquier ayuda. Gracias.
fuente
-l=de-DE
idioma local como-l=en-US
.speech
ejecutable? ¿Es alias paraespeak
?Respuestas:
Cree un script y guárdelo en algún lugar que contenga sus líneas y la lógica para elegir una línea aleatoria de su matriz y
speech
comando de llamada en esa línea:Luego en su
.bashrc
o.profile
conjuntoPROMPT_COMMAND
:Simplemente reemplace
speech
conecho
para obtener un mensaje en lugar de la voz.fuente
${array[$RANDOM % ${#array[@]}]}
estar entre comillas dobles?set -x
para ver de qué estoy hablando :)Más tarde Editar tutorial:
Gracias a la respuesta de Ravexina anterior, ahora el problema está resuelto y la solución funciona fantásticamente. Daré instrucciones paso a paso a continuación, para las otras personas interesadas en hacer que funcione en Ubuntu 18.04
1. Instale el paquete SVOX pico2wave:
2. Crear el guión de voz
y poner este contenido dentro, insertando el usuario correcto en la ruta:
guardar y Salir.
3. Cree el script shell_speech.sh como lo indica Ravexina arriba:
guardar y Salir.
4. Haga que los scripts sean ejecutables y agregue su directorio a PATH para poder llamarlos desde cualquier lugar:
5. Modificar .bashrc
agregue la siguiente línea:
guardar y cerrar
Nota: puede agregar tantas líneas nuevas como desee en la matriz en
~/scripts/bin/shell_speech
fuente
PATH
, no necesita incluirlobash
en suPROMPT_COMMAND
y yo usaría comillas simples en caso de que agregue otras cosas más adelante que necesitarán una ejecución diferida:PROMPT_COMMAND='shell_speech'
/bin/bash
lugar de un simplebash
... (buena práctica en caso de que alguien ponga otro golpe en su camino antes/bin
...). Incluso debería sugerirle un archivo aleatorio temporal en el/tmp
directorio en lugar de quetest.wav
en su hogar ... ps> eche un vistazo a la fortuna .bash
es una forma de obtener más. Enlaces, guiones, permisos de escritura en directorios abiertos, compartidos ... Además, puede que se lo pierda, los guiones pueden sobrevivir a su primer objetivo o propietario ... y usted (u otra persona) puede usarlos después de un tiempo suficiente no recuerda todos los comandos escritos en su interior (lo hacemos para eso), bajo diferentes condiciones. Para poner\bin\bash
con el camino explícito es una buena práctica. Para evitar hacerlo ... un riesgo.