SOX检测静音启停录制:命令行正常但Python脚本无输出问题
解决SOX录制功能在Python脚本中失效的问题
命令行中rec命令能正常实现"声启停录"功能,但用sox库调用时无反应,核心原因是**rec是SOX专用录制入口,而sox.core.sox()调用的是通用sox命令,参数结构不匹配**。以下是两种解决方法:
方案1:直接调用系统rec命令(推荐,和命令行逻辑完全一致)
用subprocess直接执行已验证的命令,绕过sox库的参数适配问题:
import subprocess cmd = ['rec', 'recording.wav', 'rate', '32k', 'silence', '1', '0.1', '2%', '1', '3.0', '2%'] subprocess.run(cmd, check=True)
方案2:调整sox库的参数适配sox命令
如果坚持用sox库,需修正参数结构:
- 移除多余的
-t wav(输出文件后缀已指定格式,SOX会自动识别) - 调整参数顺序,确保输入设备(
-d)、输出文件在前,效果参数在后
修改后的代码:
import sox args = ['-d', 'recording.wav', 'rate', '32k', 'silence', '1', '0.1', '2%', '1', '3.0', '2%'] sox.core.sox(args)
额外检查项:
- 确认sox库已正确安装(
pip install sox) - 确保脚本有麦克风/音频设备访问权限(比如Linux下需加入
audio用户组,Windows下需授权麦克风权限)
内容的提问来源于stack exchange,提问作者Hankp
相关产品推荐
相关产品推荐

