PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Spracherkennung mit VB6



Sommer
02.03.2005, 18:37
Hi Leuts,

bastle grad bissl mit den Directsr rum.
Bis jetzt gehts ganz gut aber das Original Microsoft Voice geht wesentlich besser als das mit VB ?! Ist aber das gleiche Modul.

Hier mal etwas Code zum Basteln.


Option Explicit
'-------------------------------api declares-----------------------------------
Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
'-------------------------------------------------------------------------------

Private Sub Command1_Click()

Select Case Command1.Caption
Case "Disable"
DirectSR1.Deactivate
Command1.Caption = "Enable"
Label1 = "Disabled"
Case "Enable"
DirectSR1.Activate
Command1.Caption = "Disable"
Label1 = "Ready"



End Select
End Sub

Private Sub Command2_Click()


DirectSS1.Speak Format(Time, "hh:mm")


End Sub

Private Sub DirectSR1_PhraseFinish(ByVal flags As Long, ByVal beginhi As Long, _
ByVal beginlo As Long, ByVal endhi As Long, ByVal endlo As Long, _
ByVal Phrase As String, ByVal parsed As String, ByVal results As Long)



'MsgBox "in the phrasefinish"


Dim sFile As String
Dim noth As Long

'MsgBox Phrase, , "The Phrase is: "

Select Case Phrase

Case "Notepad"

sFile = "\system32\notepad.exe"
noth = ShellExecute(0, "OPEN", Environ("SystemRoot") & sFile, "", "", 1)

Case "Volume"

sFile = "\system32\sndvol32.exe"
noth = ShellExecute(0, "OPEN", Environ("SystemRoot") & sFile, "", "", 1)

Case "Media Player:"

sFile = "C:\Program Files\Windows Media Player\mplayer2.exe"
noth = ShellExecute(0, "OPEN", sFile, "", "", 1)

Case "Time"

DirectSS1.Speak Format(Time, "hh:mm")


End Select


If Phrase <> "" Then
Text1.Text = "Matched word is " & Phrase
'DirectSR1.LastHeard = ""
Else

Text1.Text = "No word matched"
'DirectSR1.LastHeard = ""
End If


'DirectSR1.Activate







End Sub


Private Sub Form_Load()




Dim retval As Integer

DirectSR1.GrammarFromString "[Grammar]" + vbNewLine + _
"type=cfg" + vbNewLine + _
"[<start>]" + vbNewLine + _
"<start>=Web Browser" + vbNewLine + _
"<start>=Notepad" + vbNewLine + _
"<start>=Visual Basic" + vbNewLine + _
"<start>=Calculator" + vbNewLine + _
"<start>=Time" + vbNewLine


DirectSR1.Activate
End Sub




]


Also man könnte da schon viel machen ála Roboter und in Verbindung Directss :-)

Hier noch die Links für die benötigten Komponeten.

http://download.microsoft.com/download/speechSDK/Install/4.0a/WIN98/EN-US/SAPI4SDKSUITE.exe


http://download.microsoft.com/download/speechSDK/SDK/5.1/WXP/EN-US/speechsdk51.exe


Würd mich freuen wenn da mehr interesse hätten ;-)

by Ulli


PS: geht nur in English

MJA
03.03.2005, 07:28
Hi.

Ich hab nicht soo viel Ahnung von VB, bin mehr der Java-Typ (unschwer zu erkennen ;-) ) Aber wenn ich das richtig sehe spricht das Programm bis jetzt eigendlich nur Datum und Uhrzeit oder? Das ganze sieht mir aus wie eine Sprachsteuerung für den Computer, stimmts? Also wenn er was hört soll er ein Programm ausführen. Naja, zumindest so wie ich den Quellcode verstehe (als halbwegs VB-Laie)

Gruß, Jan.

P.S.: Ein ähnliches Programm (ich weiß aber nicht ob in VB, glaube nicht) haben die Jungs von mindrobots (http://www.mindrobots.de) schonmal realisiert. Da kannst du ja auch mal reinschauen irgendwann.

Sommer
03.03.2005, 09:07
Hi,

ja alles was unter Case bei DirectSR1_PhraseFinish drinn ist und bei load form mit bei <start> von Grammer aufgeführt ist kann er.
Ich hab noch zum spielen die Uhrzeit sagen lassen wenn man ihn frägt ;-)

Das ganze geht auch unter Java sind auch beispiele dabei must nur die SDK mal runterladen. Die OCX kannst da auch einbinden ;-)

by Ulli

MJA
03.03.2005, 13:56
Hi.

