Alsa

更改“arecord”的預設錄音採樣率

  • June 24, 2021

我正在嘗試在使用arecord.

目前,執行arecord test.wav速率為 8000 Hz:

arecord test.wav
Recording WAVE 'test.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono

我可以使用速率標誌更改採樣率--rate 44100

arecord --format S16_LE --rate 44100 test.wav
Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono

但是當我改變速率時asound.conf,它對錄製沒有影響(速率保持在 8000 Hz)。我錯過了什麼嗎?

我的asound.conf

# The IPC key of dmix or dsnoop plugin must be unique
# If 555555 or 666666 is used by other processes, use another one

# use samplerate to resample as speexdsp resample is bad
defaults.pcm.rate_converter "samplerate"

pcm.!default {
   type asym
   playback.pcm "playback"
   capture.pcm "capture"
}

pcm.playback {
   type plug
   slave.pcm "dmixed"
}

pcm.capture {
   type plug
   slave.pcm "array"
}

pcm.dmixed {
   type dmix
   slave.pcm "hw:wm8960soundcard"
   ipc_key 555555
}

pcm.array {
   type dsnoop
   slave {
       pcm "hw:1,0"
       format S16_LE
       rate 44100
       channels 1
   }
   ipc_key 666666
}

的輸出arecord -L

null
   Discard all samples (playback) or generate zero samples (capture)
jack
   JACK Audio Connection Kit
pulse
   PulseAudio Sound Server
default
eci
eco
usbstream:CARD=Headphones
   bcm2835 Headphones
   USB Stream Output
sysdefault:CARD=wm8960soundcard
   wm8960-soundcard, bcm2835-i2s-wm8960-hifi wm8960-hifi-0
   Default Audio Device
dmix:CARD=wm8960soundcard,DEV=0
   wm8960-soundcard, bcm2835-i2s-wm8960-hifi wm8960-hifi-0
   Direct sample mixing device
dsnoop:CARD=wm8960soundcard,DEV=0
   wm8960-soundcard, bcm2835-i2s-wm8960-hifi wm8960-hifi-0
   Direct sample snooping device
hw:CARD=wm8960soundcard,DEV=0
   wm8960-soundcard, bcm2835-i2s-wm8960-hifi wm8960-hifi-0
   Direct hardware device without any conversions
plughw:CARD=wm8960soundcard,DEV=0
   wm8960-soundcard, bcm2835-i2s-wm8960-hifi wm8960-hifi-0
   Hardware device with all software conversions
usbstream:CARD=wm8960soundcard
   wm8960-soundcard
   USB Stream Output

添加

使用 PJUSA(PJSIP) 時如何更改預設arecord採樣率:

PJUSA 在啟動時初始化 ALSA:

11:56:12.951     alsa_dev.c  ..ALSA driver found 32 devices
11:56:12.951     alsa_dev.c  ..ALSA initialized

alsa_dev.c位於pjproject/pjmedia/src/pjmedia-audiodev/alsa_dev.c

預設採樣率在第 270 行設置:

/* Set the default sample rate */
adi->default_samples_per_sec = 8000;

只需將值更改為所需的採樣率(麥克風必須能夠達到該採樣率)。

閱讀它所寫的arecord(參見)文件,man arecord

-r,--rate=#<Hz>以赫茲為單位的採樣率。預設速率為 8000 赫茲。

$$ … $$

所以你可以看到速率不是通過控制的asound.conf;它是使用這個命令行標誌控制的。

引用自:https://unix.stackexchange.com/questions/655483