마이크 캡처와 관련하여 계속 발생하는 문제를 해결하려고 합니다. 마이크 입력에서 펑하는 소리가 눈에 띄게 들립니다. 어떤 프로그램을 사용하든 마이크를 사용할 때마다 나타납니다. 나는 거의 1년 동안 이 문제를 겪었고, 여러 번 고치려고 노력했습니다. 이는 하드웨어 문제가 아니며 마이크는 Windows 파티션에서 작동합니다(마이크를 사용하는 것은 Windows를 부팅해야 하는 몇 가지 이유 중 하나입니다).
마침내 답변을 찾을 수 있는지 확인하기 위해 게시물을 게시하기로 결정했습니다.
다양한 조사를 했고 주요 출처는Arch 위키의 다음 단계마이크 녹음의 정적 소음을 수정할 수 있습니다.
1단계: 시스템 사운드 카드 찾기
$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: Generic [HD-Audio Generic], device 0: ALC1220 Analog [ALC1220 Analog]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 2: ALC1220 Alt Analog [ALC1220 Alt Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
2-4단계: 샘플링 속도 찾기 및 설정
$ arecord -f dat -r 60000 -D hw:1,0 -d 5 test.wav
Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 60000 Hz, Stereo
Warning: rate is not accurate (requested = 60000Hz, got = 48000Hz)
please, try the plug plugin
다음에 샘플 속도를 추가합니다 /etc/pulse/daemon.conf
.
default-sample-rate = 48000
그런 다음 펄스 오디오를 다시 시작했습니다.pulseaudio -k && pulseaudio --start
5단계: 테스트 출력
(속도를 지정하지 않고) 실행했지만 arecord -f cd -d 10 test-mic.wav
결과는 동일합니다. 저는 샘플 속도를 사용 하여 이러한 단계를 시도했습니다 44100
. 38000
불행하게도 마이크 터지는 소리는 항상 존재합니다.
또 다른 가능한 이유
$ pacmd list-sources | grep 'name:.*input'
name: <alsa_input.pci-0000_0b_00.3.analog-stereo>
그래서 나는 그것을 다음에 추가했습니다 /etc/pulse/default.pa
:
load-module module-remap-source source_name=record_mono master=alsa_input.pci-0000_0b_00.3.analog-stereo master_channel_map=front-left channel_map=mono
set-default-source record_mono
하지만 별 차이는 없습니다. 더 나쁘다고 말하고 싶으면 지금 해당 행을 주석 처리했습니다.
다른 대사 /etc/pulse/daemon.conf
(과거 시도에서 나온 것 같아요)
flat-volumes = no
default-fragments = 3
default-fragment-size-msec = 5
avoid-resampling = yes
deferred-volume-safety-margin-usec = 1
정보를 얻기 위해 실행하는 다른 명령
산출systemctl --user status pulseaudio.service
관련이 없는 것 같은데 왜 활성화되지 않는지 모르겠습니다. 실행하면 pulseaudio -k && pulseaudio --start
모든 소리가 끊기고 펄스오디오가 시작될 때까지 기다려야 합니다..
● pulseaudio.service - Sound Service
Loaded: loaded (/usr/lib/systemd/user/pulseaudio.service; disabled; vendor preset: enabled)
Active: inactive (dead)
산출/sbin/lsmod | grep snd
snd_hda_codec_hdmi 49152 1
snd_hda_codec_realtek 102400 1
snd_hda_codec_generic 73728 1 snd_hda_codec_realtek
snd_hda_intel 40960 8
snd_hda_codec 126976 4 snd_hda_intel,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_codec_realtek
snd_hda_core 81920 5 snd_hda_intel,snd_hda_codec,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_codec_realtek
snd_hwdep 20480 1 snd_hda_codec
snd_pcm 98304 5 snd_hda_intel,snd_hda_codec,snd_hda_core,snd_hda_codec_hdmi
snd_seq_midi 16384 0
snd_seq_midi_event 16384 1 snd_seq_midi
snd_rawmidi 32768 1 snd_seq_midi
snd_seq 65536 2 snd_seq_midi_event,snd_seq_midi
snd_seq_device 16384 3 snd_seq,snd_rawmidi,snd_seq_midi
snd_timer 32768 3 snd_seq,snd_pcm
snd 81920 25 snd_hda_intel,snd_hwdep,snd_seq,snd_hda_codec,snd_timer,snd_rawmidi,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_seq_device,snd_hda_codec_realtek,snd_pcm
soundcore 16384 1 snd
귀하가 제공할 수 있는 도움에 진심으로 감사드립니다. 감사해요.
Linux Mint 19.1
Kernel 4.15.0-20-generic
Motherboard: ASUS X470-PRO
Microphone: Modmic
업데이트: 새 배포판으로 옮겼는데 답변이 작동하는지 더 이상 확인할 수 없습니다. 의견을 주신 모든 분들께 감사드립니다!
답변1
비슷한 문제를 해결하기 위해 이 Stackexchange 질문을 발견했습니다. 우리의 문제가 동일한 원인으로 인해 발생했다고 100% 확신할 수는 없지만 몇 가지 유사점을 발견했으며 이것이 도움이 되기를 바랍니다.
구체적으로는 마이크를 캡처하려고 하시는 모습을 보았고, 게시물에서도 저처럼 "arecord -f cd"와 "arecord -f dat"를 사용하고 있는 것을 보았습니다.
실제 오디오 커넥터 플러그(3.5mm 유형인 것 같습니다)를 보면 내 마이크가 모노 장치인지 확인할 수 있습니다. 내 플러그에는 고무 링으로 분리된 두 개의 도체가 있습니다. 하나는 차폐용이고 다른 하나는 신호용입니다. Google에서 "3.5mm 모노 플러그"를 검색했을 때 얻은 것과 비슷하지만 "3.5mm 스테레오 플러그"를 검색했을 때 얻은 것과는 다릅니다. .
그러나 arecord에 대한 매뉴얼 페이지를 읽어보면 "cd" 및 "dat" 형식이 모두 스테레오입니다.
-f cd (16 bit little endian, 44100, stereo) [-f S16_LE -c2 -r44100]
-f cdr (16 bit big endian, 44100, stereo) [-f S16_BE -c2 -f44100]
-f dat (16 bit little endian, 48000, stereo) [-f S16_LE -c2 -r4800
그래서 저는 스테레오를 녹음할 때 평균적으로 높은 볼륨의 "노크" 또는 "클릭" 소음이 들리고, 모노(실제로 입력 내용)를 녹음할 때는 Won't라는 소리가 들립니다. 내 테스트 중 하나의 점수 보고서:
michael@sequoia:~$ arecord -f S16_LE -c2 -r44100 /tmp/r1.wav
Recording WAVE '/tmp/r1.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
^CAborted by signal Interrupt...
michael@sequoia:~$ aplay /tmp/r1.wav
Playing WAVE '/tmp/r1.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
michael@sequoia:~$ #heard tapping
michael@sequoia:~$ arecord -f S16_LE -c1 -r44100 /tmp/r1.wav
Recording WAVE '/tmp/r1.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
^CAborted by signal Interrupt...
michael@sequoia:~$ aplay /tmp/r1.wav
Playing WAVE '/tmp/r1.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
michael@sequoia:~$ #No tapping noise
또한 arecord 매뉴얼 페이지에서 채널 1이 기본 채널이므로 "-c1"이 필요하지 않다는 것을 발견했습니다.
-c, --channels=#
The number of channels. The default is one channel. Valid val‐
ues are 1 through 32.
이게 도움이 되길 바란다.