我最近尝试使用运行在 Ubuntu 22.04 上的 Dell Precision 3571 的板载麦克风录制声音,使用 sox 命令和一组精确的选项(默认声卡,2 通道,192 kHz 帧速率,32 位有符号整数小端,wav 文件,持续 2 秒)
$ sox -d -c 2 -r 192k -b 32 -e signed-integer -L -t wav test.wav trim 0 2
虽然测试.wav创建后,出现以下错误,并且我所寻找的选项未被使用:
sox WARN alsa: can't encode 0-bit Unknown or not applicable
Input File : 'default' (alsa)
Channels : 2
Sample Rate : 48000
Precision : 16-bit
Sample Encoding: 16-bit Signed Integer PCM
In:0.00% 00:00:02.05 [00:00:00.00] Out:384k [ | ] Clip:0
Done.
然后我查看了各种论坛(例如https://support.system76.com/articles/audio/) 和维基百科有关sox WARN alsa...
错误,这导致我重新安装 ALSA,检查输出命令$ sudo alsa-info
,并确保默认声卡已为 ALSA 配置为/etc/asound.conf
:
pcm.!default {
type hw
card 0
}
ctl.!default {
type hw
card 0
}
给出$ arecord -l
:
**** List of CAPTURE Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC3204 Analog [ALC3204 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
不过,我的问题依然存在,我无法像预期的那样录制声音。需要说明的是,即使在写入配置文件后,该功能$ sudo rec test.wav
仍会恢复,尽管我可以在视频会议应用中完美地使用板载麦克风。rec FAIL sox: Sorry, there is no default audio device configured
关于如何解决这个问题有什么建议吗?
答案1
经过进一步调查后,以下方法解决了我的问题:
- 安装 libsox-fmt-all:
$ sudo apt-get install libsox-fmt-all
- 重新排序 sox 命令调用中的选项:
$ sox -c 2 -r 192k -b 32 -e signed-integer -L -d -t wav test.wav trim 0 2
现在我不再有错误
sox 警告 alsa: 无法编码 0 位未知或不适用
并且这些选项都按照我的意愿被考虑进去了。
/etc/asound.conf
我相信按照我的问题所述创建配置文件对于设置选项 -d 所需的默认录音设备也是必要的。