Linux新手求助:用GNU Parallel+arecord同时录制两路USB麦克风可行吗?
用GNU Parallel + arecord实现双USB声卡同时录制
当然可以!GNU Parallel配合arecord完全能实现你要的双麦克风同时录制需求,而且操作起来也不算复杂,结合你已经会单独录制的基础,很快就能上手。
第一步:确认声卡设备标识
先搞清楚两块USB声卡的系统设备名,避免录错设备:
- 运行命令
arecord -l,会列出系统里的音频捕获设备,比如你会看到类似这样的输出:
这里的**** List of CAPTURE Hardware Devices **** card 1: USB [USB Audio Device], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0 card 2: USB2 [USB Audio Device 2], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0hw:1,0和hw:2,0就是两块声卡的设备标识,记下来备用。
第二步:准备单独录制命令
基于你已经掌握的单独录制方法,整理出两个声卡的录制命令,比如:
- 第一块声卡录制命令:
arecord -D hw:1,0 -f cd -r 44100 mic1.wav - 第二块声卡录制命令:
arecord -D hw:2,0 -f cd -r 44100 mic2.wav
其中-f cd代表CD级音频格式(16位、44.1kHz立体声),-r 44100指定采样率,你可以根据需求调整参数。
第三步:用GNU Parallel并行执行
有两种简单的方式来并行启动这两个录制进程:
方式一:直接命令行执行
把两个录制命令用:::分隔,传给Parallel:
parallel ::: 'arecord -D hw:1,0 -f cd -r 44100 mic1.wav' 'arecord -D hw:2,0 -f cd -r 44100 mic2.wav'
执行后两个录制进程会同时启动,按下Ctrl+C会同时终止所有录制。
方式二:通过命令文件执行
如果录制参数复杂或者需要重复使用,可以把命令写到一个文本文件里,比如record_mics.txt,内容如下:
arecord -D hw:1,0 -f cd -r 44100 mic1.wav arecord -D hw:2,0 -f cd -r 44100 mic2.wav
然后用Parallel读取文件执行:
parallel < record_mics.txt
实用注意事项
- 延迟与对齐:并行启动的进程时间差极小,完全在你能接受的延迟范围内;建议保持两个命令的采样率、格式一致,后期用Audacity等工具对齐音频会更方便。
- 权限问题:如果运行时提示设备无法打开,把当前用户加入
audio组:sudo usermod -aG audio $USER,重新登录后生效。 - 兼容性优化:如果
hw:X,X格式报错,换成plughw:X,X,它会自动处理格式转换,兼容性更好,比如arecord -D plughw:1,0 -f cd -r 44100 mic1.wav。
内容的提问来源于stack exchange,提问作者Arun Baby
相关产品推荐
相关产品推荐

