云网牛站
所在位置:首页 > Linux教程 > 在Deepin Linux系统下遇到麦克风无输入设备的解决方案

在Deepin Linux系统下遇到麦克风无输入设备的解决方案

2021-07-25 09:39:39作者:q77190858稿源:深度站

本文介绍在Deepin Linux系统下遇到麦克风无输入设备的解决方案。

 

解决方案

1、首先看一下alsa层(驱动层)的麦克风是否工作正常,用以下命令:

arecord -l

列出所有capture设备:

juju@juju-PC:/usr/share/pulseaudio/alsa-mixer/profile-sets$ arecord -l

**** List of CAPTURE Hardware Devices ****

card 0: sofhdadsp [sof-hda-dsp], device 0: HDA Analog (*) []

  Subdevices: 0/1

  Subdevice #0: subdevice #0

card 0: sofhdadsp [sof-hda-dsp], device 1: HDA Digital (*) []

  Subdevices: 1/1

  Subdevice #0: subdevice #0

card 0: sofhdadsp [sof-hda-dsp], device 6: DMIC (*) []

  Subdevices: 0/1

  Subdevice #0: subdevice #0

card 0: sofhdadsp [sof-hda-dsp], device 7: DMIC16kHz (*) []

  Subdevices: 1/1

  Subdevice #0: subdevice #0

比如我就一个声卡card0,然后声卡下面有4个capture设备,分别是0,1,6,7。

然后用arecord命令一个一个设备录音试一下看那个能录音:

arecord -Dhw:0,6 -d 10 -f cd -c 2 -t wav test.wav

#hw:0是声卡号,6是设备号

如果录音能播放出来,那么恭喜你,可以继续下面的教程,否则就是声卡驱动问题了,得研究Linux内核。

2、你的麦克风不工作多半是因为pulseaudio的问题,我们只需要虚拟一个声卡出来并且指定刚才能工作的hw:0,6作为默认的source,就可以在deepin设置里切换麦克风了。

复制/usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf并且重命名为default-juju.conf,名字随意。

然后在文件开头[General]后面加上这么一段:

[General]

auto-profiles = yes  # 这是文件开头

[Mapping Inter-Mic]

#这里的6根据你的能工作的capture 设备ID来定

device-strings = hw:%f,6

channel-map = left,right

paths-input = analog-input-internal-mic multichannel-input

priority = 9

direction = input

#下面是其他元素

然后执行命令:

pacmd load-module module-alsa-card device_id=0 profile_set=default-juju.conf

# 这里的device_id根据你的声卡id来定

这样就搞定了,执行pacmd list-cards就可以看到多了一张声卡了,这个声卡没有sink,只有source:

    index: 1

        name: 

        driver: 

        owner module: 22

        properties:

                alsa.card = "0"

                alsa.card_name = "sof-hda-dsp"

                alsa.long_card_name = "sof-hda-dsp"

                alsa.driver_name = "snd_soc_skl_hda_dsp"

                device.bus_path = "pci-0000:00:1f.3-platform-skl_hda_dsp_generic"

                sysfs.path = "/devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0"

                device.bus = "pci"

                device.vendor.id = "8086"

                device.vendor.name = "Intel Corporation"

                device.product.id = "34c8"

                device.string = "0"

                device.description = "sof-hda-dsp"

                device.icon_name = "audio-card-pci"

        profiles:

                input:Inter-Mic: Inter-Mic 输入 (priority 59, available: unknown)

                off: 关 (priority 0, available: unknown)

        active profile: 

        sources:

                alsa_input.0.Inter-Mic/#2: sof-hda-dsp Inter-Mic

        ports:

                multichannel-input: 多声道输入 (priority 0, latency offset 0 usec, available: unknown)

                        properties:

然后设置输入里面也有声音了,滑块动了,如下图:

在Deepin Linux系统下遇到麦克风无输入设备的解决方案

然后你可以把刚才的命令写入到/etc/pulse/default.pa里面,就在最后一行加上就行了,如下图:

在Deepin Linux系统下遇到麦克风无输入设备的解决方案

然后杀死pulseaudio,它会自动重启,大功告成:

pulseaudio -k

参考:安装Pulseaudio模块在Ubuntu中开启蓝牙APTX/LDAC支持

 

附:麦克风兼容性问题解决方案

总得来说,就是利用pulseaudio的load module特性,再次载入一次声卡,并且根据自己写的配置文件重新设置可用的sink和source。

方法:

在/usr/share/pulseaudio/profile-sets文件夹下面复制一份default.conf命名为default-juju.conf,并且在中间插入三个元素:

[Profile output:Inter-Speaker+intput:Inter-Mic]

description = Inter-sink-and-source-profiles

output-mappings = Inter-Speaker

input-mappings = Inter-Mic

priority = 10

[Mapping Inter-Speaker]

device-strings = hw:%f,0

channel-map = left,right

paths-output = analog-output-speaker multichannel-ouput #至于什么混音器mixer,我到现在还没怎么搞明白,就用pulseaudio现成的混音器,多指定几个,它会选择一个最合适的!

priority = 9

direction = output

[Mapping Inter-Mic]

device-strings = hw:%f,6

channel-map = left,right

paths-input = analog-input-internal-mic multichannel-input #至于什么混音器mixer,我到现在还没怎么搞明白,就用pulseaudio现成的混音器,多指定几个,它会选择一个最合适的!

priority = 9

direction = input

如图所示:

在Deepin Linux系统下遇到麦克风无输入设备的解决方案

然后在/etc/pulse/default.pa文件末尾重新载入一次声卡:

load-module module-alsa-card device_id=0 card_name=juju profile_set=default-juju.conf

声卡名称随意写。

然后杀死pulseaudio守护进程,它会自己重启并且执行default.pa中的指令:

pulseaudio  -k

于是我们就用pacmd能看到两个声卡了:

juju@juju-PC:/usr/share/pulseaudio/alsa-mixer/profile-sets$ pacmd list-cards 

2 card(s) available.

    index: 0

        name: 

        driver: 

        ........

    index: 1

        name: 

        driver: 

        .......

        profiles:

                input:Inter-Mic: Inter-Mic 输入 (priority 59, available: unknown)

                off: 关 (priority 0, available: unknown)

        active profile: 

        sources:

                alsa_input.0.Inter-Mic/#2: sof-hda-dsp Inter-Mic

        ports:

                multichannel-input: 多声道输入 (priority 0, latency offset 0 usec, available: unknown)

                        properties:

然后我们在Deepin设置里面也可以看到有两个输入选择,第二个输入是有声音的:

在Deepin Linux系统下遇到麦克风无输入设备的解决方案

当然我们也可以直接用pacmd 直接执行添加声卡的命令,执行一次多一个声卡,所以我上面有三个输入:

pacmd load-module module-alsa-card device_id=0 name=juju profile_set=default-juju.conf

到这里,现在总算看起来顺眼了,用Deepin Linux自带的语音记事本也可以录音了。

 

相关主题

在Deepin Linux系统中发qq语音麦克风没有声音的解决方法

精选文章
热门文章