我刚刚自己组装了一台功能强大的新台式机,配有技嘉 Z97P-D3 主板、英特尔 i7-4790K、16GB RAM。我使用板载音频硬件英特尔 HDA(Realtek ALC887-VD)进行音频输出。我运行的是 Ubuntu 14.04 LTS。
每隔几分钟,我就能听到音频播放中出现短暂的跳跃,就好像丢掉了一帧一样。这非常烦人,无论来源是什么(VLC / Spotify / Chromium 浏览器),都会发生这种情况。在跳跃的短暂时间内,“声音首选项”>“输出”选项卡的设备列表会变灰,音量控制指示器会短暂闪烁,就像静音一样,然后一切都会恢复正常。
ALSAmixer 在跳过过程中也会出现类似的故障,音量条会在一瞬间全部消失。
我尝试了以下解决方法(但对我而言均不起作用):
1)/etc/modprobe.d/alsa-base.conf:Position_fix 设置
options snd-hda-intel model=generic position_fix=1
2)PulseAudio /etc/pulse/default.pa:关闭 tsched
load-module module-udev-detect use_ucm=0 tsched=0
3) PulseAudio /etc/pulse/default.pa:调整默认值(以下各种组合和值)
default-fragments = 2
default-fragment-size-msec = 250
default-sample-rate = 48000
realtime-scheduling = yes
realtime-priority = 5
4)重新安装PulseAudio
5)升级内核到最新稳定版本(4.4.2)
6)使用 Jack2 代替 PulseAudio
7) 购买新的声卡(SoundBlaster Live),但它似乎无法与 Spotify 等各种应用程序兼容。
输出cat /proc/asound/card*/codec* | grep Codec
:
编解码器:英特尔通用
编解码器: Realtek ALC887-VD
编解码器:Nvidia GPU 60 HDMI/DP
输出cat /proc/asound/card*
0 [HDMI ]: HDA-Intel - HDA Intel HDMI HDA Intel HDMI 位于 0xf7914000 irq 33
1 [PCH]: HDA-Intel - HDA Intel PCH HDA Intel PCH 位于 0xf7910000 irq 32
2 [NVidia ]: HDA-Intel - HDA NVidia HDA NVidia 位于 0xf7080000 irq 17
我正在使用卡#1。
输出uname -a
:
Linux alnitak 4.4.2-040402-generic #201602171633 SMP 星期三 2 月 17 日 21:35:10 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
我怀疑这与英特尔 HDA 驱动程序有关,因为 Pulse、ALSA 和 Jack 都受到了影响。
我还遗漏了什么修复方法吗?
答案1
自从 2010 年 11 月一位恼火的用户编写了一份 PulseAudioMicrophoneGuide.pdf 文件以来,名为 snd-hda-intel 的 Linux 设备驱动程序显然已经引起了大量的困扰。
这是我目前所弄清楚的:PulseAudio 是一个在 Alsa 之上运行的软件层。Alsa 是一个加载大量驱动程序软件包的软件层。Alsa 不仅仅是电子信号的驱动程序。Alsa 为每个电信号加载几个不同的小软件,例如混频器和从麦克风读取字节或将字节写入耳机放大器的软件。
我的 2015 款联想 S21e 笔记本电脑存在“内置麦克风无声音”的问题,因此 Skype 和 GoogleHangouts 聊天都无法使用内置麦克风。
对我来说,短期的解决方法是插入带麦克风的网络摄像头或使用 Plantonics USB 耳机。
以下是我认为需要做的事情。我不是 C 程序员(只会 Python、Perl 和 Arduino)。在与硬件对话的设备驱动程序中,找到源代码中从麦克风内存位置复制音频数据的位置。软件中以某种方式反转了输出通道之一(右声道或左声道)。我猜他们做了信号反转,希望消除信号中的某种噪音。所以诀窍是找出原始程序员强制反转的原因。如果没有其他办法,请删除反转,看看这是否能让右声道和左声道正常。
答案2
好的,我解决了...答案是:
1)购买一张新声卡(我买的是 Soundblaster Live)
2)安装 Jack Audio(jackd)
sudo apt-get install jackd qjackctl
3)安装Jack-Pulseaudio桥(pulseaudio-module-jack)
sudo apt-get install pulseaudio-module-jack
4)使用适合 Soundblaster 的设置启动插孔(我使用了 qJackctl):
司机: alsa
即时的
帧数/周期:2048
周期/缓冲区:2
输入设备:hw:Live
输出设备:hw:Live
5) 确保插孔连接将 PulseAudio JACK Sink 连接至系统播放
jack_connect 'PulseAudio JACK Sink:front-left' 'system:playback_1'
jack_connect 'PulseAudio JACK Sink:front-right' 'system:playback_2'
6) 确保 PulseAudio 使用 Jack Sink 作为输出
pacmd set-default-sink "jack_out" && pacmd set-default-source "jack_in"
7)重新启动 Spotify / VLC 或任何您用来播放声音的应用程序...它会起作用!
这绝对是一种敷衍了事的解决办法,但这是因为 Linux 中的英特尔 HDA 音频驱动程序质量太差。问题在于 DMA 位置指针报告(一个已知问题:https://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio.txt)。
Linux 音频一团糟。我从 2010 年开始使用 Ubuntu,在过去的 6 年里,音频问题一直是我最头疼的问题。PulseAudio 可能有一个可爱的桌面小部件,但它带来了很多问题。Jack 的文档记录很差,qjackctl 也没有给你带来太多帮助。只有 ALSA 似乎表现良好,但遗憾的是,没有人编写一个好的桌面小部件,也没有一个界面来控制绑定到它的程序。
要点如下:
如果运行 Linux,请不要使用英特尔 HDA 板载音频。
Linux 音频一团糟。如果它不能正常工作,你就会陷入痛苦之中!