busfahrer
Anmeldungsdatum: 9. April 2007
Beiträge: 3052
|
Heinrich Schwietering schrieb: Vielleicht reicht der sleep-Wert nicht aus? Wie lang ist der Text, den du vorlesen lassen willst?
Der Text hat ca. 40 Zeilen.Ich hatte das sleep auch schon erhöht auf 5 Sekunden, hat aber nicht geholfen. Gruß...busfahrer €dit: Hab das sleep jetzt mal auf 10 Sekunden gestellt, hilft auch nicht. Nach genau diesen 10 Sekunden startet die Abfrage ob eine mp3 erstellt werden soll.
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11288
|
Hi! Wird der Text denn vorgelesen? Vermutlich ja nicht... Versuchs mal einen längeren Text zu nehmen, und setze den sleep-Wert wieder etwas nach unten, ggf 1 Sekunde oder so (reicht bei mir für den Festival-Start aus, und da funktioniert das auch unter Maverick in etwas so wie für eSpeak mit mbrola-Stimmen unter Lucid. Dann schau mal in der Prozssüberwachung, ob dort espeak läuft, entweder bei der Wiedergabe, oder auch, wenn dann die MP3 erstellt wird. Ist denn das Fenster zum Stoppen/Wiederaufnehmen/Beenden nie zu sehen? Auch nicht, wenn du für espeak als Sprachoption -x"vde" benutzt? so long hank
|
busfahrer
Anmeldungsdatum: 9. April 2007
Beiträge: 3052
|
Hallo ich hoffe jetzt kommt etwas Licht ins Dunkel ☺ Wenn ich die normale espeak-Stimme nehme dann schein es zu funktionieren, weil dann auch der Prozess espeak läuft. Wenn ich die mbrola-Stimme nehme kommt das Auswahlfenster pausieren, weiter, abbrechen nicht, sondern direkt das Fenster mit der Frage ob ich eine mp3 speichern will und der Prozess espeak läuft nicht sonder aplay.Ich habe dann in der Variablen SOUND mal espeak durch aplay ersetzt. Damit scheint es dann mit den mbrola-Stimmen zu funktionieren. Vorgelesen wird der Text in allen Fällen. Gruß...busfahrer
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11288
|
Hi! Ha, das war's, ich hatte das hier zwar auch getestet, aber nicht unter "real"-Bedingungen, und hatte den aplay-Befehl wieder rausgenommen, weil auch mit -vmb-de6 die Lucid-Version auf Maverick mit eSpeak lief. Passe ich in der neuen Lucid-Version entsprechend an. Wenn du statt SOUND=espeak in Zeile 182 dieses einbaust: { if [[ "$MBROLA" == "vmb" ]] ; then
SOUND=aplay
else
SOUND=espeak
fi } sollte es auch für beide Versionen gehen, also "normale" und mbrola-Stimmen. so long hank
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11288
|
Hi! Hier die "neuste" Version für Lucid; wenn du im Zenity-Fenster während der Texteingabe "Erase" wählst, wird der Prozess abgebrochen, und die dazugehörige Text-Datei gelöscht. Wenn du auf Abbruch gehst, wird nur der Prozess beendet, aber die Datei bleibt erhalten, falls du da noch was dranhängen möchtest. Wenn "Pause" gewählt wurde, erscheint danach statt dessen "Resume", um die Wiedergabe weiterzuführen. Ich hoffe, jetzt geht alles wie gewünscht... so long hank EDIT Mir fehlt nur noch der Trick, wie denn das Zenity-Fenster verschwindet, wenn die Wiedergabe nicht mehr läuft, ohne dass man da auf Ende klickt, so ganz von alleine...
- xsane2speech9Lucid.sh (10.8 KiB)
- Download xsane2speech9Lucid.sh
|
busfahrer
Anmeldungsdatum: 9. April 2007
Beiträge: 3052
|
Hallo hab jetzt erst gesehen das du schon wieder eine neue Version abgeliefert hast. Hier ein paar Worte zur Version davor. Scheint soweit alles zu funktionieren. Bei mir ist es auf jeden Fall so das bei Längeren Texten mit mbrola-Stimme das sleep 2 nicht ausreicht.Ich habs mal mit sleep 5 getestet und das scheint zu funktionieren, zumundest mit einem Text von ca. 80 Zeilen.Die temp.wav wird nur gelöscht wenn auch eine mp3 erstellt werden soll (direkt oder nachher) ansonsten steht im Log immer rm: Entfernen von „/home/USER/tmp/temp.wav“ nicht möglich: No such file or directory Noch eine kleine Anregung. Da ich recht unerfahren im skripten bin, habe ich bei der Menge an Code irgendwann den Überblick verloren. Ich bin dann hin gegangen und habe das Skript mal etwas zerpflückt und in Funktionen eingeteilt, da das für mich dann um einiges übersichtlicher ist. Ich weiß jetzt nicht ob du das vielleicht übernehmen willst, da ich ja wahrscheinlich nicht der einzige bin dem es so geht. Ich häng das Skript mal mit an. Gruß...busfahrer P.s. Die neueste Version werde ich dann morgen testen 👍
- x2s_functionLucid.sh (10.0 KiB)
- Download x2s_functionLucid.sh
|
busfahrer
Anmeldungsdatum: 9. April 2007
Beiträge: 3052
|
Hallo hier ein erster Zwischenbericht, sonst weiß ich nachher vor lauter testen wieder nicht was wann passiert ist 🙄 Wenn ich im Zenity-Auswahlfenster erase auswähle, dann wird anschließend noch gefragt ob ich eine mp3 erstellen will. Das macht er zwar dann auch, aber da ist natürlich nix drin (440 Byte) da ja durch das erase bis auf die Log alles gelöscht wird. Hier der Auszug aus der Log-Datei Tesseract Open Source OCR Engine
tesseract -l deu used
~~~+++~~~~+++~~~ Do 02 Dez 2010 11:16:55 CET
Tesseract Open Source OCR Engine
tesseract -l deu used
eSpeak with options -vde -s 165 -g 2 used for utterance
text /home/USER/tmp/out.txt deleted
~~~+++~~~~+++~~~ Do 02 Dez 2010 11:18:14 CET
xsane2speech.sh: Kein Prozess gefunden
Failed to read file '/home/USER/tmp/out.txt'
eSpeak with options -vde -s 165 -g 2 used for mp3
rm: Entfernen von „/home/USER/tmp/OCRResult.txt“ nicht möglich: No such file or directory
~~~+++~~~~+++~~~ Do 02 Dez 2010 11:18:38 CET Ich teste dann mal weiter ☺ Gruß...busfahrer
|
busfahrer
Anmeldungsdatum: 9. April 2007
Beiträge: 3052
|
Hallo hier das Testergebnis mit mbrola-Stimme.Bei einem text von ca. 40 Zeilen reicht das sleep 1 nicht aus, da muß ich erhöhen auf sleep 2. Beim klick auf erase wird alles gelöscht außer die temp.wav, out.txt und die Log, es wird gefragt ob ich eine mp3 erstellen will. Das macht er auch, aber mit dem selben Ergebnis wie oben (440 Byte). Die temp.wav und out.txt bleiben auch danach erhalten.Bei einem Text von ca. 80 Zeilen reicht auch das sleep 2 nicht mehr. Hier das Log Tesseract Open Source OCR Engine
tesseract -l deu used
rm: Entfernen von „/home/thomas/tmp//temp.wav“ nicht möglich: No such file or directory
Wiedergabe: WAVE '/home/thomas/tmp//temp.wav' : Signed 16 bit Little Endian, Rate: 22050 Hz, mono
Abbruch durch Signal Terminated ...
~~~+++~~~~+++~~~ Do 02 Dez 2010 12:26:46 CET
Tesseract Open Source OCR Engine
tesseract -l deu used
rm: Entfernen von „/home/thomas/tmp//temp.wav“ nicht möglich: No such file or directory
Wiedergabe: WAVE '/home/thomas/tmp//temp.wav' : Signed 16 bit Little Endian, Rate: 22050 Hz, mono
Abbruch durch Signal Terminated ...
text /home/thomas/tmp/out.txt deleted
~~~+++~~~~+++~~~ Do 02 Dez 2010 12:29:38 CET
xsane2speech.sh: Kein Prozess gefunden
Failed to read file '/home/thomas/tmp/out.txt'
rm: Entfernen von „/home/thomas/tmp/OCRResult.txt“ nicht möglich: No such file or directory
~~~+++~~~~+++~~~ Do 02 Dez 2010 12:30:08 CET
Tesseract Open Source OCR Engine
tesseract -l deu used
~~~+++~~~~+++~~~ Do 02 Dez 2010 12:32:09 CET
Tesseract Open Source OCR Engine
tesseract -l deu used
rm: Entfernen von „/home/thomas/tmp//temp.wav“ nicht möglich: No such file or directory
Wiedergabe: WAVE '/home/thomas/tmp//temp.wav' : Signed 16 bit Little Endian, Rate: 22050 Hz, mono
~~~+++~~~~+++~~~ Do 02 Dez 2010 12:33:25 CET
Abbruch durch Signal Terminated ... Gruß....busfahrer €dit: Mir ist jetzt aufgefallen das die temp.wav nur da nicht gelöscht wird wo die Prozesse in den Hintergrund geschickt werden.
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11288
|
Hi! Hab jetzt mit Ach und Krach meine Lucid-VM angeschmissen (das Ding stürzt häufiger mal ab, "etwas" nervig, aber das ist ein anderes Thema...) und dort das Skript nochmal durchgetestet und optimiert. Damit "Erase" richtig funktioniert, müssen die killall-Aufrufe in der Zenity-Abfrage sich natürlich mit dem Namen decken, unter dem du das Skript abgespeichert hast, da könnte einer der Fehler liegen. Warum die temp.wav-Datei angeblich nicht entfernt werden kann, ist mir ein Rätsel, sie ist natürlich existent, vielleicht hab ich da einen Denkfehler drin, oder es braucht auch einen sleep-Befehl, um die Wiedergabe erstmal zu beenden, die die temp.wav benutzt, bevor sie gelöscht werden kann, müsste man ggf. noch mal ausprobieren. Bzgl deines Edits (hab' ich erst nachträglixh gesehen) Der Prozess muss imho in den Hintergrund, sonst öffnet sich das Zenity-Fenster meinen Versuchen nach nicht... Hab es erstmal für die Wiedergabe rausgeschmissen. Um das Zenity-Fenster für die Wiedergabe zu öffnen, hab; ich jetzt mit sleep=2 ganz gute Erfahrungen gemacht, hängt vielleicht auch davon ab, wie schnell dein Rechner ist. Ich hab' jetzt für die Fenster in der Textwiedergabe eine Zeitbegrenzung eingebaut, damit sich das Fenster auch schließt, wenn man keine Eingabe macht, der Wert steht nur bei der ersten Fensterversion dabei (--timeout, Wert in Sekunden, kann man nach Geschmack anpassen. Wenn man die Wiedergabe pausiert hat, geht es erst weiter, wenn man dann im nächsten Fenster wirklich eine Eingabe macht. Auch bei der Abfrage nach der Textwiedergabe, ob eine MP3-Datei erstellt werden soll hab' ich auch so eine timeout-Variable drin, momentan 20 sek, danach sollte es jetzt automatisch zu Ende gehen, ohne .mp3-Erstellung, das kann man aber auch anders einstellen ( --entry-text="nein" in Zeile in "ja" ändern, dann sollte sich dann auch automatisch der Speicherdialog öffnen, aber der geht dann auch nicht weiter, wenn man nichts einträgt. Das sind natürlich "Geschmackssachen", die sich dann jeder nach Nutzungsvoelieben eintragen kann; man kann das natürlich auch ganz wegnehmen. Zu deinem Vorschlag, das Skript in "functions" aufzusplitten: das ist sicher sehr sinnvoll, dann könnte man auch die "Doppelungen" im code eliminieren, und es wäre viel "eleganter". Leider verstehe ich aber auch nicht viel mehr davon, als das, was ich hier zusammenballere, und mir "zusammenklaue", um "irgendwie" hinzubekommen, dass es funktioniert, wie ich es haben möchte und es "irgendwie" klappt. Ich bin sicher, dass jeder einigermaßen versierte Hobby-Informatiker beide Hände über dem Kopf zusammenschlagen würde über die ganzen if-then-Schachtelungen etc.; ich bin aber nur ambitionierter Laie und Sonderpädagoge 😉. Wer also das Skript "nach Regeln der Kunst" neufasssen möchte, ist herzlich eingeladen (da kann ich dann unter Garantie noch viel lernen... 😇 so long hank
- xsane2speech9Lucid.sh (11.3 KiB)
- Download xsane2speech9Lucid.sh
|
busfahrer
Anmeldungsdatum: 9. April 2007
Beiträge: 3052
|
Hallo erste Tests waren positiv. Bei mir reicht aber das sleep 2 definitiv nicht, ich muß den Wert bei mir höher setzten. Ich gehe aber auch davon aus das es von Rechner zu Rechner unterschiedlich sein wird. Heinrich Schwietering schrieb: Damit "Erase" richtig funktioniert, müssen die killall-Aufrufe in der Zenity-Abfrage sich natürlich mit dem Namen decken, unter dem du das Skript abgespeichert hast, da könnte einer der Fehler liegen.
Hab mal nachgeschaut und du hast wohl Recht. Ich hatte das Skript unter xsane2speech9Lucid.sh gespeichert und die killall-Aufrufe verwiesen auf xsane2speech.sh 😳 Das wars erst mal. Wenn mir noch was ein/auffällt, dann melde ich mich noch mal. Gruß...busfahrer
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11288
|
Hi! Mir ist noch was aufgefallen, nachdem ich mit der --timeout-Option etwas rungespielt hatte; so wie es jetzt ist, verwendet Zenity den Zustand des "ersten" Aufrufs, und damit wird xsane2speech komplett abgeschossen, wenn man nichts tut und das Fenster einfach bis zum Ablauf der mit --timeout.Option durchlaufen lässt. Da muss ich also nochmal nachbessern, eine Abfrage, ob der Soundprozess noch läuft, hat da also keinen Sinn; Statt diese "Monsters"
if [ -z "$SELECT" ]; then
if pidof $SOUND false ; then
break
else
killall $SOUND
echo "abborted ~~~+++~~~~+++~~~" `date +%c` 1>&2
rm "$TXT_FILE".txt
killall xsane2speech9Lucid.sh
break
fi das ohne die timeout-Option immerhin noch den Effekt hat, dass, wenn während der Tonausgabe "Abbrechen" geklickt wird, das ganze xsane2speech-Skript beendet wird, während es danach nur dazu führt, das der Loop beendet wirt, und es weiter geht, kann vermutlich also auch was einfaches wie break stehen, damit läuft das ganze nach Ablauf der Time-Out-Zeit dann auch einfach weiter, aber eben auch, wenn es während der Wiedergabe geklickt wird.... Wäre vielleicht noch interessant, ob die "OK"-Taste ohne eine Auswahl von "Pause/Resume", "End" oder "Erase" etwas anderes bewirkt als die "Abbrechen"-Taste, scheint aber in diesem Falle den selben Effekt zu haben. so long hank
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11288
|
Hi! Um dea Zenity-Fenster mit der Textwiedergabe-Bedienung "automatisch" bei Ende der Textausgabe schließen zu lassen, musste ich den Prozess auslagern; es sind jetzt also zwei Skripte: das xsane2speech.sh ruft select.sh auf, und schließt es auch wieder. Es wird im Hintergrund gestartet, damit der Soundprozess im Vordergrund die weiteren Abfragen erst macht, wenn der Soundprozess tatsächlich beendet ist, entweder über die Zenity-Eingabe im Subprozess, oder weil die Ausgabe zu Ende ist. Bastele gerade noch an einem install.sh, damit das einfacher zu handhaben wird. Momentan muss im Hauptskript noch über die Variable SEL angegeben werden, wo das select.sh liegt.
Ich hoffe es geht so, ggf. wieder sleep-Werte anpassen 😉 so long hank
- xsane2speech10Lucid.sh (9.3 KiB)
- Download xsane2speech10Lucid.sh
- select.sh (2.8 KiB)
- Download select.sh
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11288
|
Hi! Hab' die allerneuste Version jetzt im Baustelle/xsane2speech-Artikel mit drin, sollte jetzt hoffentlich alles so laufen wie geplant. so long hank
|
busfahrer
Anmeldungsdatum: 9. April 2007
Beiträge: 3052
|
Hallo wollte noch mal einen kurzen abschließenden Test mit den Skripten aus dem Wiki durchführen, leider ohne Erfolg. In xsane2speech.sh in Zeile 133 hast du einen Syntaxfehler. Du hast die if-Anweisung mit einem if beendet statt mit einem fi. Wenn ich das Korrigiere dann bekomme ich folgende Fehlermeldung
/home/USER/bin/xsane2speech10Lucid.sh: Zeile 267: Syntax Fehler: Unerwartetes Dateiende. Leider blicke ich aufgrund der vielen If/fi und Klammern nicht durch wo da denn genau was fehlt. Gruß...busfahrer
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11288
|
Hi! Ooops, dummer Fehler, es fehlte ein fi am Ende, jetzt sollte es klappen. Ich sach' ja, die vielen Verschachtelungen sind suboptimal; mal sehen, ob ich da noch was anderes zu finde (mit case sollte es etwas übersichtlicher gehen, muss ich mich aber erst einlesen). Habe das neue Skript verlinkt, jetzt geht es hoffentlich 😉 Danke für deine Mühen! (Meine Lucid-VM funktioniert leider immer noch nur sehr sporadisch; daher war die letzte Änderung "trocken" gemacht worden...) so long hank
|