Я установил SVOX pico2wave и создал сценарий. Теперь, когда я вхожу:
speech "Hello world"
Компьютерный механизм текста к речи говорит вслух "Привет мир". Кроме того, я использую в .bashrc
переменная PROMPT_COMMAND
определенный как:
PROMPT_COMMAND="speech 'Command executed.'"
Таким образом, хороший механизм текста к речи объявляет обо мне громкий, что команда выполняется, прежде, чем возвратить подсказку в терминале.
Однако это становится скучным через некоторое время, и я думал, что будет действительно здорово закончиться, каждая команда в терминале с компьютером, говоря различную строку текста (думайте об автопилоте Starship Enterprise).
Таким образом, я создал в .bashrc переменную типа массив с различными сообщениями:
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."
То, что я хотел бы, то, что каждый раз я выполняю команду в терминале, переменной PROMPT_COMMAND
быть обновленным и читать другую случайную строку в массиве.
Я предполагаю, что мне нужен цикл, но я не знал, как сделать его.
Я был бы крайне признателен за любую справку.Спасибо.
Создайте сценарий и сохраните его где-нибудь, который содержит Ваши строки и логику для выбора случайной строки из массива и вызова 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"
Затем в Вашем .bashrc
или .profile
набор PROMPT_COMMAND
:
PROMPT_COMMAND="bash $HOME/PATH/TO/myscript.sh"
Просто замените speech
с echo
получить messge вместо речи.
Более позднее учебное руководство по редактированию:
Благодаря ответу Ravexina выше, теперь решена проблема, и решение работает фантастически. Я дам пошаговые инструкции ниже, поскольку другие люди заинтересовали заставлять его работать в Ubuntu 18.04
1. Пакет SVOX pico2wave установки:
sudo apt-get install libttspico0 libttspico-utils libttspico-data libsox-fmt-mp3
2. Создайте речевой сценарий
cd ~/scripts
gedit speech
и вставленный это содержание, вводя корректного пользователя в путь:
#!/bin/bash
pico2wave -l=en-US -w=/home/user/test.wav "$1"
aplay -q ~/test.wav
rm /home/user/test.wav
сохраните и выйдите.
3. Создайте shell_speech.sh сценарий, как обозначено Ravexina выше:
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"
сохраните и выйдите.
4. Сделайте исполняемый файл сценариев и добавьте их каталог для СОЕДИНЕНИЯ КАНАЛОМ так, чтобы их можно было назвать отовсюду:
chmod u+x ~/scripts/bin/speech
chmod u+x ~/scripts/bin/shell_speech
export PATH=$PATH:~/scripts
5. Измените .bashrc
gedit ~/.bashrc
добавьте следующую строку:
PROMPT_COMMAND="bash shell_speech"
сохраните и закройтесь
Примечание: можно добавить столько новых строк, сколько Вы хотите в массиве в ~/scripts/bin/shell_speech