Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Sprachausgabe funktioniert nur im Debug-Modus (https://www.delphipraxis.net/162054-sprachausgabe-funktioniert-nur-im-debug-modus.html)

luke2 3. Aug 2011 17:40

Delphi-Version: XE

Sprachausgabe funktioniert nur im Debug-Modus
 
Hi,

Der folgende Code zur Sprachausgabe funktioniert im Debug-Modus problemlos und wenn man die exe-Datei direkt aus dem Explorer startet gibt es eine "ungültige Gleitkommadivision" bzw. eine "Division durch Null" als Fehler.

Kann mir jemand sagen warum das so ist und wie ich diesen Fehler beheben kann?

Delphi-Quellcode:
var
  voice: OLEVariant;
begin
  voice := CreateOLEObject('SAPI.SpVoice');
  voice.speak('Hello World!', 0);
end;
Getestet mit Delphi XE und Delphi 2007.

Chemiker 3. Aug 2011 18:29

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Hallo luke2,

verwendest Du Win 7, so gibt es Probleme, unter XP (oder XP-Mode) sollte es eigentlich funktionieren.

Bis bald Chemiker

luke2 3. Aug 2011 19:06

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Ja, ich benutze Win7 (x64). Schade.

Gibt es auch unter Win7 die Möglichkeit einer stabilen Sprachausgabe?

Chemiker 3. Aug 2011 19:22

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Hallo luke2,

ich habe das nicht weiter verfolgt, weil es nicht möglich war eine deutsche Ausgabe mit Win 7 zu realisieren(oder nicht so einfach), allerdings kann sich das Mittlerweile geändert haben.

Bis bald Chemiker

luke2 3. Aug 2011 19:40

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
OK, Danke Chemiker. Dann werde ich mal suchen.

grizzly 3. Aug 2011 19:55

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Hier habe ich was gefunden: http://stackoverflow.com/questions/3...text-to-speech
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  voice: OLEVariant;
  SavedCW: Word;
begin
  voice := CreateOLEObject('SAPI.SpVoice');
  SavedCW := Get8087CW;
  Set8087CW(SavedCW or $4);
  voice.speak('Hello World!', 0); // Funktioniert nur, solange hier 0 steht
  Set8087CW(SavedCW);
end;
Das speak im obigen Beispiel funktioniert nur, solange es nicht asynchron (Parameter 1 statt 0) aufgerufen wird, weil das Objekt am Ende der Prozedur aufgeräumt wird, noch bevor der Rechner zu Sprechen begonnen hat. Also ganz so wie hier im Beispiel sollte man es nicht umsetzen ;)

Müßte man nicht eigentlich beim Programmstart noch ein CoInitialize(nil) machen?

Gruß
Michael

luke2 3. Aug 2011 20:02

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Super, Vielen Dank grizzly, damit funktioniert es :thumb:

rollstuhlfahrer 3. Aug 2011 20:03

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Zitat:

Zitat von grizzly (Beitrag 1114968)
Müßte man nicht eigentlich beim Programmstart noch ein CoInitialize(nil) machen?

CoInitialize / OleInitialize übernimmt die VCL für dich. Solange du also die VCL benutzt, brauchst du dich um sowas nicht zu kümmern.

Bernhard

luke2 3. Aug 2011 20:16

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Funktioniert doch nicht so ganz, nach ein paar Aufrufen kommt der gleiche Fehler... :(

Peter1999 3. Aug 2011 20:54

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Hast du dir das Tutorial schon einmal angesehen CLICK ?
Das funktioniert bei mir super, auch unter Win7 64bit.

Viele Grüße...

luke2 3. Aug 2011 21:24

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Leider auch damit der gleiche Fehler...

Peter1999 3. Aug 2011 22:23

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also ich habe jetzt gefühlte 100mal auf "vorlesen" geklickt und es gab kein Problem bei diesem Beispiel.
Bei den beiden ursprünglichen Posts hatte ich das Problem aber auch, so wie du es beschrieben hast. :gruebel:

axellang 4. Aug 2011 11:26

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Luke2,

Zitat:

Zitat von luke2 (Beitrag 1114955)
Ja, ich benutze Win7 (x64). Schade.

Gibt es auch unter Win7 die Möglichkeit einer stabilen Sprachausgabe?

anbei eine funktionierende Applikation (D7) mit Source die mit Win7 64Bit einwandfrei funktioniert.

axel

luke2 4. Aug 2011 11:58

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
axellang, beim Ausführen dieser Anwendungen fliegen mir leider diverse OLE-Fehler um die Ohren.
Peter, das Beispiel funktioniert bei mir jetzt auf einmal auch, evtl. lag es daran, dass ich direkt SPVoice1.speak() aufgerufen habe und die Komponente nicht zur Laufzeit erstellt habe, kA...

Danke für die Hilfe.

Chemiker 4. Aug 2011 13:36

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Hallo,

ich habe mir das noch nicht angesehen, aber ist die Sprachausgabe auf Deutsch?

Bis bald Chemiker

Peter1999 4. Aug 2011 13:58

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Nein, die Sprachausgabe ist leider nur auf Englisch. Das Problem ist aber "nur" dass Mircrosoft keine deutsche TTS-Stimme für Windows mitliefert.
Wenn du also "nur" für dich eine deutsche Stimme suchst, die gibt es ab 50 Dollar. Wenn du aber das Programm mit der Stimme vertreiben willst, lohnt sich das wohl sehr schnell nicht mehr. Jedenfalls kenne ich keine deutschte Stimme, die eine preiswerte Weitergabelizenz enthält.

Viele Grüße...

Peter1999 4. Aug 2011 17:30

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe nochmal ein bisschen gegoogled und Microsoft bietet noch folgendes an (Steffi gibt es ja leider nicht mehr zum Download, hier beides installieren): Click und Click.

Damit findet ihr Anna und Stefan auf eurem Rechner wieder. Die sind zwar recht alt und klingen nicht besonders gut, aber wer mehr will, muss eben ein paar Euro ausgeben (z.B. hier). Wie die gekauften dann klingen weiß ich aber nicht.

Bei mir funktionieren diese alten Stimmen übrigens unter Win7 64 bit.

Die Auswahl der Stimme ist auch denkbar einfach umzusetzen (siehe Anhang).

Viel Spaß damit...

Chemiker 4. Aug 2011 18:02

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Hallo,

danke für die Info, ich werde mir das mal am WE in Ruhe ansehen.

Bis bald Chemiker

axellang 4. Aug 2011 18:40

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Hallo,

Zitat:

Zitat von luke2 (Beitrag 1115048)
axellang, beim Ausführen dieser Anwendungen fliegen mir leider diverse OLE-Fehler um die Ohren.
Peter, das Beispiel funktioniert bei mir jetzt auf einmal auch, evtl. lag es daran, dass ich direkt SPVoice1.speak() aufgerufen habe und die Komponente nicht zur Laufzeit erstellt habe, kA...

Danke für die Hilfe.

im zip sind mehrere Anwendungen, verwende die TextToSpeech und **TextToSpeechAnimated. Die anderen sind für die Computer-Sprachsteuerung und zum vorlesen eines Word Dokuments gedacht, da fliegen auch mir ein paar OLE-Fehler um die Ohren.

In der TextToSpeech u. in der TextToSpeechAnimated wird gezeigt wie Text aus einem Memo gelesen und das eben gesprochene Wort markiert wird. Außerdem, wird die TTS Engine Phonetik und der entsprechende Eintrag zu der installierten Stimme in der Reg. angezeigt.

Geschwindigkeit der Stimme kann angepasst werden usw...

** TextToSpeechAnimated, zeigt wie das Gesprochen noch mit einem Avatar animiert werden kann. Das Zip entpacken und erst dann starten, da der Img Ordner (im Zip) vorhanden sein muss.

Also nicht die Anwendung aus dem Zip heraus starten!!

Habe es hier bei uns auf mehreren 7even/Vista/XP 32/64 getestet und es funktioniert einwandfrei.

Axel


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz