SDK 5.1 in Python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Markus12
User
Beiträge: 195
Registriert: Dienstag 6. März 2007, 19:32
Wohnort: Frankfurt am Main
Kontaktdaten:

SDK 5.1 in Python

Beitragvon Markus12 » Freitag 13. April 2007, 12:14

Hi,
ich hab da ein kleines Problem. Ich habe mir ein Programmierbuch gekauft:
"Objektorientierte Programmierung mit python"

Und da habe ich ein Thema gefunden, in dem es um Sprachsynthese geht.
Also, dass der Comuter sprechen kann.

Und unter der Vorraussetzung steht folgendes:

- der Speech SDK 5.1 von Microsoft muss installiert sein.Er kann kostenlos aus dem Internet heruntergeladen werden (http://microsoft.com/speech/)

- Das Erweiterungspaket "win32all" einschließlich der Entwicklungsumgebung Pythonwin muss installiert sein. Dieses befindet sich auf der CD oder kann auf der Python-Site bezogen werden (http://www.python.org)

- In der Entwicklungsumgebung "Pythonwin" muss einmal im Menü "Tools" die Funktion "COM MAKEPY UTILITY" angeklickt werden und dann "MICROSOFT SPEECH OBJECT LIBRARY 5.1" selektiert werden.


Man brauch erstmal verdammt lange, um das dann zu finden und auf der Seite stehen verschiedene zur Auswahl.

Ich habe dann den "SpeechSDK51.exe" davon heruntergeladen.
Auf der Seite war "win32all" nicht zu finden :x und auf der CD gab es nur diesen exefile: "pywin32-208.win32-py2.4.exe". Ich habe mal angenommen, das er der richtige ist.

Aber weiter bin ich irgendwie nicht gekommen...

Hat zufällig jemand das Buch selbst oder weiß jemand wie man das hinbekommt?

In dem Buch ist das so komisch erklärt :cry:


Danke! :D
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: SDK 5.1 in Python

Beitragvon Leonidas » Samstag 14. April 2007, 13:00

Markus12 hat geschrieben:Auf der Seite war "win32all" nicht zu finden :x und auf der CD gab es nur diesen exefile: "pywin32-208.win32-py2.4.exe". Ich habe mal angenommen, das er der richtige ist.

Ja, das ist es. win32all wurde irgendwann in pywin32 umbenannt. Kannst du aber auch von Sourceforge runterladen. Wenn du das installiert hast, hast du dann die PythonWinj IDE und kannst dort das makepy-Utility aufrufen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Beitragvon Sr4l » Samstag 14. April 2007, 15:55

habe hier mal etwas code welchen ich mir mal von nem cookbook site kopiert habe, vielleicht auch leich modifiziert bin mir nicht mehr sicher.

http://www.microsoft.com/speech/download/sdk51/

pythonwin muss installiert sein und die Speech API.

Code: Alles auswählen

from win32com.client import constants
import win32com.client
import pythoncom

"""Sample code for using the Microsoft Speech SDK 5.1 via COM in Python.
    Requires that the SDK be installed; it's a free download from
            http://microsoft.com/speech
    and that MakePy has been used on it (in PythonWin,
    select Tools | COM MakePy Utility | Microsoft Speech Object Library 5.1).

    After running this, then saying "One", "Two", "Three" or "Four" should
    display "You said One" etc on the console. The recognition can be a bit
    shaky at first until you've trained it (via the Speech entry in the Windows
    Control Panel."""
class SpeechRecognition:
    """ Initialize the speech recognition with the passed in list of words """
    def __init__(self, wordsToAdd):
        # For text-to-speech
        self.speaker = win32com.client.Dispatch("SAPI.SpVoice")
        # For speech recognition - first create a listener
        self.listener = win32com.client.Dispatch("SAPI.SpSharedRecognizer")
        # Then a recognition context
        self.context = self.listener.CreateRecoContext()
        # which has an associated grammar
        self.grammar = self.context.CreateGrammar()
        # Do not allow free word recognition - only command and control
        # recognizing the words in the grammar only
        self.grammar.DictationSetState(0)
        # Create a new rule for the grammar, that is top level (so it begins
        # a recognition) and dynamic (ie we can change it at runtime)
        self.wordsRule = self.grammar.Rules.Add("wordsRule",
                        constants.SRATopLevel + constants.SRADynamic, 0)
        # Clear the rule (not necessary first time, but if we're changing it
        # dynamically then it's useful)
        self.wordsRule.Clear()
        # And go through the list of words, adding each to the rule
        [ self.wordsRule.InitialState.AddWordTransition(None, word) for word in wordsToAdd ]
        # Set the wordsRule to be active
        self.grammar.Rules.Commit()
        self.grammar.CmdSetRuleState("wordsRule", 1)
        # Commit the changes to the grammar
        self.grammar.Rules.Commit()
        # And add an event handler that's called back when recognition occurs
        self.eventHandler = ContextEvents(self.context)
        # Announce we've started using speech synthesis
        self.say("Started successfully")
    """Speak a word or phrase"""
    def say(self, phrase):
        self.speaker.Speak(phrase)


"""The callback class that handles the events raised by the speech object.
    See "Automation | SpSharedRecoContext (Events)" in the MS Speech SDK
    online help for documentation of the other events supported. """
class ContextEvents(win32com.client.getevents("SAPI.SpSharedRecoContext")):
    """Called when a word/phrase is successfully recognized  -
        ie it is found in a currently open grammar with a sufficiently high
        confidence"""
    def OnRecognition(self, StreamNumber, StreamPosition, RecognitionType, Result):
        newResult = win32com.client.Dispatch(Result)
        print "You said: ",newResult.PhraseInfo.GetText()
   
if __name__=='__main__':
    wordsToAdd = [ "One", "Two", "Three", "Four", "water", "computer" ]
    speechReco = SpeechRecognition(wordsToAdd)
    while 1:
        pythoncom.PumpWaitingMessages()
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Samstag 14. April 2007, 16:29

Mit google ist es kein Problem, das Skript wieder zu finden, oder zumindest weitere Quellen einer Kopie:
http://surguy.net/articles/speechrecognition.xml

noch was anderes:
http://aspn.activestate.com/ASPN/Cookbo ... ipe/114216
http://aspn.activestate.com/ASPN/Cookbo ... ipe/167487

generell lohnt sich eine Suche bei ASPN nach "speech": http://aspn.activestate.com/ASPN/search ... ery=speech ;)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Beitragvon Sr4l » Sonntag 15. April 2007, 00:14

ja ja Google ;-)

tut doch mal was gegen die Massenprodukte und nutzt mal Exalead.de ;-)
BlackJack

