Automatically end each command in terminal with a different message or sound
Clash Royale CLAN TAG#URR8PPP
up vote
18
down vote
favorite
I installed SVOX pico2wave and created a script.
Now when I enter:
speech "Hello world"
The computer text-to-voice engine says out loud "Hello world". Furthermore, I use in .bashrc
the variable PROMPT_COMMAND
defined as:
PROMPT_COMMAND="speech 'Command executed.'"
So the nice text-to-voice engine announces me loud that the command is executed, before returning the prompt in the terminal.
However, this gets boring after a while and I thought it would be really cool to end each command in terminal with the computer speaking a different line of text (think of the autopilot of Starship Enterprise).
So I created in .bashrc an array variable, with different messages:
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."
What I would like, is that each time I run a command in terminal, the variable PROMPT_COMMAND
to be updated an read a different random line in the array.
I presume I need a loop, but I didn't know how to make it.
I would be most grateful for any help. Thank you.
command-line bash sound
New contributor
 |Â
show 3 more comments
up vote
18
down vote
favorite
I installed SVOX pico2wave and created a script.
Now when I enter:
speech "Hello world"
The computer text-to-voice engine says out loud "Hello world". Furthermore, I use in .bashrc
the variable PROMPT_COMMAND
defined as:
PROMPT_COMMAND="speech 'Command executed.'"
So the nice text-to-voice engine announces me loud that the command is executed, before returning the prompt in the terminal.
However, this gets boring after a while and I thought it would be really cool to end each command in terminal with the computer speaking a different line of text (think of the autopilot of Starship Enterprise).
So I created in .bashrc an array variable, with different messages:
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."
What I would like, is that each time I run a command in terminal, the variable PROMPT_COMMAND
to be updated an read a different random line in the array.
I presume I need a loop, but I didn't know how to make it.
I would be most grateful for any help. Thank you.
command-line bash sound
New contributor
In the script in the linked answer, make sure you change the-l=de-DE
to your local language like-l=en-US
.
â Terrance
2 days ago
Thanks, indeed. This needs to be taken care of, but I had done it.
â RazTaz
2 days ago
Yeah, that is just a comment in general. Pretty cool idea here! +1
â Terrance
2 days ago
Just curious - how can I installspeech
executable? Is it alias forespeak
?
â N0rbert
2 days ago
1
"speech" is a script. I followed the instructions in the link. I made a script called speech.sh, including the corrections indicated above by Terrance". I saved speech.sh in my ~/scripts folder. I changed file permissions to speech.sh to make it executable. I created a folder as follows: ~/scripts/bin and followed the instructions from here stackoverflow.com/a/20054809, in order to add it to the PATH, so the script can be recognized as executable, no matter where I am.
â RazTaz
2 days ago
 |Â
show 3 more comments
up vote
18
down vote
favorite
up vote
18
down vote
favorite
I installed SVOX pico2wave and created a script.
Now when I enter:
speech "Hello world"
The computer text-to-voice engine says out loud "Hello world". Furthermore, I use in .bashrc
the variable PROMPT_COMMAND
defined as:
PROMPT_COMMAND="speech 'Command executed.'"
So the nice text-to-voice engine announces me loud that the command is executed, before returning the prompt in the terminal.
However, this gets boring after a while and I thought it would be really cool to end each command in terminal with the computer speaking a different line of text (think of the autopilot of Starship Enterprise).
So I created in .bashrc an array variable, with different messages:
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."
What I would like, is that each time I run a command in terminal, the variable PROMPT_COMMAND
to be updated an read a different random line in the array.
I presume I need a loop, but I didn't know how to make it.
I would be most grateful for any help. Thank you.
command-line bash sound
New contributor
I installed SVOX pico2wave and created a script.
Now when I enter:
speech "Hello world"
The computer text-to-voice engine says out loud "Hello world". Furthermore, I use in .bashrc
the variable PROMPT_COMMAND
defined as:
PROMPT_COMMAND="speech 'Command executed.'"
So the nice text-to-voice engine announces me loud that the command is executed, before returning the prompt in the terminal.
However, this gets boring after a while and I thought it would be really cool to end each command in terminal with the computer speaking a different line of text (think of the autopilot of Starship Enterprise).
So I created in .bashrc an array variable, with different messages:
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."
What I would like, is that each time I run a command in terminal, the variable PROMPT_COMMAND
to be updated an read a different random line in the array.
I presume I need a loop, but I didn't know how to make it.
I would be most grateful for any help. Thank you.
command-line bash sound
command-line bash sound
New contributor
New contributor
edited 2 days ago
Ravexina
27.6k146594
27.6k146594
New contributor
asked 2 days ago
RazTaz
14111
14111
New contributor
New contributor
In the script in the linked answer, make sure you change the-l=de-DE
to your local language like-l=en-US
.
â Terrance
2 days ago
Thanks, indeed. This needs to be taken care of, but I had done it.
â RazTaz
2 days ago
Yeah, that is just a comment in general. Pretty cool idea here! +1
â Terrance
2 days ago
Just curious - how can I installspeech
executable? Is it alias forespeak
?
â N0rbert
2 days ago
1
"speech" is a script. I followed the instructions in the link. I made a script called speech.sh, including the corrections indicated above by Terrance". I saved speech.sh in my ~/scripts folder. I changed file permissions to speech.sh to make it executable. I created a folder as follows: ~/scripts/bin and followed the instructions from here stackoverflow.com/a/20054809, in order to add it to the PATH, so the script can be recognized as executable, no matter where I am.
â RazTaz
2 days ago
 |Â
