마이크 입력을 모니터링하는 방법은 무엇입니까?

마이크 입력을 모니터링하는 방법은 무엇입니까?

Linux에서 마이크 입력을 모니터링하는 방법은 무엇입니까?

참고: 모니터링은 녹음을 녹음하고 재생하는 것과 다릅니다.


Windows에서는 다음을 통해 내 마이크를 들을 수 있습니다.

  1. 일부 프로그램에서는 마이크를 캡처하여 재생을 위해 사운드 카드로 보냅니다. 예를 들어 ffplay다음 명령을 사용하십시오.

    ffplay -f dshow -i audio="Front panel mic (Realtek High Definition Audio)"
    

    최대 몇 초까지 상당한 대기 시간이 발생합니다.

  2. 입력 장치 속성의 "듣기" 옵션을 사용하세요

    여기에 이미지 설명을 입력하세요.

    최대 1초까지 약간의 지연이 발생합니다.

  3. 사운드 카드 위젯 포함

    여기에 이미지 설명을 입력하세요.

    대기 시간이 전혀 발생하지 않습니다. 이렇게 하면 사운드 카드를 떠나지 않고도 입력 사운드가 출력될 수 있을 것이라고 생각하지만 확실하지는 않습니다.

Linux 명령줄에서 옵션 #2가 필요합니다.

답변1

PulseAudio를 사용하여 마이크를 모니터링할 수 있어야 합니다.루프백 모듈. 모듈은 사용 가능한 입력 장치에 대한 루프백 출력을 자동으로 생성해야 합니다. 수동으로 모듈 로드

pactl load-module module-loopback

변경 사항을 지속적으로 적용하려면 /etc/pulse/default.pa추가하세요 .

load-module module-loopback

답변2

pavucontrol아날로그 입력과 아날로그 출력이 있는 경우 (PulseAudio 볼륨 조절)을 사용하여 입력 오디오를 믹서의 출력으로 라우팅하는 것이 좋습니다 . 그러나 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프로세스가 마이크에서 데이터를 읽고 지연 시간을 1밀리초 또는 0.001초로 줄이도록 오디오 스택에 요청합니다. 또 다른 pacat프로세스는 내 출력 장치에 오디오를 쓰고 대기 시간을 2밀리초 또는 0.002초로 줄이려고 합니다. 출력 지연을 1ms로 줄일 수도 있지만, 적어도 내 오래된 하드웨어에서는 이 경우 오디오 클리핑이 너무 쉽습니다.

그러나 이러한 녹음 및 재생 출력 조합을 오랫동안 실행하면 시간이 지남에 따라 지연 시간이 천천히 증가하는 것 같습니다. 내 USB 마이크 클럭이 출력 오디오 클럭보다 약간 빠르기 때문에 버퍼가 천천히 증가하는 것 같습니다. 출력을 실시간으로 유지하기 위해 이러한 pactl 프로세스에서 오디오를 건너뛰게 만드는 좋은 방법을 모르겠습니다. 이를 위해서는 사용자 정의 애플리케이션을 작성해야 한다고 생각합니다.

위 파이프라인의 경우 PREEMPT 지원 Linux 커널(예: Ubuntu 커널)을 사용할 때 pacat ... | pacat내 하드웨어에 가장 적합한 대기 시간은 마이크에 닿는 음파부터 마이크에서 나오는 음파까지 약 6밀리초인 것 같습니다. 출력 스피커.linux-lowlatency

관련 정보