![]() |
Sprachausgabe aus DLL geht nicht
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:
wenn ich die Sprachausgabe aus der DLL entferne läuft Sie einwandfrei.
procedure TForm1.Button4Click(Sender: TObject);
begin hDllName:=PChar(SysInfo1.WinAppPath+'\Project1.dll'); hDll := LoadLibrary(hDLLName); FreeLibrary(hDLL); end; ich möchte Anwendung aber als DLL nutzen und zwar mit Sprachausgabe. |
Re: Sprachausgabe aus DLL geht nicht
Ist es evtl. ein
![]() |
Re: Sprachausgabe aus DLL geht nicht
Liste der Anhänge anzeigen (Anzahl: 1)
doch "CoInitialize(nil);" ist drin
hier der Abschnitt
Delphi-Quellcode:
Ich poste hier mal die ganze Componente zur Sprachausgabe die ich nutze
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; |
Re: Sprachausgabe aus DLL geht nicht
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 |
Re: Sprachausgabe aus DLL geht nicht
Liste der Anhänge anzeigen (Anzahl: 1)
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; |
Re: Sprachausgabe aus DLL geht nicht
@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 |
Re: Sprachausgabe aus DLL geht nicht
Zitat:
|
Re: Sprachausgabe aus DLL geht nicht
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 |
Re: Sprachausgabe aus DLL geht nicht
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. |
Re: Sprachausgabe aus DLL geht nicht
ah dann ist das ja auch klar :wall:
werd ich dann gleich tun. danke für die hilfe :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz