gpt4 book ai didi

python - 为什么 `subprocess.call` 没有调用命令

转载 作者:行者123 更新时间:2023-12-04 23:16:57 27 4
gpt4 key购买 nike

我正在尝试使用 subprocess.call(shell=True) 通过 ffmpeg 运行 .wav 文件在下面的代码中,它似乎没有运行。我知道这是因为 output_file未创建,我在 open() 中遇到异常方法。
我究竟做错了什么?

try:
import pocketsphinx

except:
import pocketsphinx as ps
import sphinxbase
import subprocess
import os

hmmd = "../../Pocketsphinx_Files/en-us-8khz"
lmdir = "../../Pocketsphinx_Files/cmusphinx-5.0-en-us.lm"
dictp = "../../Pocketsphinx_Files/cmu07a.dic"

output_filename = "../../temp/ps_output.wav"

def recognize(filename="../../temp/temp_output.wav"):

command = "ffmpeg -i "+filename+" -ac 1 -ab 16 -ar 16000 "+output_filename

subprocess.call(command,shell=True)

wavFile = open(output_filename,"rb")

speechRec = ps.Decoder(hmm = hmmd, lm = lmdir, dict = dictp)

wavFile.seek(44)

speechRec.decode_raw(wavFile)

result = speechRec.get_hyp()

#os.remove(filename)
#os.remove(output_filename)

return result

if __name__=="__main__":
print(recognize())

编辑:我已经安装了 ffmpeg。
此外,当我从 python 解释器运行 subprocess.call() 命令时,它似乎可以工作。这就是我难过的原因。

最佳答案

我建议您尝试使用 subprocess.check_call()check_output而不是简单的call .如果您的程序无法正确执行,它们将引发异常,而不是让您想知道为什么没有生成输出。

我猜你可能会在 Python 环境中遇到可执行文件的路径问题

尝试将此功能与“ffmpeg”一起使用:

def is_exe(prog):
for path in os.environ["PATH"].split(os.pathsep):
if os.path.isfile(os.path.join(path, prog)):
if os.access(os.path.join(path, prog), os.X_OK):
return os.path.join(path, prog)
else:
print "Program '%s' found in '%s', but lacks executable permissions." % (prog, path)
return False

如果返回 False ,您在运行 ffmpeg 的 Python 时遇到问题,否则是 ffmpeg 在理解您的论点时遇到问题。

关于python - 为什么 `subprocess.call` 没有调用命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24086940/

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