show 3 more comments
In the script in the linked answer, make sure you change the-l=de-DE
to your local language like-l=en-US
.
â Terrance
2 days ago
Thanks, indeed. This needs to be taken care of, but I had done it.
â RazTaz
2 days ago
Yeah, that is just a comment in general. Pretty cool idea here! +1
â Terrance
2 days ago
Just curious - how can I installspeech
executable? Is it alias forespeak
?
â N0rbert
2 days ago
1
"speech" is a script. I followed the instructions in the link. I made a script called speech.sh, including the corrections indicated above by Terrance". I saved speech.sh in my ~/scripts folder. I changed file permissions to speech.sh to make it executable. I created a folder as follows: ~/scripts/bin and followed the instructions from here stackoverflow.com/a/20054809, in order to add it to the PATH, so the script can be recognized as executable, no matter where I am.
â RazTaz
2 days ago
In the script in the linked answer, make sure you change the
-l=de-DE
to your local language like -l=en-US
.â Terrance
2 days ago
In the script in the linked answer, make sure you change the
-l=de-DE
to your local language like -l=en-US
.â Terrance
2 days ago
Thanks, indeed. This needs to be taken care of, but I had done it.
â RazTaz
2 days ago
Thanks, indeed. This needs to be taken care of, but I had done it.
â RazTaz
2 days ago
Yeah, that is just a comment in general. Pretty cool idea here! +1
â Terrance
2 days ago
Yeah, that is just a comment in general. Pretty cool idea here! +1
â Terrance
2 days ago
Just curious - how can I install
speech
executable? Is it alias for espeak
?â N0rbert
2 days ago
Just curious - how can I install
speech
executable? Is it alias for espeak
?â N0rbert
2 days ago
1
1
"speech" is a script. I followed the instructions in the link. I made a script called speech.sh, including the corrections indicated above by Terrance". I saved speech.sh in my ~/scripts folder. I changed file permissions to speech.sh to make it executable. I created a folder as follows: ~/scripts/bin and followed the instructions from here stackoverflow.com/a/20054809, in order to add it to the PATH, so the script can be recognized as executable, no matter where I am.
â RazTaz
2 days ago
"speech" is a script. I followed the instructions in the link. I made a script called speech.sh, including the corrections indicated above by Terrance". I saved speech.sh in my ~/scripts folder. I changed file permissions to speech.sh to make it executable. I created a folder as follows: ~/scripts/bin and followed the instructions from here stackoverflow.com/a/20054809, in order to add it to the PATH, so the script can be recognized as executable, no matter where I am.
â RazTaz
2 days ago
 |Â
