2016-05-06 24 views
0

Ich versuche Pygsr zu verwenden, was ich falsch mache?Pygsr Spracherkennung Fehler

from pygsr import Pygsr 
speech = Pygsr() 
speech.record(3) 
phrase, complete_response = speech.speech_to_text('es_ES') 
print (phrase) 

aber ich habe Fehler:

Traceback (most recent call last): 
    File "D:/VIV/PyCharm_project/0_WORKFILE_2.py", line 1, in <module> 
    from pygsr import Pygsr 
    File "C:\Users\User\AppData\Roaming\Python\Python35\site-packages\pygsr\__init__.py", line 30 
    print "REC: " 
       ^
SyntaxError: Missing parentheses in call to 'print' 

Process finished with exit code 1 

Antwort

1

Das Problem ist, dass die Pygsr Bibliothek scheint mit einiger Version von Python 2 im Sinne geschrieben werden.

In Python 2 ist print eine Anweisung und als solche ermöglicht "soffspace" zwischen der Anweisung selbst und der Zeichenfolge gedruckt werden. As of Python 3.0, print is a function und erfordert daher das Öffnen und Schließen von Klammern um die Funktionsargumente. Da Pygsr mit einer Version von Python 2 geschrieben wird, verwendet es immer noch die Anweisungsform print, die in Python 3 ungültig ist. Dies ist in der Zeile zu sehen, die SyntaxError zeigt, die eine Anweisung und keine Funktion ist (print "REC: " vs print("REC: ")).

Sie haben für die Festsetzung dieses Problems ein paar Optionen bekommen:

Die erste Option ist nach unten wechseln 2 die neuesten Version von Python zu verwenden (die 2.7.11 zum Zeitpunkt des Schreibens ist). Dies bedeutet, dass alles funktioniert, was in 3 nicht abwärtskompatibel ist (aber immer noch in 2 funktioniert), aber ich rate nicht, Versionen zu wechseln, nur um eine Bibliothek zum Laufen zu bringen, besonders weil sie den Code beeinflusst, den du schreibst. Darüber hinaus scheint der allgemeine Konsens (nach meinem besten Wissen) zu sein, dass neue Skripte, die auf 2 aufbauen, die Funktionsform print verwenden sollten, die ab 2.6 verfügbar ist, aber für Versionen vor 2.6 aus __future__ importiert werden kann. Die zweite Option besteht darin, das automatische Tool 2to3 zu verwenden, um die Skripte in der Bibliothek so zu konvertieren, dass sie mit 3 kompatibel sind. Dies funktioniert nicht immer 100% aufgrund der Komplexität und möglicher Kantenfälle eines Python-Skripts. aber es ist normalerweise ein guter Weg, um eine Menge der einfacheren Änderungen schnell aus dem Weg zu bekommen.

Die dritte Möglichkeit besteht darin, die Änderungen selbst vorzunehmen. Dies sollte so einfach sein wie das manuelle Durchlaufen der Bibliothek und das Korrigieren von Verweisen auf print, aber Sie können die Probleme auch finden, indem Sie Ihr Skript ausführen, feststellen, auf welche Datei- und Zeilennummer im Fehler verwiesen wird und dann die erforderlichen Änderungen vornehmen.

+0

in code Ich habe 'Print (Ausdruck)' und Fehler zeigt: 'print 'REC:" 'Ich habe diesen Fehler auch ohne jeden Druckanruf:' von Pygsr Import Pygsr rede = Pygsr() rede.record (3) Satz, complete_response = rede.speech_to_text ('es_ES') 'genau so habe ich denselben Fehler:' print 'REC: " ^ SyntaxError: Fehlende Klammern im Aufruf von' print'' scheint das Problem hier ist etwas anderes –

+1

@Ai_ve das Problem ist nicht in Ihrem Code, das Problem liegt in der Pygsr-Code. Es ist nicht kompatibel mit Ihrer Version von Python. – TessellatingHeckler

+0

Ich suche nach einer nützlichen Erkennung, die für Gui verwendet werden kann und ohne Internet funktioniert –