Я пытаюсь расшифровать подкаст. Для этого я дешифрую mp3-поток с помощью FFMPEG и передаю полученный результат PCM в компонент распознавания речи. Мой код выглядит так.Трубопроводные данные PCM от FFMPEG к другому процессу с подпроцессом Python
mp3=subprocess.Popen(['ffmpeg','-i',audio_url,
'-f','s16le','-ac','1','-ar','16000','pipe:0'],
stdout=subprocess.PIPE)
sphinx=subprocess.Popen(['java','-jar','transcriber.jar'],
stdin=mp3.stdout,
stdout=subprocess.PIPE)
Где audio_url
это адрес mp3-файла.
Когда я пытаюсь запустить это, он зависает. Похоже, что подача декодированных данных ИКМ через трубу зашла в тупик. Что я могу сделать, чтобы исправить это? Размер выходных данных, вероятно, будет слишком большим для subprocess.Popen.communicate
, чтобы быть опцией, и явно вызывающий mp3.stdout.close()
не имел никакого эффекта.