python - 如何在 Python 中执行复杂的 SoX 命令行字符串

标签 python subprocess sox

我正在尝试使用 Python 中的 subprocess 模块在命令行上调用 SoX 来处理音频文件。

Python 提示它找不到文件,但是如果直接从命令行调用,相同的命令可以完美地工作。

因此,Python 不喜欢我构建命令的方式 - 我认为它不喜欢双引号,但我不知道如何用 Python 接受的语法来表示它。这是 Python 不喜欢的命令:

s = ['sox', '-m', 'path/to/silence.wav',
     '"|sox path/to/audio1.wav -p pad 0"',
     '"|sox path/to/audio2.wav -p pad 5"',
     '"|sox path/to/audio3.wav -p pad 10"',
     'path/to/output.wav']
subprocess.call(s)

下面是从命令行调用的相同命令:

sox -m path/to/silence.wav "|sox path/to/audio1.wav -p pad 0" "|sox path/to/audio2.wav -p pad 5" "|sox path/to/audio3.wav -p pad 10" path/to/output.wav

如果任何 Python 专家可以给出如何在 .py 中执行此操作的示例,我们将不胜感激。提前致谢!

最佳答案

找到解决方案,我只需要删除双引号...愚蠢的我。以下是上述示例的正确 Python 代码:

s = ['sox', '-m', 'path/to/silence.wav',
     '|sox path/to/audio1.wav -p pad 0',
     '|sox path/to/audio2.wav -p pad 5',
     '|sox path/to/audio3.wav -p pad 10',
     'path/to/output.wav']
subprocess.call(s)

关于python - 如何在 Python 中执行复杂的 SoX 命令行字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25336056/

相关文章:

python - TypeError:buf不是数字元组

python - EOFError 在使用 PYTTSX 时随机出现,我的代码现在不断抛出此错误?几个小时前它工作得很好

Python subprocess.check_call( ["wine"]..) 存在同步问题

python 如何知道子进程是否正在等待输入

audio - 从 sox 输出获取 .wav 的长度

python - PyPDF2 在打开不安全文件时是否采取任何安全措施?

python - 在 python 中转换 64 位 Windows 日期时间

python - 使用python执行shell邮件命令

python - 使用 python 在音频中查找语速和语调

audio - 从终端重新采样音频文件