SoX 유틸리티의 rec 명령어를 써서 USB 마이크 입력 녹음을 해 보고 싶었는데 사용법이 너무 복잡하여 도대체 어떻게 해야 하는지를 이해하기 어렵다. 검색을 통해서 alsa-utils에 포함된 프로그램으로서 사용하기 무난한 arecord를 쓰기로 하였다. 컴퓨터에 연결된 입력 디바이스의 샘플 레이트를 먼저 확인해 본다.
$ pactl list short sinks
0 alsa_output.pci-0000_00_1b.0.hdmi-stereo module-alsa-card.c s16le 2ch 44100Hz SUSPENDED
1 alsa_output.usb-Burr-Brown_from_TI_USB_audio_CODEC-00.analog-stereo module-alsa-card.c s16le 2ch 44100Hz SUSPENDED
44.1 kHz라고? 48kHz로 알고 있는데 무슨 영문인지 모르겠다. 's16le'는 signed 16-bit little endian을 의미하는 sample format이다. arecord에서는 -f로 이를 지정한다. 특별히 지정하지 않으면 unsigned 8-bit('-f U8'과 같다)로 녹음이 되는데 음질은 형편없다.
다른 옵션에 대하여 심각하게 생각하지 않고 5초간 마이크로 녹음을 시도한다. 입력 디바이스를 명령행 옵션으로 지정하지 않았음에도 불구하고 원하는대로 마이크가 작동될 것인가?
$ arecord -f S16_LE -r 60000 -d 5 test.mp3 녹음 WAVE 'test.mp3' : Signed 16 bit Little Endian, 60000 Hz 비율, 모노 $ play test.mp3 play WARN alsa: can't encode 0-bit Unknown or not applicable test.mp3: File Size: 600k Bit Rate: 960k Encoding: Signed PCM Channels: 1 @ 16-bit Samplerate: 60000Hz Replaygain: off Duration: 00:00:05.00 In:100% 00:00:05.00 [00:00:00.00] Out:300k [ | ] Clip:0 Done.
60 kHz(-r 또는 --rate=#, 단위는 Hz)로 녹음이 잘 되었다. 가능한 값이 아닌데 어떻게 녹음이 된 것일까? 미스테리는 차차 풀기로 한다. 녹음할 시간을 미리 지정하기 싫다면 -d 0 옵션을 주어 녹음을 개시한 뒤 Ctrl+C를 눌러서 종료하면 된다. 기본값이 0이니 아예 -d 옵션을 주지 않아도 된다. 저장할 파일의 확장자에 따라서 출력 파일의 형식은 자동으로 결정된다.
입력을 받을 오디오 기기에 대한 정보를 전혀 주지 않았음에도 불구하고 알아서 USB 마이크로 입력이 잘 되었다. 아마도 PulseAudio가 개입하여 우선 순위 입출력 기기를 알아서 결정하고 있는 듯하다. USB 마이크로폰이 꽂혀 있지만 노트북 컴퓨터의 내장 마이크로폰을 사용하여 녹음하게 만들 수는 없을까? -D hw:#,#(select PCM by name) 옵션으로 디바이스를 선택할 수 있다고 하는데, (0.0)으로는 잘 되지 않는다.
$ arecord -f S16_LE -r 44100 -d 5 -D hw:0,0 test.mp3 녹음 WAVE 'test.mp3' : Signed 16 bit Little Endian, 44100 Hz 비율, 모노 arecord: set_params:1305: 사용할 수 없는 채널 수입니다 hyjeong@CQ61:~$ arecord -f S16_LE -r 44100 -d 5 -D hw:1,0 test.mp3 녹음 WAVE 'test.mp3' : Signed 16 bit Little Endian, 44100 Hz 비율, 모노 $ arecord -f S16_LE -r 60000 -d 5 -D hw:1,0 test.mp3 녹음 WAVE 'test.mp3' : Signed 16 bit Little Endian, 60000 Hz 비율, 모노 경고: 비율이 정확하지 않습니다(요청함 = 60000Hz, 가져옴 = 48000Hz) 플러그인 를, 연결해보십시오
-D hw:1,0이 USB 마이크로폰을 가리키는 것은 맞다. 그런데 이를 지정하지 않으면 -r 60000이라는 비상식적인 샘플링 레이트로 녹음이 되지만, -D hw:1,0을 지정하면 정확하지 않다면서 자동으로 48 kHz를 선택한다.
-D default를 입력하면 여전히 USB 마이크로폰으로 녹음이 된다. 분명히 현 상태에서는 hw:1,0이 default인 것이 맞다. 컴퓨터 내장 마이크로는 녹음을 할 수가 없는가? 내가 뭘 잘못 알고 있는 것인지...
디바이스를 지정하지 않은 상태에서 녹음을 하면서 PulseAudio Volume Control을 열어 보았다.
내장 마이크에 해당하는 입력 디바이스는 보이지 않는다. 에혀~ 나도 모르겠다.
댓글 없음:
댓글 쓰기