다른 메시지 나 소리로 터미널의 각 명령을 자동으로 종료 말합니다. 또한 다음과

SVOX pico2wave를 설치 하고 스크립트를 작성했습니다. 이제 내가 들어갈 때 :

speech "Hello world"

컴퓨터 텍스트 음성 엔진이 “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"

그냥 교체 speechecho대신 음성의 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. 위의 Ravexina로 표시된 shell_speech.sh 스크립트를 작성하십시오.

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. 스크립트를 실행 가능하게 만들고 디렉토리를 PATH에 추가하여 어디서나 호출 할 수 있도록하십시오.

chmod u+x ~/scripts/bin/speech
chmod u+x ~/scripts/bin/shell_speech
export PATH=$PATH:~/scripts

.bashrc 수정

gedit ~/.bashrc

다음 줄을 추가하십시오.

PROMPT_COMMAND="bash shell_speech"

저장하고 닫습니다

참고 : 배열에서 원하는만큼 줄을 추가 할 수 있습니다~/scripts/bin/shell_speech


답변