2016-06-27 11 views
1

Ich habe einen Code-Schnipsel existiert, die eine Audiodatei für die Transkription der bing Rede api mit Spracherkennungs (erhältlich in PyPI) einreichen versucht:Subprocess Keine solche Datei oder ein Verzeichnis für Datei Rückkehr, die

filename = 'part' + str(entry['srcID']) + '.flac' 
with open(filename, 'w') as filehandle: 
    harkclient.getSeparatedAudio(handle=filehandle, srcID=entry['srcID']) 
with speech_recognition.AudioFile(path.join(path.dirname(path.realpath(__file__)), filename)) as source: 
    audio = speechclient.record(source) 

die folgende Ausnahme ausgelöst:

File "./websocket_server.py", line 105, in send_data 
    with speech_recognition.AudioFile(path.join(path.dirname(path.realpath(__file__)), filename)) as source: 
    File "/srv/www/harkvisualizer/harkenv/local/lib/python2.7/site-packages/speech_recognition/__init__.py", line 195, in __enter__ 
    ], stdin=subprocess.PIPE, stdout=subprocess.PIPE) 
    File "/usr/lib/python2.7/subprocess.py", line 710, in __init__ 
    errread, errwrite) 
    File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child 
    raise child_exception 
OSError: [Errno 2] No such file or directory 

die Datei existiert

(harkenv) [email protected]:/srv/www/harkvisualizer# ls | grep flac 
part0.flac 

Ich habe den Pfad, der an die AudioFile() - Funktion übergeben wurde, ausgedruckt, was korrekt war. Ich spielte auch die Audiodatei, nur um sicher zu sein, dass es das war, was ich erwartet hatte. Ich habe versucht, shell = True arg im Quellcode für den Popen-Aufruf hinzuzufügen, da ich über einige mögliche Probleme damit gelesen habe, aber es nicht aufgelöst hat. Dies läuft in einer virtuellen Umgebung innerhalb eines Websocket-Codeblocks, der Daten an einen Browser sendet (ich konvertiere den Text und sende ihn an eine Webseite). Ich bin mir nicht sicher, ob das ein Problem sein könnte.

Systeminformationen:

Python-Version für Venv und System:

(harkenv) [email protected]:/srv/www/harkvisualizer# which python 
/srv/www/harkvisualizer/harkenv/bin/python 

(harkenv) [email protected]:/srv/www/harkvisualizer# python --version 
Python 2.7.6 

[email protected]:/srv/www/harkvisualizer# /usr/bin/python --version 
Python 2.7.6 

Meine Spracherkennungs Bibliothek Version 3.4.6 ist.

+0

Triple-Zitate hier nicht erkannt werden ; Verwenden Sie Leerzeichen für die Codeformatierung, oder wählen Sie den entsprechenden Abschnitt aus und klicken Sie auf die Schaltfläche {} '. –

+1

Das heißt, wo erzeugen Sie am Ende den Namen der Eingabedatei mit '.flac' (im Gegensatz zu' .wav')? Wenn ich den Code lese, würde er versuchen, "part0.wav" zu lesen, dessen Existenz Sie nicht demonstrieren. Es wäre hilfreich, den tatsächlichen Wert für 'path.join (Pfad.dirname (Pfad.realpath (__ Datei__)), Dateiname) 'zu verwenden. –

+0

Übrigens erzeugt 'shell = True' im Allgemeinen mehr Bugs als es löst, einige davon sind unklar (und sind nur vorhanden, wenn es um ungewöhnliche Dateinamen oder Argumentwerte geht); es als Hagel hinzuzufügen - Mary [ohne die damit verbundenen Verhaltensänderungen zu verstehen] ist schlecht beraten. –

Antwort