gpt4 book ai didi

python - 使用 Python 子进程将 PCM 数据从 FFMPEG 管道传输到另一个进程

转载 作者:行者123 更新时间:2023-12-04 23:08:41 25 4
gpt4 key购买 nike

我正在尝试转录播客。为此,我正在使用 FFMPEG 解码 mp3 流,并将生成的 PCM 输出通过管道传输到语音识别组件。我的代码看起来像这样。

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 文件的 url。

当我尝试运行它时,它会挂起。似乎通过管道提供解码的 PCM 数据已陷入僵局。我能做些什么来解决这个问题?输出数据的大小可能对于 subprocess.Popen.communicate 来说太大了。作为一个选项,并明确调用 mp3.stdout.close()没有效果。

最佳答案

您的 pipe号码不正确。正确的值是:

  • pipe:0 - 标准输入
  • pipe:1 - 标准输出
  • pipe:2 - 标准错误

  • 您可以使用:
  • pipe:1 , 或
  • 只是 pipe: , 因为输出的默认值是标准输出,或
  • 只需使用 -

  • FFmpeg Documentation: pipe protocol .

    关于python - 使用 Python 子进程将 PCM 数据从 FFMPEG 管道传输到另一个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42088304/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com