Ich habe SVOX pico2wave installiert und ein Skript erstellt. Wenn ich jetzt eintrete:
speech "Hello world"
Die Computer-Text-to-Voice-Engine sagt laut "Hallo Welt". Außerdem benutze ich in .bashrc
der Variablen PROMPT_COMMAND
definiert als:
PROMPT_COMMAND="speech 'Command executed.'"
Die nette Text-to-Voice-Engine meldet mir also laut, dass der Befehl ausgeführt wird, bevor die Eingabeaufforderung im Terminal zurückgegeben wird.
Dies wird jedoch nach einer Weile langweilig und ich dachte, es wäre wirklich cool, jeden Befehl im Terminal zu beenden, während der Computer eine andere Textzeile spricht (denken Sie an den Autopiloten von Starship Enterprise).
Deshalb habe ich in .bashrc eine Array-Variable mit verschiedenen Meldungen erstellt:
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."
Was ich möchte, ist, dass bei jeder Ausführung eines Befehls im Terminal die Variable PROMPT_COMMAND
aktualisiert und eine andere zufällige Zeile im Array gelesen wird .
Ich nehme an, ich brauche eine Schleife, aber ich wusste nicht, wie ich sie machen sollte.
Ich wäre für jede Hilfe sehr dankbar. Vielen Dank.
quelle
-l=de-DE
in Ihre Landessprache ändern-l=en-US
.speech
ausführbare Datei installieren ? Ist es ein Pseudonym fürespeak
?Antworten:
Erstellen Sie ein Skript und speichern Sie es an einem Ort, der Ihre Zeilen und die Logik enthält, eine zufällige Zeile aus Ihrem Array auszuwählen und den
speech
Befehl in dieser Zeile aufzurufen :Dann in deinem
.bashrc
oder.profile
SetPROMPT_COMMAND
:Ersetzen Sie einfach das
speech
durchecho
, um eine Nachricht anstelle der Stimme zu erhalten.quelle
${array[$RANDOM % ${#array[@]}]}
in doppelten Anführungszeichen stehen?set -x
zu sehen, was ich rede :)Tutorial zur späteren Bearbeitung:
Dank der obigen Antwort von Ravexina ist das Problem nun gelöst und die Lösung funktioniert fantastisch. Ich werde unten eine schrittweise Anleitung für die anderen Interessenten geben, damit es unter Ubuntu 18.04 funktioniert
1. Installieren Sie das SVOX pico2wave-Paket:
2. Erstellen Sie das Sprachskript
und füge diesen Inhalt ein und füge den richtigen Benutzer in den Pfad ein:
speichern und schließen.
3. Erstellen Sie das Skript shell_speech.sh wie oben von Ravexina angegeben:
speichern und schließen.
4. Machen Sie die Skripte ausführbar und fügen Sie ihr Verzeichnis PATH hinzu, damit sie von überall aufgerufen werden können:
5. Ändern Sie .bashrc
füge die folgende Zeile hinzu:
speichern und schließen
Hinweis: Sie können beliebig viele neue Zeilen in das Array in einfügen
~/scripts/bin/shell_speech
quelle
PATH
, müssen Sie es nichtbash
in IhrePROMPT_COMMAND
AnführungszeichenPROMPT_COMMAND='shell_speech'
/bin/bash
anstelle eines einfachenbash
... zu schreiben (bewährte Methode für den Fall, dass jemand zuvor einen weiteren Schlag in den Weg stellt/bin
...). Ich sollte Ihnen sogar eine zufällige temporäre Datei im/tmp
Verzeichnis vorschlagen, anstatt dasstest.wav
Sie sie zu Hause haben ... ps> geben Sie einen Blick auf das Schicksal .bash
ist eine Möglichkeit, mehr zu erhalten. Links, Skripte, Schreibrechte für geöffnete Verzeichnisse, freigegebene ... Außerdem können Skripte - Sie könnten es verpassen - bis zu ihrem ersten Ziel oder Eigentümer überleben ... und Sie (oder jemand anderes) können sie nach einer ausreichenden Zeitspanne verwenden Sie erinnern sich nicht an alle darin geschriebenen Befehle (wir tun das) unter verschiedenen Bedingungen. Es ist eine gute Praxis,\bin\bash
den expliziten Pfad anzugeben. Zu vermeiden, es zu tun ... ein Risiko.