
Linux에서 마이크 입력을 어떻게 모니터링합니까?
참고: 모니터링은 녹음된 내용을 녹음하고 재생하는 것과 다릅니다.
Windows에서는 다음과 같은 방법으로 내 마이크의 소리를 들을 수 있습니다.
내 마이크를 캡처하여 재생을 위해 사운드 카드로 보내는 일부 프로그램을 사용합니다. 예를 들어,
ffplay
명령을 사용하면ffplay -f dshow -i audio="Front panel mic (Realtek High Definition Audio)"
최대 몇 초까지 상당한 지연이 발생합니다.
입력 장치 속성의 "듣기" 옵션 사용
최대 1초까지 더 작은 지연이 생성됩니다.
사운드 카드 위젯 포함
ZERO 지연이 발생합니다. 내 생각엔 이렇게 하면 사운드 카드를 떠나지 않고도 입력 사운드가 출력으로 갈 수 있을 것 같지만 확실하지 않습니다.
Linux 명령줄에 옵션 #2가 필요합니다.
답변1
PulseAudio를 사용하여 마이크를 모니터링할 수 있어야 합니다.루프백 모듈. 모듈은 사용 가능한 입력 장치에 대한 루프백 출력을 자동으로 생성해야 합니다. 모듈을 수동으로 로드하려면
pactl load-module module-loopback
변경 사항을 지속적으로 적용하려면 다음을 추가하세요 /etc/pulse/default.pa
.
load-module module-loopback
답변2
pavucontrol
아날로그 입력과 아날로그 출력이 있는 경우 (PulseAudio Volume Control)을 사용하여 입력 오디오를 믹서의 출력으로 라우팅하는 것이 좋습니다 . 그러나 예를 들어 USB 마이크가 있는 경우 오디오를 단순히 믹싱할 수는 없지만 일부 소프트웨어는 오디오를 녹음한 다음 출력 스트림으로 재생해야 합니다. 그리고 하드웨어에 따라 이 녹음 + 재생으로 인해 약간의(또는 심지어 높은) 대기 시간이 발생할 수 있습니다.
다음을 시도해 볼 수 있습니다.
먼저 사용하려는 입력 및 출력의 이름을 가져옵니다.
$ pactl list short | egrep "alsa_(input|output)" | fgrep -v ".monitor"
나에게 결과는 다음과 같습니다.
0 alsa_output.pci-0000_00_1b.0.analog-stereo module-alsa-card.c s16le 2ch 44100Hz RUNNING
0 alsa_input.usb-Microsoft_Microsoft___LifeCam_HD-5000-02.analog-mono module-alsa-card.c s16le 1ch 44100Hz SUSPENDED
이는 의 출력 장치가 호출 alsa_output.pci-0000_00_1b.0.analog-stereo
되고 USB 웹캠/마이크가 호출된다는 의미입니다 alsa_input.usb-Microsoft_Microsoft___LifeCam_HD-5000-02.analog-mono
.
이제 USB 마이크를 녹음하여 다음과 같이 오디오 출력으로 출력할 수 있습니다.
$ pacat -r --latency-msec=1 -d alsa_input.usb-Microsoft_Microsoft___LifeCam_HD-5000-02.analog-mono | pacat -p --latency-msec=2 -d alsa_output.pci-0000_00_1b.0.analog-stereo
즉, 하나의 pacat
프로세스가 마이크에서 읽고 오디오 스택에 지연 시간을 1ms 또는 0.001초로 설정하도록 요청합니다. 그리고 또 다른 pacat
프로세스는 내 출력 장치에 오디오를 쓰고 대기 시간을 2ms 또는 0.002초로 설정하려고 합니다. 출력 대기 시간을 1ms로 줄일 수도 있지만, 적어도 내 오래된 하드웨어에서는 오디오 클립이 너무 쉽게 발생합니다.
그러나 이러한 녹음 및 재생 출력 조합을 오랫동안 실행하면 시간이 지남에 따라 대기 시간이 천천히 증가하는 것 같습니다. 내 USB 마이크 클럭이 출력 오디오 클럭보다 약간 빠르기 때문에 버퍼가 천천히 증가하는 것 같습니다. 출력을 실시간으로 유지하기 위해 해당 pactl 프로세스가 오디오를 건너뛰도록 허용하는 좋은 방법을 모르겠습니다. 그러기 위해서는 맞춤형 앱을 작성해야 할 것 같습니다.
위 파이프라인의 경우 내 하드웨어에 가장 적합한 대기 시간은 PREEMPT가 활성화된 Linux 커널(예: Ubuntu 커널)을 pacat ... | pacat
사용하는 동안 마이크에 부딪히는 음파부터 출력 스피커에서 방출되는 음파까지 약 6ms인 것 같습니다 .linux-lowlatency