mit dieser Bibliothek kann man die Spracherkennung (Sprache -> Text) und Sprachausgabe (Text -> Sprache) nutzen.
Mit der Spracherkennung kann man festgelegte Wörter sprechen, die vom Programm erkannt und ausgewertet werden können. Z.B. beim Sprechen des Wortes "Waschmaschine" wird ein Event ausgelöst und man kann darauf reagieren.
Mit der Sprachausgabe kann ein Text von der Computerstimme vorgelesen werden oder in eine Audio-Datei gespeichert werden.
Funktionen:
- TextToSpeaker()
- Syntax:
Code: Alles auswählen
Result = TextToSpeaker(Text$, Voice$, Speed, Volume, Asynchronous, @ErrorOutput)
- Beschreibung: Angegebener Text wird von der Computerstimme vorgelesen.
- Parameter:
- Text$: Text, der vorgelesen werden soll.
- Voice$: Wenn mehrere Stimmen auf dem Computer installliert sind, kann eine bestimmte Stimme festgelegt werden. Wenn "" angegeben wurde, dann wird die Standard-Stimme genommen.
- Speed: Legt die Sprechgeschwindigkeit (-10 (sehr langsam) bis 10 (sehr schnell)) fest.
- Volume: Legt die Lautstärke (0-100) fest.
- Asynchronous: Wenn 1 angegeben wurde, dann wartet das Programm nicht, bis der Text vollständig vorgelesen wurde, sondern der Text wird im Hintergrund vorgelesen.
- @ErrorOutput: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
- Rückgabewert:
- 0: Der Vorgang war erfolgreich.
- Beispielcode:
Code: Alles auswählen
EnableExplicit Global PBEx_Speech CompilerIf #PB_Compiler_Processor = #PB_Processor_x86 PBEx_Speech = OpenLibrary(#PB_Any, "PB.Ex_Speech_x86.dll") CompilerElseIf #PB_Compiler_Processor = #PB_Processor_x64 PBEx_Speech = OpenLibrary(#PB_Any, "PB.Ex_Speech_x64.dll") CompilerEndIf If PBEx_Speech Prototype TextToSpeaker(Text.p-Unicode, Voice.p-Unicode, Speed, Volume, Asynchronous, ErrorOutput) Global TextToSpeaker.TextToSpeaker = GetFunction(PBEx_Speech, "TextToSpeaker") Prototype TextToAudioFile(Text.p-Unicode, Voice.p-Unicode, Speed, Volume, SaveFilePath.p-Unicode, ErrorOutput) Global TextToAudioFile.TextToAudioFile = GetFunction(PBEx_Speech, "TextToAudioFile") Prototype SpeechRecognition(WordArray, WordArraySize, ErrorOutput) Global SpeechRecognition.SpeechRecognition = GetFunction(PBEx_Speech, "SpeechRecognition") Prototype WaitSpeechRecognition(RecognizedWord) Global WaitSpeechRecognition.WaitSpeechRecognition = GetFunction(PBEx_Speech, "WaitSpeechRecognition") Prototype KillSpeechRecognition() Global KillSpeechRecognition.KillSpeechRecognition = GetFunction(PBEx_Speech, "KillSpeechRecognition") Define ErrorOutput$ = Space(1024) If TextToSpeaker("Hallo PureBasic-Freunde", "", 1, 100, 0, @ErrorOutput$) <> 0 Debug ErrorOutput$ EndIf CloseLibrary(PBEx_Speech) EndIf
- Syntax:
- TextToAudioFile()
- Syntax:
Code: Alles auswählen
Result = TextToAudioFile(Text$, Voice$, Speed, Volume, SaveFilePath$, @ErrorOutput)
- Beschreibung: Die Sprachausgabe des Textes wird in die angegebene Audio-Datei (Wave) gespeichert.
- Parameter:
- Text$: Text, der vorgelesen werden soll.
- Voice$: Wenn mehrere Stimmen auf dem Computer installliert sind, kann eine bestimmte Stimme festgelegt werden. Wenn "" angegeben wurde, dann wird die Standard-Stimme genommen.
- Speed: Legt die Sprechgeschwindigkeit (-10 (sehr langsam) bis 10 (sehr schnell)) fest.
- Volume: Legt die Lautstärke (0-100) fest.
- SaveFilePath$: Legt den Speicherort der Audio-Datei fest.
- @ErrorOutput: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
- Rückgabewert:
- 0: Der Vorgang war erfolgreich.
- Beispielcode:
Code: Alles auswählen
EnableExplicit Global PBEx_Speech CompilerIf #PB_Compiler_Processor = #PB_Processor_x86 PBEx_Speech = OpenLibrary(#PB_Any, "PB.Ex_Speech_x86.dll") CompilerElseIf #PB_Compiler_Processor = #PB_Processor_x64 PBEx_Speech = OpenLibrary(#PB_Any, "PB.Ex_Speech_x64.dll") CompilerEndIf If PBEx_Speech Prototype TextToSpeaker(Text.p-Unicode, Voice.p-Unicode, Speed, Volume, Asynchronous, ErrorOutput) Global TextToSpeaker.TextToSpeaker = GetFunction(PBEx_Speech, "TextToSpeaker") Prototype TextToAudioFile(Text.p-Unicode, Voice.p-Unicode, Speed, Volume, SaveFilePath.p-Unicode, ErrorOutput) Global TextToAudioFile.TextToAudioFile = GetFunction(PBEx_Speech, "TextToAudioFile") Prototype SpeechRecognition(WordArray, WordArraySize, ErrorOutput) Global SpeechRecognition.SpeechRecognition = GetFunction(PBEx_Speech, "SpeechRecognition") Prototype WaitSpeechRecognition(RecognizedWord) Global WaitSpeechRecognition.WaitSpeechRecognition = GetFunction(PBEx_Speech, "WaitSpeechRecognition") Prototype KillSpeechRecognition() Global KillSpeechRecognition.KillSpeechRecognition = GetFunction(PBEx_Speech, "KillSpeechRecognition") Define ErrorOutput$ = Space(1024) If TextToAudioFile("Hallo PureBasic-Freunde", "", 1, 100, "D:\AudioText.wav", @ErrorOutput$) <> 0 Debug ErrorOutput$ EndIf CloseLibrary(PBEx_Speech) EndIf
- Syntax:
- SpeechRecognition()
- Syntax:
Code: Alles auswählen
Result = SpeechRecognition(WordArray, WordArraySize, @ErrorOutput)
- Beschreibung: Erkennt beim Sprechen die festgelegten Wörter und gibt ein Event an die Funktion WaitSpeechRecognition() zurück.
- Parameter:
- WordArray: Ein String-Array mit Wörtern, die erkannt werden sollen. Wenn 0 übergeben wird, dann werden beliebige Wörter erkannt.
- WordArraySize: Anzahl der Elemente. Wenn 0 übergeben wird, dann werden beliebige Wörter erkannt.
- @ErrorOutput: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
- Rückgabewert:
- 0: Der Vorgang war erfolgreich.
- Beispielcode:
Code: Alles auswählen
EnableExplicit Global PBEx_Speech CompilerIf #PB_Compiler_Processor = #PB_Processor_x86 PBEx_Speech = OpenLibrary(#PB_Any, "PB.Ex_Speech_x86.dll") CompilerElseIf #PB_Compiler_Processor = #PB_Processor_x64 PBEx_Speech = OpenLibrary(#PB_Any, "PB.Ex_Speech_x64.dll") CompilerEndIf If PBEx_Speech Prototype TextToSpeaker(Text.p-Unicode, Voice.p-Unicode, Speed, Volume, Asynchronous, ErrorOutput) Global TextToSpeaker.TextToSpeaker = GetFunction(PBEx_Speech, "TextToSpeaker") Prototype TextToAudioFile(Text.p-Unicode, Voice.p-Unicode, Speed, Volume, SaveFilePath.p-Unicode, ErrorOutput) Global TextToAudioFile.TextToAudioFile = GetFunction(PBEx_Speech, "TextToAudioFile") Prototype SpeechRecognition(WordArray, WordArraySize, ErrorOutput) Global SpeechRecognition.SpeechRecognition = GetFunction(PBEx_Speech, "SpeechRecognition") Prototype WaitSpeechRecognition(RecognizedWord) Global WaitSpeechRecognition.WaitSpeechRecognition = GetFunction(PBEx_Speech, "WaitSpeechRecognition") Prototype KillSpeechRecognition() Global KillSpeechRecognition.KillSpeechRecognition = GetFunction(PBEx_Speech, "KillSpeechRecognition") Define RecognizedWord$ = Space(1024) Define ErrorOutput$ = Space(1024) Define IsRecognized Dim WordArray.s(5) WordArray(0) = "Hallo" WordArray(1) = "Waschmaschine" WordArray(2) = "Installation" WordArray(3) = "Basic" WordArray(4) = "Willkommen" WordArray(5) = "Liebe" If SpeechRecognition(0, 0, @ErrorOutput$) = 0 WaitSpeechRecognition(@RecognizedWord$) Debug RecognizedWord$ EndIf If SpeechRecognition(WordArray(), ArraySize(WordArray())+1, @ErrorOutput$) = 0 Repeat IsRecognized = WaitSpeechRecognition(@RecognizedWord$) If IsRecognized = 1 Debug "Erkannt: " + RecognizedWord$ Break ElseIf IsRecognized = 2 If RecognizedWord$ = "" Debug "Es wurde nichts richtiges erkannt." Else Debug "Es wurde nichts richtiges erkannt, vielleicht dieses Wort: " + RecognizedWord$ + "?" EndIf EndIf ForEver EndIf KillSpeechRecognition() CloseLibrary(PBEx_Speech) EndIf
- Syntax:
- WaitSpeechRecognition()
- Syntax:
Code: Alles auswählen
Result = WaitSpeechRecognition(@RecognizedWord$)
- Beschreibung: Gibt 1 und das Wort zurück, wenn ein festgelegtes Wort von der Funktion SpeechRecognition() erkannt wurde. Oder 2, wenn nichts oder ein ähnliches Wort erkannt wurde.
- Parameter:
- @RecognizedWord$: Das erkannte Wort wird in die String-Variable gespeichert. Falls kein richtiges Wort erkannt wurde, dann wird entweder leer oder ein ähnliches Wort zurückgegeben.
- Rückgabewert:
- 1: Ein festgelegtes Wort wurde erkannt.
- 2: Es wurde kein richtiges Wort erkannt.
- Syntax:
- KillSpeechRecognition()
- Syntax:
Code: Alles auswählen
Result = KillSpeechRecognition()
- Beschreibung: Beendet hart das Spracherkennungsprogramm von Windows.
- Parameter: Keine
- Rückgabewert:
- 0: Der Vorgang war erfolgreich.
- Syntax:
- Windows XP oder höher
- .NET Framework 4 oder höher
- Unicode-Aktivierung (standardmäßig ab PB 5.50)
Folgende Copyright-Texte müssen mitgeliefert werden:
Download: https://www.rsbasic.de/downloads/downlo ... Speech.zipCopyright © 2019 RSBasic.de
Ich würde mich über Feedbacks, Verbesserungsvorschläge, Fehlermeldungen oder Wünsche sehr freuen. Wer mich unterstützen möchte, kann mir auch was kleines spenden. Danke