首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传声器裂纹

传声器裂纹
EN

Unix & Linux用户
提问于 2020-04-21 18:36:58
回答 1查看 2K关注 0票数 2

我想解决一个正在进行的麦克风捕获问题。我的麦克风输入有一个明显的裂痕。无论哪个程序,无论何时使用麦克风,它都是存在的。我已经用了将近一年的时间来解决这个问题,我已经尝试过好几次了。这不是一个硬件问题,麦克风在我的Windows分区上工作(使用我的麦克风是我需要引导到Windows的少数原因之一)。

最后决定发个帖子,看看我能不能找到答案。

我做过各种各样的研究,我的主要资源是在Arch wiki上的这些步骤,它修复麦克风录音中的静态噪音。

步骤1:查找系统声卡

代码语言:javascript
复制
$ 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:查找和设置采样率

代码语言:javascript
复制
$ 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中:

代码语言:javascript
复制
default-sample-rate = 48000

然后我用pulseaudio -k && pulseaudio --start重新启动了音频脉冲

步骤5:测试输出

我运行了arecord -f cd -d 10 test-mic.wav (没有指定速率),但是结果是一样的。我尝试了这些步骤,用样本利率4410038000来尝试。不幸的是,麦克风的爆裂声一直存在。

另一个可能的原因

代码语言:javascript
复制
$ pacmd list-sources | grep 'name:.*input'

    name: 

因此,我将这个添加到/etc/pulse/default.pa中:

代码语言:javascript
复制
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中的其他行(我认为有些是来自过去的尝试)

代码语言:javascript
复制
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所有声音切断,我必须等待脉冲音频启动。

代码语言:javascript
复制
● pulseaudio.service - Sound Service
   Loaded: loaded (/usr/lib/systemd/user/pulseaudio.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

输出/sbin/lsmod | grep snd

代码语言:javascript
复制
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

更新:我已经转移到一个新的发行版,我不能再确认答案是否有效。感谢所有提供投入的人!

EN

回答 1

Unix & Linux用户

发布于 2020-11-28 17:36:29

我发现这个Stackexchange问题试图解决类似的问题。虽然我不能百分之百地确定我们的问题来自同一个原因,但我注意到一些相似之处,并希望这会有所帮助。

具体来说,我看到你试图捕捉一个麦克风,我在你的帖子中看到,就像我做的那样,你正在使用"arecord -f cd“和”a arecord -f dat“。

我可以通过查看物理音频连接器插头(我认为这是3.5mm类型)来验证我的麦克风是一个单一设备。我的插头有两个导体,由一个橡胶环隔开,一个用于屏蔽,一个用于信号,看起来就像我在谷歌搜索"3.5mm单片插头“时得到的,而不是当我搜索"3.5mm立体声插头”时得到的。

然而,当我阅读手册页记录时,"cd“和"dat”格式都是立体声的:

代码语言:javascript
复制
          -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

因此,对我来说,当我录制立体声时,我的平均音量为“敲击”或“点击”,而当我录制单声道(这是我真正的输入)时,我没有。我的一个测试的记录:

代码语言:javascript
复制
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

此外,我发现在记录手册页1通道是默认的,所以"-c1“是不必要的。

代码语言:javascript
复制
   -c, --channels=#
          The number of channels.  The default is one channel.  Valid val‐
          ues are 1 through 32.

我希望这能帮到你。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/581627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档