You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用sox生成音频频谱图时报Errno2找不到文件错误

Python调用SoX生成频谱图触发[Errno2]文件不存在问题排查

排查方向(按优先级从高到低)

  • 先查代码拼写错误
    你拼接sox命令时,把入参pixel_per_sec错写成pixel_per_sex,变量名拼写错误直接导致命令参数非法,SoX启动后直接报错退出,根本不会生成目标png文件。
    另外你贴的代码有多处Python语法错误:If/Print/Os/Return都是错误的大写写法,Python要求关键字、标准库os模块调用必须用小写,对应正确写法是if/print/os.remove/return,如果实际运行代码没改这些,逻辑根本走不到生成文件的步骤。
  • 修复错误吞掉的问题,拿到SoX真实报错
    你调用Popen时设置了stderr=STDOUT,把标准错误流合并到了标准输出流,p.communicate()返回的第二个元素(你赋值给errors的变量)永远是None,写的错误判断逻辑完全失效,SoX所有报错都被吞了,自然看不到执行失败的原因。
    另外不要默认SoX一定会执行成功,必须先判断进程返回码:返回码为0才代表执行成功,非0就是执行出错,此时不会生成输出文件,没必要继续执行打开文件的逻辑。
  • 替换不安全的命令调用方式
    用字符串拼接+shell=True的方式传命令,只要音频路径带空格、中文、特殊字符,就会被shell拆成多个参数,直接导致SoX解析参数失败。推荐用参数列表的方式传参,关闭shell=True,从根源避免路径转义问题。
  • 明确临时文件存储路径
    你现在生成的tmp_xxx.png默认存在Python进程的当前工作目录,如果程序运行时工作目录和预期不一致、或者当前目录没有写入权限,SoX根本写不出文件。最好生成带绝对路径的临时文件名,避免路径权限、工作目录漂移的问题。

修正后的参考代码

import os
import random
import numpy as np
from subprocess import Popen, PIPE
from PIL import Image
import tempfile

def AudioToSpectrogram(self, files, pixel_per_sec, height, width):
    # 生成系统临时目录下的绝对路径临时文件,规避路径权限、工作目录问题
    tmp_dir = tempfile.gettempdir()
    file_name = os.path.join(tmp_dir, f"tmp_{random.randint(0, 100000)}.png")
    
    # 用参数列表传参,关闭shell,避免路径特殊字符导致的解析错误
    command = [
        "sox", "-V0", files, "-n",
        "remix", "1", "rate", "10k",
        "spectrogram",
        "-y", str(height),
        "-x", str(width),
        "-X", str(pixel_per_sec), # 修复之前的拼写错误
        "-m", "-r", "-o", file_name
    ]
    p = Popen(command, stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
    output, errors = p.communicate()
    
    # 先校验命令执行结果,失败直接抛出真实报错
    if p.returncode != 0:
        print(f"SoX执行报错:{errors.decode('utf-8')}")
        raise RuntimeError("音频转频谱图失败")
    
    # 确认执行成功再操作文件
    image = Image.open(file_name)
    os.remove(file_name)
    return np.array(image)

快速排查技巧:如果改完还是报错,可以先把构造好的sox命令复制到终端手动执行,终端返回的报错信息可以直接定位是sox参数问题、音频文件损坏还是权限问题。

内容的提问来源于stack exchange,提问作者Nur Sumusod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 05:03:39