[gelöst] API für Sprache

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Benutzeravatar
juelin
Beiträge: 296
Registriert: Sa 24. Jul 2021, 18:03
OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Mannheim

[gelöst] API für Sprache

Beitrag von juelin »

Hallo,
ich such jetzt schon seit Tagen im Internet nach Beschreibung des SAPI, find aber nix.
Für die Spachausgabe gibt es ja das SAPI.
Funktioniert auch wunderbar,
Ich würde aber gerne mehr wissen.

Code: Alles auswählen

      var SpVoice: OleVariant;
      var Textout: string;
      Textout:='hello world';
      SpVoice:=ComObj.CreateOleObject('SAPI.SpVoice');
      SpVoice.Voice:=SpVoice.GetVoices.Item(0);  // hier soll man den Sprecher einstellen können?
      SpVoice.Speak(Textout, 0);
was sagt z. B. die "0" im SpVoice.Speak aus?
Was für Funktionen gibt es noch in SpVoice?
usw.

Das gleiche gilt für die Spracheingabe mit API Recognition.
Habe im Internet nuw was für den Browser gefunden, aber nix für Pascal.

Hat da jemand Erfahrung und kann mir helfen?
Das wäre toll.

Danke und Gruß
Jürgen
Zuletzt geändert von juelin am Di 3. Jun 2025, 18:56, insgesamt 2-mal geändert.

Benutzeravatar
theo
Beiträge: 10920
Registriert: Mo 11. Sep 2006, 19:01

Re: API für Sprache

Beitrag von theo »


Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6848
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: API für Sprache

Beitrag von af0815 »

Du wirst für diese Microsoft only dir die Infos wie Theo schon gesagt hat, dort zusammensuchen. Noch dazu ist die Schnittstelle seit ihrer Vorstellung nicht so unbedingt in die Gänge gekommen. Und mit absolut nichts kompatibel. Deswegen ist da auch nicht allzuviel Doku außerhalb von MS.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
juelin
Beiträge: 296
Registriert: Sa 24. Jul 2021, 18:03
OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Mannheim

Re: API für Sprache

Beitrag von juelin »

hallo,
tut mir leid, aber ich muss nochmal nerven.
Habe jetzt alles gelesen, was Microsoft so verzapft hat. https://learn.microsoft.com/en-us/previ ... 2(v=vs.85)
ich habe in Systemeinstellungen->Barrierefreiheit->Sprachausgabe folgendes eingestellt (siehe bild1).
Er spricht aber mit Mikrosoft Hedda Dektop - German.
Folgende Stimmen sind im System Systemeinstellungen->Barrierefreiheit->Sprachausgabe (siehe bild2).
Mit dem Progamm:

Code: Alles auswählen

var
  SpVoice: OleVariant;
  Textout: string;
begin
// SpVoice.GetVoices.Items = Stimme in verschieden Sprachen (0-1)
// SpVoice.Volume = Lautstärke (0-100)
// SPVoice.Rate = Sprechgeschwindigkeit (-10 bis +10) Minus=Langsamer Plus=Schneller
       Textout:='bitte sagen sie etwas';
      SpVoice:=ComObj.CreateOleObject('SAPI.SpVoice');
      SpVoice.Voice:=SpVoice.GetVoices.Item(0);
      SpVoice.Speak(Textout, 0);
// 'Microsoft Hedda Desktop - German'
//      SpVoice.Speak(SpVoice.Voice.GetDescription, 0);
in SpVoice.GetVoices.Item(0) kann ich nur zwischen 0 und 1 wählen
0 = Mikrosoft Hedda Dektop - German
1 = Mikrosoft Zira Dektop - English (United States)
den eingetellten Mikrosoft Stefan - German (Germany) bekomme ich nicht.

Dann habe ich nach der Microsoft-Anleitung versuccht selber die Stimme zu ändern (SetVoice).
Dazu gibt Microsoft vor:

Code: Alles auswählen

// Declare local identifiers:
HRESULT                        hr = S_OK;
CComPtr<ISpObjectToken>        cpVoiceToken;
CComPtr<IEnumSpObjectTokens>   cpEnum;
CComPtr<ISpVoice>              cpVoice;
ULONG                          ulCount = 0;
// Create the SAPI voice.
hr = cpVoice.CoCreateInstance(CLSID_SpVoice);
if (SUCCEEDED (hr))
{
   // Enumerate the available voices.
   hr = SpEnumTokens(SPCAT_VOICES, NULL, NULL, &cpEnum;);
}
if (SUCCEEDED (hr))
{
   // Get the number of voices.
   hr = cpEnum->GetCount(&ulCount;);
}
// Obtain a list of available voice tokens, set
// the voice to the token, and call Speak.
while (SUCCEEDED(hr) && ulCount--)
{
   cpVoiceToken.Release();

   if (SUCCEEDED (hr))
   {
      hr = cpEnum->Next(1, &cpVoiceToken;, NULL);
   }
   if (SUCCEEDED (hr))
   {
      hr = cpVoice->SetVoice(cpVoiceToken);
   }
   if (SUCCEEDED (hr))
   {
      hr = cpVoice->Speak( L"How are you?", SPF_DEFAULT, NULL );
   }
}
Aber in Lazarus kennt das SAPI-Objekt folgende Dinge nicht:
SpObjectToken und IEnumSpObjectTokens
Und damit habe ich keine Chance.

Ich wollte Euch nur mal Informieren wie es bei mir aussieht.
Wenn Jemand noch eine Idee hätte wäre ich dankbar.

Gruß
Jürgen
Dateianhänge
bild2.jpg
bild2.jpg (34.22 KiB) 804 mal betrachtet
bild1.jpg
(172.41 KiB) Noch nie heruntergeladen

Benutzeravatar
theo
Beiträge: 10920
Registriert: Mo 11. Sep 2006, 19:01

Re: API für Sprache

Beitrag von theo »

Keine Ahnung, bin nicht auf Windows.
Aber du musst halt ein bisschen suchen. Wer sucht, der findet! :wink:
Das hier könnte hilfreich sein:
https://github.com/red-prig/twitch_vip_ ... Engine.pas
https://github.com/red-prig/twitch_vip_ ... ib_TLB.pas

Benutzeravatar
juelin
Beiträge: 296
Registriert: Sa 24. Jul 2021, 18:03
OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Mannheim

Re: API für Sprache

Beitrag von juelin »

Hallo theo,
erst mal recht herzlichen Dank für die nützliche Info.
Das war es was ich immer gesucht habe.
Die Librarry SpeechLib_TLB konnte ich auch einwandfrei erstellen (.dll).
Mit dem Programm twich_vip_bot-trunk habe ich aber noch Probleme.
1. Die Software verlang FPC Version 3.3.1
Ich habe FPC 3.2.2. Woher nehmen und nicht stehlen?
Habe dann mal die Abftage auf FPC 3.3.1 ausgetrickst.
Dann compeliert er einwandfrei.
Aber wenn er läuft bleibt er auf 'end.' im lpr-File stehen und bring: (siehe bild1).
Kannst Du mir da noch einen Tipp geben?
Danke und Gruß
Jürgen
Dateianhänge
bild1.jpg
(492.98 KiB) Noch nie heruntergeladen

Benutzeravatar
theo
Beiträge: 10920
Registriert: Mo 11. Sep 2006, 19:01

Re: API für Sprache

Beitrag von theo »

juelin hat geschrieben: Fr 30. Mai 2025, 12:52 1. Die Software verlang FPC Version 3.3.1
Ich habe FPC 3.2.2. Woher nehmen und nicht stehlen?
Am einfachsten wohl wie immer mit: https://github.com/LongDirtyAnimAlf/fpc ... e/releases

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6848
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: API für Sprache

Beitrag von af0815 »

Du hast einen internal Error im Compiler, kann sein das der erst im Trunk bzw. 3.3.1 gefixt ist.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
juelin
Beiträge: 296
Registriert: Sa 24. Jul 2021, 18:03
OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Mannheim

Re: API für Sprache

Beitrag von juelin »

Danke für die Info.
Welcher von den Assets muß ich nehmen? (siehe bild2)
Ich habe Windows 11 64 Bit
Danke und Gruß
Jürgen
Dateianhänge
bild2.jpg
(172 KiB) Noch nie heruntergeladen

Benutzeravatar
theo
Beiträge: 10920
Registriert: Mo 11. Sep 2006, 19:01

Re: API für Sprache

Beitrag von theo »

Du musst halt auf "Show all 47 assets" klicken, dann kommt irgendwann das:
https://github.com/LongDirtyAnimAlf/fpc ... -win64.exe

S.a. https://wiki.freepascal.org/fpcupdeluxe

Benutzeravatar
juelin
Beiträge: 296
Registriert: Sa 24. Jul 2021, 18:03
OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Mannheim

Re: API für Sprache

Beitrag von juelin »

hallo theo,
danke für den Link.
Habe es ausprobiert.
Ich kann aber einstellen was ich will,
er erstellt immer Lazarus 3.6 mit FPC 3.2.2 (siehe deluxe2).
Ich wähle FPC 3.3.1 aus und Lazarus 3.6 und drücke dann Install/Update FPC+Lazarus
(siehe deluxe1).
Was mache ich falsch?
Danke und Gruß
Jürgen
Dateianhänge
deluxe1.jpg
(364.41 KiB) Noch nie heruntergeladen
deluxe2.jpg
deluxe2.jpg (45.16 KiB) 612 mal betrachtet

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6848
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: API für Sprache

Beitrag von af0815 »

Hat dir fpcupdeluxe am Desktop einen Link erstellt ? Wenn ja, dann nur über diesen starten. Nicht über den Explorer oder über den Doppelklick auf eine Projektdatei.

Es kann bei Win 11 passieren, das fpcupdeluxe es nicht geschafft hat diesen Link zu erzeugen (Rechteprobleme auf manchen installationen) dann ist etwas Handarbeit angesagt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
juelin
Beiträge: 296
Registriert: Sa 24. Jul 2021, 18:03
OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Mannheim

Re: API für Sprache

Beitrag von juelin »

ja fpcdeluxe hat ein Icon auf dem Desktop erstellt.
Den habe ich immer benutzt.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6848
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: API für Sprache

Beitrag von af0815 »

Hast du in FPCupdeluxe bei der Einstellung für den FPC sicher Trunk verwendet ?

Und ist in den Einstellungen von Lazarus auch der richtige Pfad zu dem neu erstellten FPC eingetragen (Und auch zu den Sourcen). Nicht das der auf den im System vorhandenen fpc zeigt.

BTW, wenn ich fpc Trunk verwende, dann verwende ich auch Lazarus Trunk. Ist aber eine persönliche Vorliebe.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10920
Registriert: Mo 11. Sep 2006, 19:01

Re: API für Sprache

Beitrag von theo »

af0815 hat geschrieben: Sa 31. Mai 2025, 08:40 Hast du in FPCupdeluxe bei der Einstellung für den FPC sicher Trunk verwendet ?
Es gibt allerdings in fpcupdeluxe einen Eintrag, welcher mich auch stutzig gemacht hat.
Es gibt dort eine Auswahloption "3.3.1". Vielleicht macht das Probleme?
Kennt jemand den Unterschied zu "trunk"?
Dateianhänge
fpcupdel.png
fpcupdel.png (79.9 KiB) 538 mal betrachtet

Antworten