Seite 2 von 3

Re: Sprachausgabe

Verfasst: 12.10.2011 08:25
von dige
@Was genau hast Du denn geplant? Wenn Du eine richtig
gute Sprachausgabe benötigst, vergleiche mal die Qualität
der Ausgabe mit dem Voicereader:

http://www.linguatec.de/onlineservices/voice_reader/

Ciao Dige

Re: Sprachausgabe

Verfasst: 12.10.2011 14:09
von bobobo
Wir setzen hier die TTS von Loquendo ein.
Zusammen mit einer guten Voice erzielt
man recht brauchbare Ergebnisse bei
gleichzeitigem verstärkten Abfluss
pekuniärer Einheiten.

Kurz : Gut aber teuer (da muss man
halt nur wissen wie man die Kunden
an den Kosten beteiligen kann :twisted: )

--
Für eher lau und den Heimsektor gibt es
espeak. Guckst Du hier
http://espeak.sourceforge.net/

die auch dort erwähnt MBrola-Voices sind
für lau annehmbar

Geht beides unter Windows und Linux.
API Beschreibung für die DLL ist dokumentiert.

espeak kann auch mit anderen TTS-Sprachen umgehen.

Such mal nach der Steffi von Scansoft, die war mal frei
von Microsoft verfügbar, aber seitdem Nuance (DIE Krake
holt sich alles was es da enmtsprechendes am Markt gibt)
da zugange ist, wird sowas alles nach und nach ver-
schwinden und nur noch gegen bares zu kaufen sein.
Such bei Google nach
RSSolo4GermanSteffi und/oder ScanSoft Steffi_Dri40_16kHz.exe

Damit man es unter PB tönt gibts hier immer die Hinweise
auf Comate (vor dem mich gruselt) Außerdem geht der
Dreck nicht mit Linux, glaub ich.

Mit PB bekommt man sicher recht flott 'ne GUi für
espeak gebastelt. Diese alten DLLs die hier im Forum ab
und an erwähnt werden sind alt und heute kaum noch
lauffähig.

Wie sowas letztlcih aussehen kann zeigt balabolka
http://www.cross-plus-a.com/de/balabolka.htm

Guckst Du auchmal hier
http://www.heise.de/software/download/o ... =15s&T=TTS

Sprachausgabe

Verfasst: 12.10.2011 14:36
von Duplo
dige hat geschrieben:@Was genau hast Du denn geplant? Ciao Dige

Ja ich möchte meiner Frau ein spezielles Kommunikations-Programm schreiben. Nach einem Schlaganfall, kann sie nicht mehr Sprechen - sehr wenig -. Sie hat ein Laptop mit XP, hier braucht sie dann entweder nur ganze Wörter od. auch Buchstaben anzuklicken, um sich mitzuteilen. Das Ganze sollte dann möglichst in verständlichem Deutsch ausgesprochen werden. Ich habe ein Laptop mit Win7 und PureBasic 4.60RC1. So ein Programm bekomme ich wohl hin, nur diese Sprachausgabe da hapert es noch.

Die Qualität vom http://www.linguatec.de/onlineservices/voice_reader, habe ich gerade getestet und ist wirlich gut! Nur ist das ja ein eigenstädiges Programm. Hier bleibt natürlich die Frage, ob es sich irgendwie von PB aus ansprechen od. steuern lässt?

Schaue nachher od. morgen -wie ich Zeit habe- mal die Links von Dir und bobobo nach und melde mich dann am Donnerstag nochmal zurück. Eher geht es nicht, da ich meine Frau pflege.

Also vorerst besten Dank an Dir und bobobo! Gruß Reiner

Re: Sprachausgabe

Verfasst: 12.10.2011 15:22
von bobobo
wenn fertige Worte oder auch Sätze reichen kann ich Dir sicher helfen

----

Ein Ansatz
besorg das espeak Paket und ein paar mbrola-voices (für das untenstehende Mbrola DE5)
und installier das entsprechend.

erstell ein Verzeichnis.
da rein das folgende als Knopf.txt speichern
(das @ trennt zwischen dem angezeigten umd dem letztlich gesprochenen Text, was wichtig ist, da
die Sprachsynthese nicht immer so klingen will wie man meint, dass es klingen müsste. Da muss
man dann öfters mal etwas nachhelfen)

Code: Alles auswählen

Ich bin müde@Ich bin müde!
Ich möchte Fernsehen@Ich möchte Fernsehen!
Ich habe hunger@Ich habe hunger!
Ich habe Durst@Ich habe Durst!
Ich möchte raus@Ich möchte raus!
Ich möchte mich hinlegen@Ich möchte mich hinlegen!
Ich möchte Dies@Ich möchte? Dies!
Ich möchte Das@Ich möchte Das!
Ich möchte Jenes@Ich möchte Jenes!
Ich möchte nach Links@Ich möchte nach Links!
Ich möchte nach Rechts@Ich möchte nach Rechts!
Ich möchte nach Oben@Ich möchte nach Oben!
Ich möchte Unten@Ich möchte Unten!
Ich muss mal@Ich muss mal!
Ich möchte ein Buch lesen@Ich möchte ein Buch lesen!
Zeitschrift lesen@Ich möchte gerne ma eine Zeitschrift lesen!
Biertrinken@Hol mir mal 'ne Flasche Bier, Flasche Bier, Flasche Bier 
was auch immer@was auch immer!
was auch immer@was auch immer!
Ich muss noch mal@Ich muss noch mal!
Trinken aber dolle@Trinken aber dolle!
Feierabend@Feiern ohne Ende!
Das Eine@Das Eine!
Das Andere@Das Andere!
der letzte Knopf@Den letzten Knopf drück ich immer sooh gärne!
Folgendes Programm als MachWaves.pb speichern
Mit diesem Programm werden dann die Waves erstellt (das espeak verzeichnis entsprechend anpassen)

Code: Alles auswählen

