Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0276: Spracheausgabe mit dem DirectSpeech-Control

 von 

Beschreibung 

Es gibt sie, die Sprachausgabe, wenn auch sehr umfangreich in der Installation, so ist sie doch sehr leicht zu bedienen. Der Tip stellt mangels Dokumentation nur elementare Funktionen vor. Die einzubindende ActiveX-DLL verfügt aber über wesentlich mehr Methoden und Ereignisse. Vielleicht macht sich mal jemand die Müher mehr über dieses lustige Tool herauszufinden.

Update am 3. Oktober 2003: Der Sprecher ist nun fehlerfrei wählbar.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [3,04 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
' Die Komponente ' (XVoice.dll)' wird benötigt.

'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Listen-Steuerelement "List1"
' Steuerelement: Horizontale Scrollbar "HScroll1"
' Steuerelement: Kontrollkästchen-Steuerelement "Check1"
' Steuerelement: DirectSS "DirectSS1"
' Steuerelement: Textfeld "Text1"
' Steuerelement: Schaltfläche "Command1"
' Steuerelement: Beschriftungsfeld "Label1"


'Bevor Sie diesen Tip starten, bitte folgendes beachten:
'
'  1.    Laden Sie sich aus dem Upload-Bereich die Datei
'         "SprachausgabeDLL" herunter
'
'  2.    Laden Sie sich aus dem Upload-Bereich die Datei
'         "Sprachausg._Modul_Deutsch" herunter
'
'  3.    Starten Sie beide .exe-Dateien. Die zur Sprach-
'        ausgabe benötigten DLLs werden jetzt installiert
'
'  4.    Laden Sie diesen Tip in die VB-IDE
'
'  5.    Binden Sie in der VB-IDE unter Pojekte/Komponenten
'        die Komponente "Microsoft Direct Text-To-Speech"
'        ein (durch Anhaken)
'
'  6.    Starten Sie das Projekt, Fertig!

Option Explicit

Private Sub Command1_Click()
  DirectSS1.Speak Text1.Text
End Sub

Private Sub Check1_Click()
  DirectSS1.Visible = IIf(Check1.Value = vbChecked, True, False)
End Sub

Private Sub Form_Load()
  HScroll1.Min = DirectSS1.MinSpeed
  HScroll1.Max = DirectSS1.MaxSpeed
  HScroll1.Value = DirectSS1.Speed
  
  List1.AddItem DirectSS1.Speaker(1)
  List1.AddItem DirectSS1.Speaker(2)
  List1.ListIndex = 0
End Sub

Private Sub HScroll1_Change()
  DirectSS1.Speed = HScroll1.Value
End Sub

Private Sub DirectSS1_TextDataStarted(ByVal hi As Long, ByVal _
                                      lo As Long)
  HScroll1.Enabled = False
End Sub

Private Sub DirectSS1_TextDataDone(ByVal hi As Long, ByVal lo As _
                                   Long, ByVal Flags As Long)
  HScroll1.Enabled = True
End Sub

Private Sub List1_Click()
    Dim x As Long
    x = List1.ListIndex
    
    If x <> -1 Then
      DirectSS1.CurrentMode = x + 1
    End If
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 40 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von chris am 12.09.2009 um 17:21

Die zweite Datei ist anscheinend für Spracherkennung

Kommentar von chris am 12.09.2009 um 17:08

Nach dem die Datei unter Uploads nicht mehr verfügbar ist:
Ich hab die beiden Dateien installiert und dann ging es :)
http://activex.microsoft.com/activex/controls/sapi/spchapi.exe
http://activex.microsoft.com/activex/controls/agent2/lhttsged.exe

Kommentar von Alois am 15.05.2007 um 15:09

der Tip hat gut funktioniert.
Lässig wäre es, wenn man die eigene Stimme z.B:. irgendwie einbinden könnte.
Geht das eigentlich?

Kommentar von Razor am 27.03.2007 um 18:13

das funzt irgendwie net der gibt kein sound aus ^^
bitte um fix

Kommentar von Reinhold Kellermann am 22.12.2005 um 15:31

Besten Dank für das sample: Es hat mir geholfen und mich zu weitere interessante Herausforderungen geführt......

R. Kellermann

Kommentar von Marcus am 05.10.2005 um 11:32

Die SpachausgabeDLL und Sprachausg._Modul_Deutsch kann man finden, wenn man im Bereich UP-Download "Speech" eingibt.

Kommentar von HubHub am 20.10.2004 um 16:40

Konnte nur Speaker1-4 einstellen

Kommentar von Martin am 06.10.2004 um 06:24

