下面这条命令是Linux系统下使用arecord工具录制音频的指令,用于指定音频设备录制一段WAV格式的音频,并将过程中的输出/错误信息全部丢弃
/usr/bin/arecord -D hw:0,0 -d 10 -f cd -r 16000 -c 2 -t wav /tmp/mic_test/test.wav 1>/dev/null 2>&1
核心命令:
/usr/bin/arecord:调用录音程序,属于ALSA音频套件,这个是arecord工具的绝对路径,直接调用绝对路径可避免环境变量冲突,确保执行的是系统自带的arecord
| 参数 | 全称/含义 | 说明 |
| -D hw:0,0 | -D = --device(指定录音设备) | hw:0,0 是ALSA音频设备的标识: - hw:表示硬件设备(区别于虚拟设备); - 0,0:第一个0是声卡编号(系统第一块声卡),第二个0是该声卡下的设备编号(第一路录音设备) 作用:指定从系统第一块声卡的第一路硬件设备采集音频 |
| -d 10 | -d = --duration(录制时长) | 10表示录制时长为10秒,到达时长后自动停止录制; 若省略该参数,会一直录制直到手动按ctrl + c终止 |
| -f cd | -f = --format(音频格式) | cd是预设的CD级音频格式,等价于16位深度、44100Hz采样率、立体声; 注意:此处和后面的-r 16000冲突(-r 会覆盖采样率),最终采样率以-r 16000为准。可改用显式格式参数:-f S16_LE(16位小端格式) |
| -r 16000 | -r = --rate(采样率) | 16000表示采样率为16000Hz(16kHz),即每秒采集16000个音频样本; 常见取值:8000Hz(电话音质)、16000Hz(语音识别常用)、44100Hz(CD音质)、48000Hz(专业音频) |
| -c 2 | -c = --channels(声道数) | 2表示录制立体声(双声道) 若设为1则是单声道(mono),适合语音录制,节省存储空间。 |
| -t wav | -t = --file-type(输出文件格式) | wav指定输出文件为WAV格式(无损音频格式); arecord支持的其他格式:raw、voc、au等,WAV是最通用的格式。 |
| /tmp/mic_test/test.wav | 输出文件格式 | 录制的音频将保存到/tmp/mic_test/目录下,文件名为test.wav; 注意:若/tmp/mic_test/目录不存在,命令会执行失败(需提前用mkdir -p /tmp/mic_test创建) |
| 1>/dev/null | 标准输出重定向 | 1代表"标准输出(stdout)",>/dev/null表示将录制过程中的正常输出信息(如进度、采样信息)全部丢弃 /dev/null是Linux的"空设备",写入的数据会被直接丢弃。 |
| 2>&1 | 标准错误重定向 | 2代表"标准错误(stderr)",>&1表示将标准错误信息重定向到"标准输出" 的目标(即/dev/null) 最终效果:录制过程中无论正常输出还是报错信息,都不会显示在终端,也不会留存。 |
|---|
命令的整体逻辑
-
调用系统arecord工具,从第一块声卡的第一路硬件设备采集音频
-
以16kHz采样率、16位深度、立体声格式,录制10秒音频
-
将音频保存为/tmp/mic_test/test.wav(WAV格式)
-
全程不输出任何信息到终端(成功/失败都无提示)