0
に割り当てます。このスクリプトの目的は、IBM WatsonスピーチからテキストAPIを使用してファイルを読み取り、オーディオを抽出し、トランスクリプトを出力することです。私の問題は、サブプロセスからの出力を変数に保存し、それをオープン関数に渡そうとするときです。バイナリとして読み込みます。私は間違って何をしていますか?どんな助けもありがとう!サブプロセスの出力を変数
import sys
import re
import json
import requests
import subprocess
from subprocess import Popen, PIPE
fullVideo = sys.argv[1]
title = re.findall('^([^.]*).*', fullVideo)
title = str(title[0])
output = subprocess.Popen('ffmpeg -i ' + fullVideo + ' -vn -ab 128k ' + title + '.flac', shell = True, stdin=subprocess.PIPE).communicate()[0]
sfile= open(output, "rb")
response = requests.post("https://stream.watsonplatform.net/speech-to-text/api/v1/recognize",
auth=("USERNAME", "PASSWORD"),
headers = {"content-type": "audio/flac"},
data=sfile
)
print (json.loads(response.text))
私はまだ、このエラーが発生します:FileNotFoundError:[errnoを2]いいえそのようなファイルまたはディレクトリ:B '' – Bryan
実行 ' 'ffmpegの-i' + fullVideo + '-vn -ab 128kの' +タイトル+ 'ターミナルや 'print output'に' .flac 'を追加すると、ffmpegの出力が正しいことが保証されます。 –
理想的には、私はスクリプト内でそれを実行し、ターミナル内の引数としてビデオを渡したいと思います。出力をコンソールに出力すると、/ bin/sh:ffmpeg:コマンドが見つかりませんでした。私は、ビデオからオーディオを抽出するプロセスが時間内に完了していないと考えています。なぜ出力はちょうどbであるのですか?開いている関数に渡す前に、プロセスが完了するまで待機させる方法は? – Bryan