Installazione componente Microsoft Speech Object Library in Delphi 12

di il
8 risposte

Installazione componente Microsoft Speech Object Library in Delphi 12

Ciao a tutti,

ho provato di installare il componente Microsoft Speech Object Library (C:\WINDOWS\System32\Speech\Common\sapi.dll) in Delphi 12 tramite il menu/wizard "Component > Import Component > Import a Type Library > Microsoft Speech Object Library". 

Al termine della procedura si apre il file SpeechLib_TLB.pas segnalando 16 errori (8 x E2003 Undeclared identifier, 6 x E2010 Incompatible Types, 2 x E2033 Types of actual and formal var parameters must be identical).

Questo accade sia installando il componente come nuovo pacchetto (Install to New Package) sia aggiungendo il pacchetto al progetto attualmente aperto (Add unit to *.dproj project).

Qualcuno sa come installare correttamente la Microsoft Speech Object Library in Delphi 12?

Grazie di cuore, Ale

8 Risposte

  • Re: Installazione componente Microsoft Speech Object Library in Delphi 12

    Io ho fatto la stessa procedura un attimo fa, e mi ha importato la libreria correttamente, senza errori, all'interno di un progetto Console che ho creato per prova.

    Uso Delphi 12.1 versione Enterprise.

    Non saprei che dire.

  • Re: Installazione componente Microsoft Speech Object Library in Delphi 12

    : (

    Grazie comunque per la celerità della tua risposta e conferma del funzionamento, Marco. Continuerò a tentare allora …

    Ale

    PS: Colgo l'occasione per ringraziarti di una tua risposta in questo forum del 2014 circa l'utilizzo di smtp.gmail.com che nel 2024 ha risolto il problema a un mio cliente. Questo forum mantiene la sua qualità nel tempo, anzi … come un buon vino. : )

  • Re: Installazione componente Microsoft Speech Object Library in Delphi 12

    Trovato un suggerimento qui: http://blog.blong.com/2021/04/sapi-microsoft-speech-api-problems-with.html

    Per evitare l'errore sopra riportato è necessario commentare con “;” i due righi relativi a “=IStream” e “=ISequentialStream” all'interno del file C:\Program Files (x86)\Embarcadero\Studio\23.0\bin\tlibimp.sym, salvare il file e ripetere la procedura.

    Paragrafo interessato nel file tlibimp.sym:

    [BuiltInInterfaces]
    {00020400-0000-0000-C000-000000000046}=IDispatch
    {00000000-0000-0000-C000-000000000046}=IUnknown
    ;{0000000C-0000-0000-C000-000000000046}=IStream
    ;{0C733A30-2A1C-11CE-ADE5-00AA0044773D}=ISequentialStream

    Effettivamente, così il file SpeechLib_TLB.pas non riporta più alcun errore.

    Ma …

    All'interno del progetto, nella sezione “Palette”, appare corettamente la sezione indicata durante l'importazione del componente, contenente però solo oggetti inattivi/grigi.

    Inoltre, il seguente codice genera l'errore “DefaultInterface is NULL. Component is not connected to Server” nella funzione TSpVoice.GetDefaultInterface: ISpeechVoice: 

    procedure TfMain.Button1Click(Sender: TObject);
    var
     SpVoice: TSpVoice;
    begin
     SpVoice.Create(nil);
     try
       SpVoice.Speak('A perfect day to try something else.', SVSFlagsAsync);
     finally
       SpVoice.Free;
     end;
    end;

    Pare qualcosa ancora manchi …

    Ale

  • Re: Installazione componente Microsoft Speech Object Library in Delphi 12

    10/08/2024 - al.delphi ha scritto:


    PS: Colgo l'occasione per ringraziarti di una tua risposta in questo forum del 2014 circa l'utilizzo di smtp.gmail.com che nel 2024 ha risolto il problema a un mio cliente. Questo forum mantiene la sua qualità nel tempo, anzi … come un buon vino. : )

    Mi fa molto piacere! :)
    Quando qualcuno metterà in dubbio l'utilità del forum o il suo utilizzo non regolare, citerò questo messaggio come prova. :D

    10/08/2024 - al.delphi ha scritto:


    Per evitare l'errore sopra riportato è necessario commentare […]

    Io proverei inizialmente a importare il componente all'interno di un progetto di prova, ad esempio creando un'applicazione VCL e facendo l'importazione della unit all'interno del progetto.

    Per gli errori derivanti dall'utilizzo invece, non posso essere molto d'aiuto perché onestamente non conosco l'interfaccia di questa libreria e le sue modalità di impiego. :/

  • Re: Installazione componente Microsoft Speech Object Library in Delphi 12

    Ciao Marco,

    dopo qualche prova aggiungo che solo in caso di app Windows-64-bit gli oggetti SAPI sono disattivati nella palette e si manifesta l'errore “DefaultInterface is NULL”. Con una app Windows 32-bit invece, il codice postato sopra viene eseguito correttamente. Infatti, passando col mouse sopra gli oggetti SAPI nella palette, il loro hint riporta tra l'altro: “Unit: SpeechLib_TLB; Supported platforms: Windows 32-bit".

    A questo punto mi servirebbe sapere come importare il componente SAPI 5.4 in modo di essere disponibile anche per app Windows 64-bit.

    Ale

  • Re: Installazione componente Microsoft Speech Object Library in Delphi 12

    10/08/2024 - al.delphi ha scritto:


    A questo punto mi servirebbe sapere come importare il componente SAPI 5.4 in modo di essere disponibile anche per app Windows 64-bit.

    Non credo ci sia una modalità: parliamo di una libreria che viene caricata dall'eseguibile, e se si tratta di una libreria a 32-bit come sembra, si usa solo in applicazioni a 32-bit.

    Servirebbe una versione a 64-bit.

  • Re: Installazione componente Microsoft Speech Object Library in Delphi 12

    Sul mio PC OS Win10 64-bit, con Delphi 10.3 ho utilizzato le SAPI in applicativi Windows 64-bit. Non capisco perché con Delphi 12 sulla stessa macchina non posso utilizzare le stesse SAPI nello stesso modo.

    Provo di ottenere maggior informazioni tramite il supporto tecnico Embarcadero.

    Ale

  • Re: Installazione componente Microsoft Speech Object Library in Delphi 12

    12/08/2024 - al.delphi ha scritto:


    Sul mio PC OS Win10 64-bit, con Delphi 10.3 ho utilizzato le SAPI in applicativi Windows 64-bit. Non capisco perché con Delphi 12 sulla stessa macchina non posso utilizzare le stesse SAPI nello stesso modo.

    Per capire bene qual è il problema con cui abbiamo a che fare, purtroppo credo ci vorrebbe un quadro completo della situazione (le operazioni che vengono eseguite, la configurazione del sistema, ecc.).

    Attenzione che è presente anche una nuova piattaforma “Windows 64 Modern” (riguarda maggiormente la parte C++, ma non so se può influire anche questo problema): maggiori dettagli nella documentazione ufficiale.

Devi accedere o registrarti per scrivere nel forum
8 risposte