AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sprachausgabe aus DLL geht nicht

Ein Thema von SwordfishCenter · begonnen am 6. Sep 2005 · letzter Beitrag vom 7. Sep 2005
Antwort Antwort
SwordfishCenter

Registriert seit: 2. Sep 2005
62 Beiträge
 
Delphi 7 Enterprise
 
#1

Sprachausgabe aus DLL geht nicht

  Alt 6. Sep 2005, 10:22
Hi leute wer weis was
Ich habe eine Anwendung gebastelt die WAV abspielt und Text in Sprache erzeugen soll.
Wenn ich das Prog auch als Project1.exe erstelle geht auch alles.
Aber wenn ich das ganze als Project1.dll erstelle dann geht die Sprachausgabe nicht.
Beim Laden der Sprachergie bleibt die ganze sache hängen!!!!

Für die Sprachausgabe benutze ich eine VCL-Comp. namens "mspeech.pas".
ich Ruf die DLL So auf
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
begin
hDllName:=PChar(SysInfo1.WinAppPath+'\Project1.dll');
hDll := LoadLibrary(hDLLName);
FreeLibrary(hDLL);
end;
wenn ich die Sprachausgabe aus der DLL entferne läuft Sie einwandfrei.
ich möchte Anwendung aber als DLL nutzen und zwar mit Sprachausgabe.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Sprachausgabe aus DLL geht nicht

  Alt 6. Sep 2005, 10:42
Ist es evtl. ein CoInitialize-Fehler
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
SwordfishCenter

Registriert seit: 2. Sep 2005
62 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Sprachausgabe aus DLL geht nicht

  Alt 6. Sep 2005, 11:27
doch "CoInitialize(nil);" ist drin
hier der Abschnitt
Delphi-Quellcode:
procedure TMSpeech.Init;
var ModeInfo: TTSModeInfo;
    EngineCount: Integer;
    p: Pointer;
begin
   FInit := True;
   FEngineStarted := False;
   try
      { Enumerate engines }
      p:=nil;
      CoInitialize(p);
      OleCheck(CoCreateInstance(CLSID_TTSEnumerator, Nil, CLSCTX_ALL, IID_ITTSEnum, FITTSEnum));
      OleCheck(FITTSEnum.Reset);
      OleCheck(FITTSEnum.Next(1, ModeInfo, @EngineCount));

      while EngineCount > 0 do
      begin
         FEngines.Add(String(ModeInfo.szModeName));
         OleCheck(FITTSEnum.Next(1, ModeInfo, @EngineCount));
      end;
   except
      FInit := False;
   end;
end;
Ich poste hier mal die ganze Componente zur Sprachausgabe die ich nutze
Angehängte Dateien
Dateityp: zip mspreech_vcl_906.zip (43,8 KB, 18x aufgerufen)
  Mit Zitat antworten Zitat
SwordfishCenter

Registriert seit: 2. Sep 2005
62 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Sprachausgabe aus DLL geht nicht

  Alt 6. Sep 2005, 18:51
hi
falls einer den grund dafür geunden hat warum die componente
nicht in einer dll laufen will wäre es echt supper wenn ich es auch erfahre
oder einer den geänderten code hier rein stellt.
ich weis ihr gebt euch alle mühe. ich weis das auch zu schätzen.
danke schon mal vorab
  Mit Zitat antworten Zitat
Heffalump

Registriert seit: 3. Aug 2005
278 Beiträge
 
RAD-Studio 2009 Ent
 
#5

Re: Sprachausgabe aus DLL geht nicht

  Alt 6. Sep 2005, 20:54
Hallo,
warum der Sourcecode nicht funktioniert ist schwehr zu sagen. Wahrscheinlich müsste man den Programmierer der Komponente befragen. Ich hätte jedoch eine Alternative. Was ich sehen konnte, ist das diese auf die Microsoft Speech API zugreift. Das schöne an dieser API ist, das diese ein Typelibrary enthält. Du solltest diese importieren und mal anschauen. Das Implementierung zum Vorlesen beschränkt sich dann auf 2 Zeilen Code und dieses funktioniert auch in einer DLL.

Delphi-Quellcode:
procedure TForm1.Speech(Text: WideString); stdcall;
var lvSpeechVoice : ISpeechVoice;
begin
  lvSpeechVoice:=CoSpVoice.Create;
  lvSpeechVoice.Speak(Text, SVSFDefault);
end;
Angehängte Dateien
Dateityp: zip spech_163.zip (644,6 KB, 12x aufgerufen)
  Mit Zitat antworten Zitat
100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#6

Re: Sprachausgabe aus DLL geht nicht

  Alt 6. Sep 2005, 21:06
@Heffalump
meistens ist aber nur die englische sprachausgabe installiert, da müsste man zuerst die entsprechende sprache herunterladen und installieren.
evtl. könnte man diese aber auch beim programm einbinden, das weiss ich nicht.

gruss
urbanbruhin
  Mit Zitat antworten Zitat
Heffalump

Registriert seit: 3. Aug 2005
278 Beiträge
 
RAD-Studio 2009 Ent
 
#7

Re: Sprachausgabe aus DLL geht nicht

  Alt 6. Sep 2005, 21:15
Zitat von urbanbruhin:
@Heffalump
meistens ist aber nur die englische sprachausgabe installiert, da müsste man zuerst die entsprechende sprache herunterladen und installieren.
evtl. könnte man diese aber auch beim programm einbinden, das weiss ich nicht.

gruss
urbanbruhin
da hast Du recht. Allerdings besteht das Problem auch bei der von SwordfishCenter verwendeten Komponente, da diese auf der gleichen API zugreift.
  Mit Zitat antworten Zitat
SwordfishCenter

Registriert seit: 2. Sep 2005
62 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Sprachausgabe aus DLL geht nicht

  Alt 7. Sep 2005, 10:31
ich habe keine ActiveX die diese Typelibrary enthält
aber ich habe "ACTIVEVOICEPROJECTLib_TLB (TDirectSS)" von Microsoft
mit der ich auch meine Energie von RealSpeak laden kann.
Aber die will auch nicht in einer DLL laufen.
bekomme eine Fehlermeldun von wegen "CoInitialize" nicht aufgerufen.
habe mir schon voll einen abgebrochen und versucht "CoInitialize" irgendwie mitaufzurufen.
aber ohne erfolg.
und ich will die Sprachenergie von L&H RealSpeak (Vera) German (V1.20) Female #1 laden
  Mit Zitat antworten Zitat
Heffalump

Registriert seit: 3. Aug 2005
278 Beiträge
 
RAD-Studio 2009 Ent
 
#9

Re: Sprachausgabe aus DLL geht nicht

  Alt 7. Sep 2005, 15:34
Die Typelibrary musst Du mit Delphi importieren.

Menü -> Projekt -> Typbibliothek importieren. Im Dialogfenster mit Hilfe von Hinzufügen die Datei sapi.dll auswählen. Bei mir befindet sie sich unter: C:\Programme\Gemeinsame Dateien\Microsoft Shared\Speech\sapi.dll. Dann solltest Du über die nötige Schnittstellendatei verfügen.
  Mit Zitat antworten Zitat
SwordfishCenter

Registriert seit: 2. Sep 2005
62 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Sprachausgabe aus DLL geht nicht

  Alt 7. Sep 2005, 15:40
ah dann ist das ja auch klar
werd ich dann gleich tun.
danke für die hilfe
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:14 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