Mit den 2 Liberray-Packs funktioniert es endlich !!!

Diese hier:

lhttsged.exe
spchapi.exe

Mußte bei Upload bzw. Download hier downloaden !!!

Kommentar von tom bau am 30.12.2003 um 20:11

Hallo,
wo finde ich denn die SpachausgabeDLL und Sprachausg._Modul_Deutsch ??
ich kann es auch nicht finden!!

Kommentar von am 30.08.2003 um 14:40

das list_click ereignis muss folgendermaßen geändert werden:

Dim x&
x = List1.ListIndex
If x <> -1 Then
DirectSS1.CurrentMode = x + 1
End If

Kommentar von Franz Grillmeier am 21.05.2003 um 12:30

fuktioniert zwar, aber die Änderung der CurrentMode-Eigenschafthat keinen Einfluss auf den Klang. Klingt immer wie meine alte Französisch-Lehrerin! :-)
Frage: Gibt es zum Direct Speech Control
irgendwo eine Hilfedatei o. ä.?

Kommentar von Joachim am 04.03.2003 um 21:05

Gibt es eine Möglichkeit, das Ende des Spprechens eines textes abzufragen um danach eine Aktion auszuführen?

Kommentar von Sebastian am 12.12.2002 um 19:21

Hallo,
wo finde ich denn die SpachausgabeDLL und Sprachausg._Modul_Deutsch ??
ich kanns nicht finden!!

Kommentar von am 12.12.2002 um 19:18

Kommentar von NSC am 05.12.2002 um 12:47

Hat einer Erfahrung mit der Anbindung an NAVISION???

Kommentar von Basic-Master am 08.10.2002 um 14:15

Ich habe eine Frage zu dem Tool Reco, das auch in der Speech SDK enthalten ist: Gibt es eine möglichkeit, das Training von Reco in VB selber zu programmieren ?

Kommentar von Mark Brink am 30.09.2002 um 17:11

Korrektur:
- Unter Win2K funktioniert das herunterladbare Projekt sofort und ohne Zusatzinstallationen
- Unter Win NT funktioniert das herunterladbare Projekt nur, wenn wie im Kommentar beschrieben, die beiden Komponenten aus dem Download-Bereich zuerst installiert werden.

Kommentar von Mark Brink am 30.09.2002 um 16:47

Beim mir funzt das Teil auf verschiedenen Maschinen mit Windows2K problemlos, allerdings hapert es bei Windows NT. Trotz scheinbar korrekter Registrierung von XVoice.dll bleibt der Mund stumm.

Die Datei XVoice.dll ist übrigens gemäss Information von Microsoft Teil des Lieferumfangs von Win2K und WinXP, nicht jedoch von anderen Windows-Versionen. Wer sie also braucht sollte sie aus einer Win2K-Installation rauskopieren. Vielleicht funzt es ja doch irgendwie mit anderen Betriebssystem-Versionen.

Kommentar von Andreas Greifeneder am 02.09.2002 um 11:29

Ich habe das mit der Sprachausgabe auf ein Telefon für mich so gelöst: Mittels der .filename Eigenschaft des DirectSpeech Controls speichere ich die Sprachausgabe als Wave (einfach Dateiname als String übergeben). Mit der AWCapi Komponente von Atelier Web baue ich eine Verbindung zum gewünschten Anschluss auf und spiele die Wave ab. Funktioniert soweit gut, jedoch nur mit ISDN. Laut der Dokumentation für SAPI 4.0 sollte aber auch eine direkte Verwendung via TAPI möglich sein, habe ich mir aber nicht genauer angeschaut.

Kommentar von Gerhard Thiem am 24.07.2002 um 23:10

Kann die Sprachausgabe auch über ein Modem auf ein Telefon erfogen?

Kommentar von Hannes am 22.07.2002 um 11:09

Hallo!
Weiß jemand wie man eine Sprachausgabe auf Englisch machen kann?
Braucht man da noch ein anderes Sprachmodul?

Kommentar von Jagger am 14.06.2002 um 09:31

funktioniert soweit,
habe allerdings das Problem, dass der Rechner sich bei Umlauten und "ß" total aufhängt.
Warum macht er das?

Kommentar von Michael Steiner am 14.04.2002 um 11:18

Es klappt!
Und so auch in deutsch:
DirectSS1.CurrentMode = 2
Gruß Michael

Kommentar von Renate Bröcker am 12.03.2002 um 14:46

Gibt es etwas ähnliches auch für Java?

Kommentar von Rene Jahn am 24.02.2002 um 15:50