Beitragvon BlackJack » Sonntag 15. April 2007, 11:48

Tue ich, nicht nur weil ich Google mittlerweile auch für ein wenig zu mächtig halte, sondern weil Exalead wirklich einen Mehrwert gegenüber den Ergebnissen von Google hat. Das weitere Einschränken und das erneute Suchen innerhalb von Suchergebnissen ist echt eine praktische Sache.

http://clusty.com/ ist auch nicht schlecht, die versuchen die Ergebnisse nochmal automatisiert nach Kategorien zu gruppieren.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Sonntag 15. April 2007, 11:55

BlackJack hat geschrieben:Tue ich, nicht nur weil ich Google mittlerweile auch für ein wenig zu mächtig halte, sondern weil Exalead wirklich einen Mehrwert gegenüber den Ergebnissen von Google hat. Das weitere Einschränken und das erneute Suchen innerhalb von Suchergebnissen ist echt eine praktische Sache.

Muss ich mal ausprobieren. Habe einige Zeit Yahoo benutzt, aber die Suchergebnisse bei Yahoo sind einfach durch die Bank schlechter als bei Google.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Markus12
User
Beiträge: 195
Registriert: Dienstag 6. März 2007, 19:32
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitragvon Markus12 » Montag 16. April 2007, 15:37

hi,
danke für die links und den code, aber was ist pythonwin genau??
Wird das installiert, wenn man python 2.4 oder 2.5 installiert?
Keine ahnung was das ist :shock:
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Montag 16. April 2007, 15:55

Markus12 hat geschrieben:was ist pythonwin genau??
Wird das installiert, wenn man python 2.4 oder 2.5 installiert?

Hi!

pythonwin ist ein Python-Editor, der bei pywin32 mit dabei ist.

http://sourceforge.net/projects/pywin32/

pywin32 ist eine Erweiterung, die extra installiert werden muss. Damit kann man direkt auf Windows-APIs zugreifen, COM-Server und COM-Clients programmieren und noch so ein paar Dinge. Näheres steht in der Hilfe, die mitinstalliert wird.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Markus12
User
Beiträge: 195
Registriert: Dienstag 6. März 2007, 19:32
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitragvon Markus12 » Montag 16. April 2007, 16:15

hi,
ich hab nun das richtige pywin32 gedownloaded für 2.5
Dann bin ich auf C:\Python25\Lib\site-packages\pythonwin\Pythonwin.exe gegangen und da hat es folgenden Error gegeben:

[code=]File "C:\Python25\Lib\site-packages\pythonwin\pywin\framework\intpyapp.py", line 171, in InitInstance
import interact
File "C:\Python25\Lib\site-packages\pythonwin\pywin\framework\interact.py", line 20, in <module>
import pywin.scintilla.control
File "C:\Python25\Lib\site-packages\pythonwin\pywin\scintilla\control.py", line 12, in <module>
import struct
<type 'exceptions.ImportError'>: No module named struct[/code]

Hat das mit dem Speech SDK noch keiner gemacht? :cry:
BlackJack

Beitragvon BlackJack » Montag 16. April 2007, 16:52

Das ist sehr merkwürdig, weil `struct` zur Standardbibliothek gehört. Wenn das nicht importiert werden kann, stimmt etwas mit der Python-Installation nicht.
Markus12
User
Beiträge: 195
Registriert: Dienstag 6. März 2007, 19:32
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitragvon Markus12 » Montag 16. April 2007, 17:46

Ich hab schon so verdammt viel installiert, darunter auch 2.4 weil das im buch so stand, dass man das brauch :?

Als ich das SDK 5.1 installiert habe und dann unter Pythonwin bei dem 2.4 gegangen bin, dann kam da nur der SDK 5.0 als ob ich es nicht installiert hätte!

Sollte ich alles mal deinstallieren und einiges neu installieren?

Nebenbei: weiß jeman, ob es schon 2.6 gibt?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 16. April 2007, 19:02

Markus12 hat geschrieben:Nebenbei: weiß jeman, ob es schon 2.6 gibt?

Von Python? Nein, wird es noch längere Zeit nicht geben. Aber 2.5.1 wird demnächst fertig, der erste RC ist ja schon da.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Markus12
User
Beiträge: 195
Registriert: Dienstag 6. März 2007, 19:32
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitragvon Markus12 » Montag 16. April 2007, 19:14

Danke :D
Hat mich weitergebracht! :)
Markus12
User
Beiträge: 195
Registriert: Dienstag 6. März 2007, 19:32
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitragvon Markus12 » Montag 16. April 2007, 19:15

Weil ich Pythonwin bei einem Download link für Versionen von 2.3, 2.4, 2.5 und auch für 2.6 gesehen habe :o
Aber auch gut :wink:

Wer ist online?

Mitglieder in diesem Forum: de_tom