show 3 more comments
2 Answers
2
active
oldest
votes
up vote
19
down vote
accepted
Create a script and save it somewhere which contains your lines and the logic to choose a random line from your array and calling speech
command on that line:
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."
line=$array[$RANDOM % $#array[@]]
speech "$line"
Then in your .bashrc
or .profile
set PROMPT_COMMAND
:
PROMPT_COMMAND="bash $HOME/PATH/TO/myscript.sh"
Just replace the speech
with echo
to get a messge instead of the voice.
Thanks for the above solution. It seems to work, except that it only renders the first word in the random line (eg. "Shields." or "Deploying..") not the entire line (eg. "Shields at 90%" or "Deploying repair droids on dek 17."
â RazTaz
2 days ago
It works!!! Thank you so much!!!!
â RazTaz
2 days ago
@RazTaz You're welcome ;)
â Ravexina
2 days ago
Shouldn't$array[$RANDOM % $#array[@]]
be in double quotes?
â Mad Physicist
yesterday
@MadPhysicist It's a good practice but not necessary here, run the script usingset -x
to see what I'm talking about :)
â Ravexina
yesterday
add a comment |Â
up vote
4
down vote
Later Edit Tutorial:
Thanks to Ravexina's answer above, now the problem is solved and the solution works fantastically. I will give step-by-step instructions below, for the other people interested to make it work in Ubuntu 18.04
1. Install SVOX pico2wave package:
sudo apt-get install libttspico0 libttspico-utils libttspico-data libsox-fmt-mp3
2. Create the speech script
cd ~/scripts
gedit speech
and put this content inside, inserting the correct user in the path:
#!/bin/bash
pico2wave -l=en-US -w=/home/user/test.wav "$1"
aplay -q ~/test.wav
rm /home/user/test.wav
save and exit.
3. Create the shell_speech.sh script as indicated by Ravexina above:
gedit shell_speech
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."
line=$array[$RANDOM % $#array[@]]
speech "$line"
save and exit.
4. Make the scripts executable and add their directory to PATH so that they could be called from everywhere:
chmod u+x ~/scripts/bin/speech
chmod u+x ~/scripts/bin/shell_speech
export PATH=$PATH:~/scripts
5. Modify .bashrc
gedit ~/.bashrc
add the following line:
PROMPT_COMMAND="bash shell_speech"
save and close
Note: you can add as many new lines as you want in the array in ~/scripts/bin/shell_speech
New contributor
Since you've made the script executable and in thePATH
, you don't need to includebash
in yourPROMPT_COMMAND
and I would use single quotes in case you add other things later that will need to have deferred execution:PROMPT_COMMAND='shell_speech'
â Dennis Williamson
2 days ago
1
For security reasons it is better to write/bin/bash
instead of a simplebash
... (good practice just in case someone put another bash in your path before/bin
...). I should even suggest you a temp random file in the/tmp
directory instead thattest.wav
in your home... ps> give it a look to fortune.
â Hastur
yesterday
add a comment |Â
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
19
down vote
accepted
Create a script and save it somewhere which contains your lines and the logic to choose a random line from your array and calling speech
command on that line:
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."
line=$array[$RANDOM % $#array[@]]
speech "$line"
Then in your .bashrc
or .profile
set PROMPT_COMMAND
:
PROMPT_COMMAND="bash $HOME/PATH/TO/myscript.sh"
Just replace the speech
with echo
to get a messge instead of the voice.
Thanks for the above solution. It seems to work, except that it only renders the first word in the random line (eg. "Shields." or "Deploying..") not the entire line (eg. "Shields at 90%" or "Deploying repair droids on dek 17."
â RazTaz
2 days ago
It works!!! Thank you so much!!!!
â RazTaz
2 days ago
@RazTaz You're welcome ;)
â Ravexina
2 days ago
Shouldn't$array[$RANDOM % $#array[@]]
be in double quotes?
â Mad Physicist
yesterday
@MadPhysicist It's a good practice but not necessary here, run the script usingset -x
to see what I'm talking about :)
â Ravexina
yesterday
add a comment |Â
up vote
19
down vote
accepted
Create a script and save it somewhere which contains your lines and the logic to choose a random line from your array and calling speech
command on that line:
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."
line=$array[$RANDOM % $#array[@]]
speech "$line"
Then in your .bashrc
or .profile
set PROMPT_COMMAND
:
PROMPT_COMMAND="bash $HOME/PATH/TO/myscript.sh"
Just replace the speech
with echo
to get a messge instead of the voice.
Thanks for the above solution. It seems to work, except that it only renders the first word in the random line (eg. "Shields." or "Deploying..") not the entire line (eg. "Shields at 90%" or "Deploying repair droids on dek 17."
â RazTaz
2 days ago
It works!!! Thank you so much!!!!
â RazTaz
2 days ago
@RazTaz You're welcome ;)
â Ravexina
2 days ago
Shouldn't$array[$RANDOM % $#array[@]]
be in double quotes?
â Mad Physicist
yesterday
@MadPhysicist It's a good practice but not necessary here, run the script usingset -x
to see what I'm talking about :)
â Ravexina
yesterday
add a comment |Â
up vote
19
down vote
accepted
up vote
19
down vote
accepted
Create a script and save it somewhere which contains your lines and the logic to choose a random line from your array and calling speech
command on that line:
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."
line=$array[$RANDOM % $#array[@]]
speech "$line"
Then in your .bashrc
or .profile
set PROMPT_COMMAND
:
PROMPT_COMMAND="bash $HOME/PATH/TO/myscript.sh"
Just replace the speech
with echo
to get a messge instead of the voice.
Create a script and save it somewhere which contains your lines and the logic to choose a random line from your array and calling speech
command on that line:
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."
line=$array[$RANDOM % $#array[@]]
speech "$line"
Then in your .bashrc
or .profile
set PROMPT_COMMAND
:
PROMPT_COMMAND="bash $HOME/PATH/TO/myscript.sh"
Just replace the speech
with echo
to get a messge instead of the voice.
edited 2 days ago
answered 2 days ago
Ravexina
27.6k146594
27.6k146594
Thanks for the above solution. It seems to work, except that it only renders the first word in the random line (eg. "Shields." or "Deploying..") not the entire line (eg. "Shields at 90%" or "Deploying repair droids on dek 17."
â RazTaz
2 days ago
It works!!! Thank you so much!!!!
â RazTaz
2 days ago
@RazTaz You're welcome ;)
â Ravexina
2 days ago
Shouldn't$array[$RANDOM % $#array[@]]
be in double quotes?
â Mad Physicist
yesterday
@MadPhysicist It's a good practice but not necessary here, run the script usingset -x
to see what I'm talking about :)
â Ravexina
yesterday
add a comment |Â
Thanks for the above solution. It seems to work, except that it only renders the first word in the random line (eg. "Shields." or "Deploying..") not the entire line (eg. "Shields at 90%" or "Deploying repair droids on dek 17."
â RazTaz
2 days ago
It works!!! Thank you so much!!!!
â RazTaz
2 days ago
@RazTaz You're welcome ;)
â Ravexina
2 days ago
Shouldn't$array[$RANDOM % $#array[@]]
be in double quotes?
â Mad Physicist
yesterday
@MadPhysicist It's a good practice but not necessary here, run the script usingset -x
to see what I'm talking about :)
â Ravexina
yesterday
Thanks for the above solution. It seems to work, except that it only renders the first word in the random line (eg. "Shields." or "Deploying..") not the entire line (eg. "Shields at 90%" or "Deploying repair droids on dek 17."
â RazTaz
2 days ago
Thanks for the above solution. It seems to work, except that it only renders the first word in the random line (eg. "Shields." or "Deploying..") not the entire line (eg. "Shields at 90%" or "Deploying repair droids on dek 17."
â RazTaz
2 days ago
It works!!! Thank you so much!!!!
â RazTaz
2 days ago
It works!!! Thank you so much!!!!
â RazTaz
2 days ago
@RazTaz You're welcome ;)
â Ravexina
2 days ago
@RazTaz You're welcome ;)
â Ravexina
2 days ago
Shouldn't
$array[$RANDOM % $#array[@]]
be in double quotes?â Mad Physicist
yesterday
Shouldn't
$array[$RANDOM % $#array[@]]
be in double quotes?â Mad Physicist
yesterday
@MadPhysicist It's a good practice but not necessary here, run the script using
set -x
to see what I'm talking about :)â Ravexina
yesterday
@MadPhysicist It's a good practice but not necessary here, run the script using
set -x
to see what I'm talking about :)â Ravexina
yesterday
add a comment |Â
up vote
4
down vote
Later Edit Tutorial:
Thanks to Ravexina's answer above, now the problem is solved and the solution works fantastically. I will give step-by-step instructions below, for the other people interested to make it work in Ubuntu 18.04
1. Install SVOX pico2wave package:
sudo apt-get install libttspico0 libttspico-utils libttspico-data libsox-fmt-mp3
2. Create the speech script
cd ~/scripts
gedit speech
and put this content inside, inserting the correct user in the path:
#!/bin/bash
pico2wave -l=en-US -w=/home/user/test.wav "$1"
aplay -q ~/test.wav
rm /home/user/test.wav
save and exit.
3. Create the shell_speech.sh script as indicated by Ravexina above:
gedit shell_speech
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."
line=$array[$RANDOM % $#array[@]]
speech "$line"
save and exit.
4. Make the scripts executable and add their directory to PATH so that they could be called from everywhere:
chmod u+x ~/scripts/bin/speech
chmod u+x ~/scripts/bin/shell_speech
export PATH=$PATH:~/scripts
5. Modify .bashrc
gedit ~/.bashrc
add the following line:
PROMPT_COMMAND="bash shell_speech"
save and close
Note: you can add as many new lines as you want in the array in ~/scripts/bin/shell_speech
New contributor
Since you've made the script executable and in thePATH
, you don't need to includebash
in yourPROMPT_COMMAND
and I would use single quotes in case you add other things later that will need to have deferred execution:PROMPT_COMMAND='shell_speech'
â Dennis Williamson
2 days ago
1
For security reasons it is better to write/bin/bash
instead of a simplebash
... (good practice just in case someone put another bash in your path before/bin
...). I should even suggest you a temp random file in the/tmp
directory instead thattest.wav
in your home... ps> give it a look to fortune.
â Hastur
yesterday
add a comment |Â
up vote
4
down vote
Later Edit Tutorial:
Thanks to Ravexina's answer above, now the problem is solved and the solution works fantastically. I will give step-by-step instructions below, for the other people interested to make it work in Ubuntu 18.04
1. Install SVOX pico2wave package:
sudo apt-get install libttspico0 libttspico-utils libttspico-data libsox-fmt-mp3
2. Create the speech script
cd ~/scripts
gedit speech
and put this content inside, inserting the correct user in the path:
#!/bin/bash
pico2wave -l=en-US -w=/home/user/test.wav "$1"
aplay -q ~/test.wav
rm /home/user/test.wav
save and exit.
3. Create the shell_speech.sh script as indicated by Ravexina above:
gedit shell_speech
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."
line=$array[$RANDOM % $#array[@]]
speech "$line"
save and exit.
4. Make the scripts executable and add their directory to PATH so that they could be called from everywhere:
chmod u+x ~/scripts/bin/speech
chmod u+x ~/scripts/bin/shell_speech
export PATH=$PATH:~/scripts
5. Modify .bashrc
gedit ~/.bashrc
add the following line:
PROMPT_COMMAND="bash shell_speech"
save and close
Note: you can add as many new lines as you want in the array in ~/scripts/bin/shell_speech
New contributor
Since you've made the script executable and in thePATH
, you don't need to includebash
in yourPROMPT_COMMAND
and I would use single quotes in case you add other things later that will need to have deferred execution:PROMPT_COMMAND='shell_speech'
â Dennis Williamson
2 days ago
1
For security reasons it is better to write/bin/bash
instead of a simplebash
... (good practice just in case someone put another bash in your path before/bin
...). I should even suggest you a temp random file in the/tmp
directory instead thattest.wav
in your home... ps> give it a look to fortune.
â Hastur
yesterday
add a comment |Â
up vote
4
down vote
up vote
4
down vote
Later Edit Tutorial:
Thanks to Ravexina's answer above, now the problem is solved and the solution works fantastically. I will give step-by-step instructions below, for the other people interested to make it work in Ubuntu 18.04
1. Install SVOX pico2wave package:
sudo apt-get install libttspico0 libttspico-utils libttspico-data libsox-fmt-mp3
2. Create the speech script
cd ~/scripts
gedit speech
and put this content inside, inserting the correct user in the path:
#!/bin/bash
pico2wave -l=en-US -w=/home/user/test.wav "$1"
aplay -q ~/test.wav
rm /home/user/test.wav
save and exit.
3. Create the shell_speech.sh script as indicated by Ravexina above:
gedit shell_speech
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."
line=$array[$RANDOM % $#array[@]]
speech "$line"
save and exit.
4. Make the scripts executable and add their directory to PATH so that they could be called from everywhere:
chmod u+x ~/scripts/bin/speech
chmod u+x ~/scripts/bin/shell_speech
export PATH=$PATH:~/scripts
5. Modify .bashrc
gedit ~/.bashrc
add the following line:
PROMPT_COMMAND="bash shell_speech"
save and close
Note: you can add as many new lines as you want in the array in ~/scripts/bin/shell_speech
New contributor
Later Edit Tutorial:
Thanks to Ravexina's answer above, now the problem is solved and the solution works fantastically. I will give step-by-step instructions below, for the other people interested to make it work in Ubuntu 18.04
1. Install SVOX pico2wave package:
sudo apt-get install libttspico0 libttspico-utils libttspico-data libsox-fmt-mp3
2. Create the speech script
cd ~/scripts
gedit speech
and put this content inside, inserting the correct user in the path:
#!/bin/bash
pico2wave -l=en-US -w=/home/user/test.wav "$1"
aplay -q ~/test.wav
rm /home/user/test.wav
save and exit.
3. Create the shell_speech.sh script as indicated by Ravexina above:
gedit shell_speech
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."
line=$array[$RANDOM % $#array[@]]
speech "$line"
save and exit.
4. Make the scripts executable and add their directory to PATH so that they could be called from everywhere:
chmod u+x ~/scripts/bin/speech
chmod u+x ~/scripts/bin/shell_speech
export PATH=$PATH:~/scripts
5. Modify .bashrc
gedit ~/.bashrc
add the following line:
PROMPT_COMMAND="bash shell_speech"
save and close
Note: you can add as many new lines as you want in the array in ~/scripts/bin/shell_speech
New contributor
edited 2 days ago
Ravexina
27.6k146594
27.6k146594
New contributor
answered 2 days ago
RazTaz
14111
14111
New contributor
New contributor
Since you've made the script executable and in thePATH
, you don't need to includebash
in yourPROMPT_COMMAND
and I would use single quotes in case you add other things later that will need to have deferred execution:PROMPT_COMMAND='shell_speech'
â Dennis Williamson
2 days ago
1
For security reasons it is better to write/bin/bash
instead of a simplebash
... (good practice just in case someone put another bash in your path before/bin
...). I should even suggest you a temp random file in the/tmp
directory instead thattest.wav
in your home... ps> give it a look to fortune.
â Hastur
yesterday
add a comment |Â
Since you've made the script executable and in thePATH
, you don't need to includebash
in yourPROMPT_COMMAND
and I would use single quotes in case you add other things later that will need to have deferred execution:PROMPT_COMMAND='shell_speech'
â Dennis Williamson
2 days ago
1
For security reasons it is better to write/bin/bash
instead of a simplebash
... (good practice just in case someone put another bash in your path before/bin
...). I should even suggest you a temp random file in the/tmp
directory instead thattest.wav
in your home... ps> give it a look to fortune.
â Hastur
yesterday
Since you've made the script executable and in the
PATH
, you don't need to include bash
in your PROMPT_COMMAND
and I would use single quotes in case you add other things later that will need to have deferred execution: PROMPT_COMMAND='shell_speech'
â Dennis Williamson
2 days ago
Since you've made the script executable and in the
PATH
, you don't need to include bash
in your PROMPT_COMMAND
and I would use single quotes in case you add other things later that will need to have deferred execution: PROMPT_COMMAND='shell_speech'
â Dennis Williamson
2 days ago
1
1
For security reasons it is better to write
/bin/bash
instead of a simple bash
... (good practice just in case someone put another bash in your path before /bin
...). I should even suggest you a temp random file in the /tmp
directory instead that test.wav
in your home... ps> give it a look to fortune.â Hastur
yesterday
For security reasons it is better to write
/bin/bash
instead of a simple bash
... (good practice just in case someone put another bash in your path before /bin
...). I should even suggest you a temp random file in the /tmp
directory instead that test.wav
in your home... ps> give it a look to fortune.â Hastur
yesterday
add a comment |Â
RazTaz is a new contributor. Be nice, and check out our Code of Conduct.
RazTaz is a new contributor. Be nice, and check out our Code of Conduct.
RazTaz is a new contributor. Be nice, and check out our Code of Conduct.
RazTaz is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1073976%2fautomatically-end-each-command-in-terminal-with-a-different-message-or-sound%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
In the script in the linked answer, make sure you change the
-l=de-DE
to your local language like-l=en-US
.â Terrance
2 days ago
Thanks, indeed. This needs to be taken care of, but I had done it.
â RazTaz
2 days ago
Yeah, that is just a comment in general. Pretty cool idea here! +1
â Terrance
2 days ago
Just curious - how can I install
speech
executable? Is it alias forespeak
?â N0rbert
2 days ago
1
"speech" is a script. I followed the instructions in the link. I made a script called speech.sh, including the corrections indicated above by Terrance". I saved speech.sh in my ~/scripts folder. I changed file permissions to speech.sh to make it executable. I created a folder as follows: ~/scripts/bin and followed the instructions from here stackoverflow.com/a/20054809, in order to add it to the PATH, so the script can be recognized as executable, no matter where I am.
â RazTaz
2 days ago