Also ich muß sagen geht einfach super. Aber was soll ich mit der Sprachausg_Modul_Deutsch Datei? der Spricht doch auch so deutsch

Kommentar von Utzus am 11.01.2002 um 17:08

Wie bekomme ich es hin das er "Stefan" anstadt "Anna" spricht?
thx,
Utzus

Kommentar von Lochschmidt Walter am 16.12.2001 um 18:10

Ich bin heute auf dieses Beispiel gestoßen. Es ist ein toller Gag!!!Ich weis ja nicht, ob nun schon alle die Sprachausgabe.Dll gefunden haben.
Über Up-Download bin ich auch nicht hingekommen.
Wenn man aber die URL direkt im IE-Explorer eingibt, dann klappts. Das Deutschmodul steht gleich darunter.
http://www.activevb-archiv.net/cgi-bin/VBupdown/VBuplist.pl?Start=38&Cmd=pick

Kommentar von Trunner helmut am 14.12.2001 um 14:27

Bin sehr interresiert,doch leider bekomme ich immer die Fehlermeldung OLE Server nicht installiert.Wer weiß,wo ich den erhalte ???
Danke im Voraus
Trunner H.

Kommentar von Georg Nowak am 07.08.2001 um 15:14

Können Sie mir mitteilen wo ich die XVoice.dll herunterladen kann? Ohne der Datei geht leider gar nichts!

Kommentar von Lars Corneliussen am 02.06.2001 um 11:58

Das Programm zeigt bei mir nur 2 Stimmen, jeweils "Default Male Voice" an.
der erste spricht englisch, der andere Flüstert englisch.
Dabei habe ich L&H, Logox, IBM und die Microsoft Speech engine installiert.

Kommentar von Lars Corneliussen am 02.06.2001 um 11:37

kann mann die ausgabe auch in eine wave-datei leiten?

Kommentar von Werner.Falkenbach am 28.05.2001 um 21:09

Wenn man den Quellcode in Ordnung bringt spricht's auch deutsch :-)
In List1_Click()
muss es heissen : DirectSS1.CurrentMode = list1.listindex + 1

Kommentar von Werner Falkenbach am 28.05.2001 um 20:10

Der Quellcode funktioniert zwar, wenn man die entsprchenden Steuerelemente auf die Form legt. Soweit-so gut.
Aber deutsch spricht das Biest nicht. Wie bringt man das DirectSpeechControl dazu, statt der englischen die "deutschen" DLL's zu nehmen?

Kommentar von David am 22.05.2001 um 19:11

Ist ja schön und gut!Soweit war ich ja auch schon.Eigentlich bin ich nur hierauf gestoßen, da ich diese Sprachausgabe DLL gesucht habe. Blöderweise habe ich nur die XVoice.dll aber die Registryeinträge fehlen. So jetzt mein Problem. Ich scheine mich zu Blöd anzustellen aber ich finde keine SpachausgabeDLL im Upload-Bereich!HILFE

Kommentar von Ferdinand am 21.05.2001 um 19:54

Irgend wie finde ich die Sprachausgabe.dll datei nicht! Wenn ich das programm starten will kommt das die Datei fehlt:
XVoice.dll

Kommentar von LeaDer am 14.05.2001 um 11:44

Warum wird der Speicher überlastet wenn mann einen zu langen Text eingib?
Kann man nicht einfach nach z.B 30 Zeichen die Sprachausgabe stoppen und den resste danach abspielen?

Kommentar von Carsten Tröller am 05.12.2000 um 09:18

Ich finde das es absolut nett gemacht ist.Es eröffnet einem doch gleich ganz andere Perspektiven.

Kommentar von Meik Piepmeyer am 28.11.2000 um 17:47

Mit diesem Sprachausgabemodul kann man (glaube ich zumindenst) auch Sprache eingeben (durch ein Mikrofon).
Denn in diesem Donload der Sprachausgabe ist auch ein Steuerelement enthalten (Microsoft.... Dictation). Wie funktioniert dies ???

Kommentar von Rene Vögeli am 16.11.2000 um 13:36

Das DirektSpeech Control ist zwar schön und gut, aber wer richtig mit soeiner Sprachausgabe programmieren will, der downloadet sich lieber Logox3 von der Seite www.logox.de. Man muss zwar die Software bein seinen Programmen beilegen, aber diese ist kostenlos (jedenfalls die Demo) und man kann viel eine viel schönere Sprachausgabe herstellen. (Bei der Software ist das Steuerelemet dabei!)

Kommentar von Syrius am 03.11.2000 um 19:38

Seht auch mal unter http://msdn.microsoft.com/library/techart/msdn_texttosp.htm
Grüsse Syr