터미널에서 arecord 명령을 사용하면 혼합된 결과가 나타납니다. 제가 사용한 하드웨어에는 Raspberry Pi용 Cirrus 오디오 카드가 포함되어 있었습니다. 온보드 MIC의 24비트 192kHz 사운드를 WAV 파일로 녹음한 다음 헤드폰을 통해 재생하려고 합니다. 먼저 마이크와 헤드폰이 활성화되어 있는지 확인했습니다.
$ ./Record_from_DMIC.sh
$ ./Playback_to_Headset.sh
그런 다음 여러 명령을 시도했지만 다른 결과를 얻었습니다.
$ arecord -f S24_LE -r 192 -d 20 test.wav
Recording WAVE 'test.wav' : Signed 24 bit Little Endian, Rate 192000 Hz, Mono
$ arecord: set_params:1087: Channels count non available
# So I set the number of channels to 1 (even though it is that, by default)
$ arecord -c 1 -f S24_LE -r 192 -d 20 test.wav
Recording WAVE 'test.wav' : Signed 24 bit Little Endian, Rate 192000 Hz, Mono
arecord: set_params:1087: Channels count non available
여전히 같은 오류가 발생합니다. 속도(192kHz)를 제거하고 기본값으로 두었습니다.
$ arecord -d 10 -c 1 -f S24_LE -t wav test.wav
Recording WAVE 'test.wav' : Signed 24 bit Little Endian, Rate 8000 Hz, Mono
$ arecord: set_params:1087: Channels count non available
여전히 같은 오류가 발생합니다. 그래서 저는 온라인에서 찾은 명령의 실행 예를 사용했습니다(http://linux.die.net/man/1/arecord):
$ arecord -d 10 -f cd -t wav test.wav
Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
이것은 효과가 있었습니다. 하지만 분명히 내가 원하는 것과는 다른 값을 사용하고 있습니다. 또한 192kHz에서 재생하는 데 문제가 있었습니다.
$ aplay -c 1 -r 192000 test.wav
Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
192kHz로 재생해봤는데 44.1kHz로 떨어졌네요. 왜 이렇게 이상한 오류와 결과가 나타나는지 아는 사람이 있나요?
답변1
문제가 어디에 있는지 알아냈습니다. 이 명령은 2채널(스테레오) 192kHz 오디오 입력을 지정하지 않았기 때문에 기본값을 사용합니다. 다음은 유효한 명령의 예입니다.
$ arecord -f S24_LE -c 2 -r 192000 -d 20 test.wav
그것이 -c 2
내 명령을 고친 것입니다.