ReadFile(0,"Knopf.txt")
here.s=GetPathPart(ProgramFilename())
Debug here
While Eof(0)=0
  tmp.s=StringField(ReadString(0),2,"@")
  c+1
  DeleteFile (here+Str(c)+".wav ")
  RunProgram("espeak","-p 50 -s 125 -a 200 -v MB-DE5 -w "+here+Str(c)+".wav "+Chr(34)+tmp+Chr(34),"D:\Programme\eSpeak\command_line",#PB_Program_Wait)
Wend
CloseFile(0)
Folgendes Programm als KnopfPlayer.pb speichern
Hiermit können die Waves dann wiedergegeben werden in dem Knöpfe (buttons) gedrückt werden

Code: Alles auswählen

Enumeration
  #win
EndEnumeration
InitSound()
NewList bg.i()
OpenWindow(#win,0,0,500,500,"Knopfleiste",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
For y = 0 To WindowHeight(#win)-100 Step 100
  For x = 0 To WindowWidth(#win)-100 Step 100
    AddElement(bg())
    bg()= ButtonGadget(#PB_Any,x,y ,WindowWidth(#win)/5,WindowHeight(#win)/5,"_",#PB_Button_MultiLine );Str(x)+"-"+Str(y))
  Next x
Next y
ReadFile(0,"Knopf.txt")
ResetList(bg())
While Eof(0)=0
  NextElement(bg())
  c+1
  sgadgettext.s = StringField(ReadString(0),1,"@")
  SetGadgetText(bg(),sgadgettext+" ("+Str(c)+")")
Wend
CloseFile(0)
Repeat
  event=WaitWindowEvent()
  gadget=EventGadget()
  If event=#PB_Event_Gadget
    PlaySound(LoadSound(#PB_Any,RemoveString(StringField(GetGadgetText(gadget),2,"("),")")+".Wav"))
    ;MessageRequester("","dieser Knopf hat Inhalt "+GetGadgetText(gadget))
  EndIf
  If event=#PB_Event_CloseWindow
    quit+1
  EndIf
Until quit
und hier noch ein Teil das keine Waves erzeugt sondern nur spricht.
Textformat wie das obige.

Code: Alles auswählen

ReadFile(0,"Knopf.txt")
here.s=GetPathPart(ProgramFilename())
Debug here
While Eof(0)=0
  tmp.s=StringField(ReadString(0),2,"@")
  Debug tmp
  c+1
  RunProgram("espeak","-p 50 -s 125 -a 200 -v MB-DE5 "+Chr(34)+tmp+Chr(34),"D:\Programme\eSpeak\command_line",#PB_Program_Wait)
Wend
CloseFile(0)

Re: Sprachausgabe

Verfasst: 12.10.2011 19:59
von HeX0R
Das gefällt mir!
Ich habe die KnopfPlayer.pb ein wenig flexibler gemacht, das Fenster wird dynamisch an die Anzahl an Phrasen in Knopf.txt angepasst:

Code: Alles auswählen

Enumeration
	#win
EndEnumeration

EnableExplicit

Structure _SOUNDS_
	GadgetID.i
	Name.s
	SpeachText.s
EndStructure

Global NewList Sounds._SOUNDS_()
InitSound()

Procedure main()
	Protected tmp.s, PathTo_eSpeach.s, i, j, f.f, w, h, x, y

	If ReadFile(0, GetPathPart(ProgramFilename()) + "Knopf.txt") = 0
		MessageRequester("Fehler!", "Knopf.txt konnte nicht gefunden werden!")
		End
	Else
		While Eof(0) = 0
			tmp = ReadString(0)
			If tmp
				AddElement(Sounds())
				Sounds()\Name       = StringField(tmp, 1, "@")
				Sounds()\SpeachText = StringField(tmp, 2, "@")
			EndIf
		Wend
		CloseFile(0)
	EndIf

	OpenPreferences(GetEnvironmentVariable("APPDATA") + "\pb_speach.prefs")
	PathTo_eSpeach = ReadPreferenceString("PathTo_eSpeach", "")
	If PathTo_eSpeach = "" Or FileSize(PathTo_eSpeach) <> -2 Or FileSize(PathTo_eSpeach + "TTSApp.exe") <= 0
		PathTo_eSpeach = PathRequester("Select Path to eSpeach", GetEnvironmentVariable("ProgramFiles"))
	EndIf
	WritePreferenceString("PathTo_eSpeach", PathTo_eSpeach)
	ClosePreferences()
	If PathTo_eSpeach = "" Or FileSize(PathTo_eSpeach) <> -2 Or FileSize(PathTo_eSpeach + "TTSApp.exe") <= 0
		MessageRequester("Fehler!", "Kein eSpeach?")
		End
	EndIf

	i = ListSize(Sounds())
	f = Sqr(i)
	w = Int(f)
	h = w * 100
	If (f - w) > 0.0
		h + 100
	EndIf
	w * 100

	OpenWindow(#win, 0, 0, w, h, "Knopfleiste", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

	ResetList(Sounds())
	For y = 0 To h - 100 Step 100
		For x = 0 To w - 100 Step 100
			If NextElement(Sounds())
				Sounds()\GadgetID = ButtonGadget(#PB_Any, x, y, 100, 100, Sounds()\Name, #PB_Button_MultiLine)
			EndIf
		Next x
	Next y

	Repeat
		Select WaitWindowEvent()
			Case #PB_Event_CloseWindow
				Select EventWindow()
					Case #win
						Break
				EndSelect
			Case #PB_Event_Gadget
				i = EventGadget()
				ForEach Sounds()
					If Sounds()\GadgetID = i
						RunProgram("espeak", "-p 60 -s 125 -a 200 -v MB-DE5 " + #DQUOTE$ + Sounds()\SpeachText + #DQUOTE$, PathTo_eSpeach + "command_line", #PB_Program_Hide)
					EndIf
				Next
		EndSelect
	ForEver
EndProcedure

main()
Sehr schön bobobo :allright:

Re: Sprachausgabe

Verfasst: 13.10.2011 09:25
von dige
eSpeak kannte ich noch gar nicht. Interessantes Projekt.
Allerdings kann die synthetische eSpeak Stimme nicht mit
der Qualität einer SVOX Stimme mithalten.

Hier ein direkter Vergleich aller Stimmen:

eSpeak: http://www.fileuploadx.de/33669
ScanSoft Steffi: http://www.fileuploadx.de/600655
Voicereader http://www.fileuploadx.de/837309

Vermutlich ist es für die betreffende Person und
die Personen in deren Umfeld von Vorteil, möglichst
eine natürlich klingende Sprachausgabe zu verwenden.

Die Beispiele von Bobo inkl. Erweiterung von HeX0R finde
ich schon sehr gelungen. Geht vor allem Prima an einem
TouchScreen.

Fehlt eigentlich nur noch eine Möglichkeit zur Freitext
Eingabe und eine Verwaltung zur Speicherung und
wiederholten Wiedergabe.

Bzgl. des Voicereaders, der kostet ca. 60,-€ und kann fast
genauso wie eSpeak über Kommandozeile gesteuert
werden. Gern kann ich Dir da auch mit Code Beispielen
helfen...

Re: Sprachausgabe

Verfasst: 13.10.2011 12:10
von bobobo
Du kannst nicht ernsthaft Scansoft,Loquendo oder Voicereader mit espeak vergleichen.

Immerhin kostet der espeak Spass ja bis auf Strom kaum was.


Bei den nicht kostenfreien musst du Lizenzgebühren meist pro Erstellungskanal ablatzen.
Weshalb ich ich auch eingentlich ein Freund der sog. offline-Sprachsynthese bin.
Also Waves erstellen und die bei Bedarf abspielen (mein Code) . Das ist zwar nicht
so komfortabel wie eine OnineSprachsynthese (Erstellugen während man es braucht
.. HeXors Code) aber im Nachhinein durchaus auch variabler (zusammenstöpseln
erzeugter Voicefiles) und auf jeden Fall kostengünstiger im Falle der Benutzung
von SVOX , Loquendo und wiesiealleheissen.

Bei espeak tendiere ich allerdings auch eher zur OfflineSprachsynthese, weil man
für die ausgegebenen Voices für eine ansprechende Qualität eh an den Eingabetexten
rumschrauben muss. Die eingebauten espeaksrachen sind zwar flexibel (damit kann man
auch flüstern) aber die MBorla sind um tlw. um Längen besser. Da Mbrola sind allerdings
nur für Privat kostenfrei. Da anfangs auch immer so einen Lizenzbox eingeblendet wird
(zumindest bei mir) ist beim Einsatz von Mbrola eine OfflineSprchsynthese dann auch
eher zu empfehlen.

Sprachausgabe

Verfasst: 14.10.2011 03:03
von Duplo
Hallo, ich habe nun die Beispiele und Links getestet und meine Frau findet die Aussprache von dem VoiceReader am besten. Ich denke, dass eine einmalige Investition von 49,- Euro -für eine qualitativ gute Aussprache- auch gut angelegt sein wird.

Die Ausführungen von bobobo und dem Zusatz von HeXOR sind natürlich auch sehr gelungen. So ähnlich habe ich das auch vor, Wörter od. Sätze mit einem Klick zur Aussprache bringen. Nur, dass man die Wörter aus Listen mit festem u. erweiterbaren Bestand aussuchen und dann als Satz ausgegeben werden kann.

Ciao, ich komme sehr gern auf Dein Angebot zurück und könnte ein paar Beispiele, für die Kommandosteuerung des VoiceReader Home gebrauchen. Auf der Webseite steht aber so nichts zur dieser Steuerung? Hast Du auch das Programm? Ich werde es am Montag schon bestellen. Jedenfalls würde ich mich freuen von Dir zu hören.

Danke! Beste Grüße an Euch! Reiner

Re: Sprachausgabe

Verfasst: 14.10.2011 20:26
von bobobo
[STUSS]
VOICEREADER IST NE ANWENDUNG FÜR iPhone, iPad und iPod touch!

Man kann da zwar auch dann OffLine Stimmen erwerben, aber ob man die
dann auch auf 'Nicht-IPhone und Co' einsetzen kann ist doch überaus fraglich.

[/STUSS] s.u.

(das Voicereaderzeug war aber auch nicht mein Vorschlag)

Für Windows guckst Du mal hier

http://www.loquendo.com/de/demo-center/ ... o/deutsch/
(meld Dich dazu mal per PN)

Re: Sprachausgabe

Verfasst: 17.10.2011 08:09
von dige
bobobo hat geschrieben:VOICEREADER IST NE ANWENDUNG FÜR iPhone, iPad und iPod touch!
@Bobobo: Weiss nicht wie Du darauf kommst, aber schau doch mal bitte
hier: http://www.linguatec.de/products/tts/vo ... ice_reader

Wäre auch gut Dein Posting zu editieren, sonst verbreitest Du hier noch
Halbwissen!

Den von Dir empfohlenen Link zu der Webseite von Loquendo habe ich mir
auch mal angeschaut. Ich habe dort weder ein Beispiel für eine deutsche
Sprachausgabe mit _weiblicher_ Stimme gefunden noch irgendwelche
Informationen ob und in welcher Form es die Sprachsynthese auch für
Heimanwender verfügbar ist.
Diese Punkte waren schließlich der Ausgangspunkt für diesen Thread...