Sorry, ich hab im Moment nicht die Zeit dafür ;-) klingt interessant, aber eher für später mal. Aber eins interessiert mich doch: Welche SDK meinst du? Die von Microsoft oben?
Und (das ist mit jetzt peinlich): Was ist OCX?

Gruß, Jan.

Trabukh
03.03.2005, 14:33
Hi!

Hmm, ich hab' vor Uhrzeiten mal ein kleines Programm in VB mit besagter SDK gemacht, damit ich die Englischhausaufgaben nicht immer schreiben musste. Mal sehen, vllt finde ich das noch... War aber wirklich extrem wenig Code.

Gruß, Trabukh

Trabukh
08.03.2005, 06:09
So, ich hab' mein altes Programm zwar nicht mehr gefunden, aber ein kleines neues gemacht:

Dim WithEvents RecoContext As SpSharedRecoContext
Dim Grammar As ISpeechRecoGrammar
Dim Position As Integer

Private Sub Command0_Click()
Set RecoContext = New SpSharedRecoContext
Set Grammar = RecoContext.CreateGrammar(1)
Grammar.DictationLoad

Grammar.DictationSetState SGDSActive
Command0.Enabled = False
Command1.Enabled = True
End Sub

'Stopknopf
Private Sub Command1_Click()
Grammar.DictationSetState SGDSInactive
Command1.Enabled = False
Command0.Enabled = True
End Sub

Private Sub RecoContext_Recognition(ByVal StreamNumber As Long, ByVal StreamPosition As Variant, ByVal RecognitionType As SpeechRecognitionType, ByVal Result As ISpeechRecoResult)
Dim Text As String
RecoText = Result.PhraseInfo.GetText
Text1.SelStart = Position
Text1.SelText = RecoText & " "
Position = Position + 1 + Len(RecoText)
End Sub
Damit werden englische Wörter ganz gut erkannt, allerdings muss man das Profil vorher erst trainieren (Systemsteuerung -> Sprachein/-ausgabe)

Gruß, Trabukh

08.03.2005, 16:43
Hi,
ja das is so wie des Original von Microsoft geht so lala *g*
Also ich muss sagen des es noch nicht das ware ist aber Microsoft macht
da anscheinend auch nix mehr :-(

naja ich hab nun das ganze mahl gegäzelt, da die Wlan Bildübertragung auch etwas träge ist und ne große CPU Auslastung hervorruft.

Zudem bricht das Wlan schnell zusammen sollten andere 2,4Ghz geräte wie Microwell / Funkkameras oder andere Geräte in der nähe sein :-(

Somit wieder mein altes Realtime System weiter entwickeln :-)

Spracherkennung werd ich mal anders probieren alá Hardware.

By Danke für eure mühe

PS: OCX sind fertige Komponeten für die Prog. Oberfläche

Sollte es was neues geben lasst es mich wissen :-)

MJA
08.03.2005, 17:19
@Gast: Klingt so als ob du Sommer wärst ;-) Hast wohl vergessen dich anzumelden. Danke, jetzt weiß ich was OCX sind :-D Ich habs noch nicht ausprobiert, kann nix dazu sagen.

ich hab nun das ganze mahl gegäzelt
Häää? Jetzt noch mal ohne Dialekt bitte ^^ Was hat das mit WLAN zu tun?? Was hast du denn mit WLAN übertragen?

Gruß, Jan.

Trabukh
08.03.2005, 19:11
Vllt meint er "gecancelt"? :|

Sommer
08.03.2005, 20:39
Hi,

ja sorry war nicht eingeloggt :-(

Ich hab ne kleine Soft gemacht wo Komandos Bild und Sprachausgabe möglich ist über WLAN aber ist "gecancelt" :-)

by Ulli

08.05.2005, 09:00
:D Das Thema ist interessant, sowas mach ich auch gerade!

08.05.2005, 10:02
geht spracherkennung auch in einfachem qBasic?
wär interessant für nen mikroproc

05.06.2005, 12:10
Gibts die ganze spracherkennung auch auf deutsch??? find die idee sehr genial!

Trabukh
05.06.2005, 12:37
Nein, leider nicht...

Gruß, Trabukh

sebastian_w
08.02.2008, 11:22
Hallo habe ein Problem wollte den code von Sommer mal ausprobiernund bekomme beim starten den fehler: "Deklaration der Prozedur entspricht nicht der Beschreibung eines Ereignusses der Prozedur mit demselben Namen" was amche ich falsch?

Microsoft Voice und dictation installiert und gestarten
Vdict in meiner oberfläche hinzugefühgt und DirectSR1 Genannt ( ist hier der fehler ? )

mfg sebastian