更改 ALSA 中的采样率

更改 ALSA 中的采样率

我是一名计算机发烧友,我使用过 Windows(带有 ASIO4ALL)和 OSX 来处理音频。现在我将 Ubuntu 13 作为我的 HTPC/立体声音频。首先,我禁用了 Pulse 音频并使用带有 ALSA 的 GooMusicplayer。

我的 DAC 能够支持 24 位 96khz。我似乎找不到 ALSA 的配置来设置输出采样率。我该如何配置它?

答案1

Alsa 默认使用与源相同的采样率和格式。但是可以强制提高(或降低)采样率。

这是您可以做到的一种方法。 (在/etc/asound.conf或者〜/.asoundrc

pcm.device{
        format S24_LE
        rate 96000
        type hw
        card 0
        device 0
}

然后只需将该 pcm 设为另一个 pcm 的从属,例如默认(立体声)pcm(警告:除非您有兼容的卡,否则 24 位格式将无法工作,我通常使用适用于大多数卡的 S32_LE。)

pcm.!default{
    type plug
    slave.pcm "device"
}

然而,上述内容仅适用于立体声源(因此,如果您从默认情况下使用 Surround51 pcm 的 5.1 源播放,事情会变得有点复杂)

我知道(并且个人使用)关于如何强制非立体声源的采样率的一种方法是从这个 asound.conf/asoundrc(死链接)并修改它们。 (注:该文件不是我自己写的)

(你可以找到我的声音配置文件在这个问题中,直接复制它,而不是经历下面手动修改它的麻烦)

首先复制“dmixed”pcm,并将其硬件部分修改为所需的采样率和格式。

然后按原样从中复制!default、surround40 和surround51 PCM。这将有效地混合所有输出,并将所有 2.0、4.0 和 5.1 源的采样率上转换为 dmixed pcm 中设置的采样率。

在该配置文件中,您可能还会发现“upmix20_51”pcm 很有趣,因为它是通过有选择地将声音复制到其他通道来将 2.0 源升混到 5.1 的有效方法。如果您想使用它,您必须将其类型从“插头”更改为“路由”,然后将其设置为默认 pcm 的从属设备。

pcm.!default{
    type plug
    slave.pcm "upmix20_51"
}

由于该 pcm 使用的“surround51”使用“dmixed”作为从属设备,因此强制采样率也将应用于该 pcm。

遗憾的是,按照现在的情况,单声道音源只能从左扬声器输出,但这几乎不是问题,因为单声道音源在这些爸爸中很少见。我刚才给出的例子正是我自己的例子声音配置文件配置完毕后,如果您有 5.1 扬声器设置并想要强制使用 96khz 采样率,请尽情享受。

从理论上讲,我认为强制提高采样率不会为您带来任何好处(因为这是一个荒谬的想法,它会提高采样率较低的源的音频质量),因此您将成为将应用程序配置为使用 96khz 输出会更好。

但对我来说,如果我不强制使用 96khz 或 44.1khz 频率,我就会遇到一些噼啪声的问题(在特定游戏中,例如《幽浮:未知敌人》)。强制使用 96khz 并不会造成任何损失(它既不会提高也不会降低 44.1/48khz 源的质量),这是一个完美的解决方案。

答案2

设备的采样率默认为应用程序为其配置的采样率,即原始文件的采样率。

答案3

其他答案有些正确。

大多数声卡默认情况下不具有多通道功能。如果您有其中一张具有多通道混音器的卡 - 您可能不需要阅读此处。 ALSA 在软件中混合多种声音。

一般来说,有两种选择:

  1. 绕过混合软件输出,您可以享受更大范围的声音。(例如,更高的采样率和比特率,通道到 6 个或更多扬声器)。

    声卡上只允许有一个程序运行!

  2. 启用软件混合,并丢失一些您可能不会注意到的质量。(Asus Xonair DX 与 Sennheiser HD598 进行测试,没有注意到任何差异,使用 96 khz 6 通道采样率 flac 和 192 khz 2 通道采样率)。

    不止一个程序可以这样工作!请注意,我不是发烧友,至少现在还不是。

如果您的硬件不支持同时混合多个流,则默认启用第二个选项。

笔记:还有第三种选择。 ALSA 可以在软件中配置重新采样,但根据我的经验,虽然可以将所有要重新采样的应用程序调整为最大最高采样率和比特率,但它在 FPS 游戏中引入了明显的滞后,这是不好的对于一个游戏玩家来说。(大约三分之一秒,当我从枪里射出子弹时,这让我很恼火)。

请注意,由于以下几个原因,第三种选择可能不实用:

  1. 我没有很好地测试它,但我想某些应用程序可能仍然存在问题。
  2. 大多数音频收藏都是 44.1/44 khz 采样率和 16 位速率,除非您使用大量 FLAC,但即使如此,FLAC 也必须具有更高的采样率。
  3. 上采样并不能提供更好的音质(理论上可以,但如果你使用便宜的耳机 - 你不会注意到它,我 99% 确定)。
  4. 游戏中的延迟是非常真实的,除非我在文件中做错了什么.asoundrc

让事情变得更加混乱的是,从好的方面来说,情况可能会变得更糟。您可以创建具有不同设置(通道/速率/采样率/物理输出和输入配置)的“设备”。有些应用程序可以使用您手动创建的设备,有些则不能。这让我很恼火。

最臭名昭著和最有问题的是:Flash播放器。

对于不使用 USB 连接耳机的人来说,这个答案是正确的。他们有自己的内置声卡,我对此的了解有限,可能对于那些内置主板声卡的人来说更是如此。可能仍适用于 USB 耳机,但对整个事情持保留态度。我猜想,如果不是的话,所有生产的声卡中至少有 10% 会使用硬件混音,因为硬件缺少它作为一个选项。光输出是一大例外。 AFAIK 光纤输出不需要混频器。解复用在“接收器”中进行,由硬件完成。别相信我的话。

答案4

感谢@Cestarian 提供以上信息。这应该可以帮助我让 USB semi-pro 音频接口达到我的重新编码标准化的采样率 (96K)。我发现这对于工作室的机器设置非常有洞察力。

为了帮助您,既然您帮助了我,我将回答以下问题:

“从理论上讲,我认为强制提高采样率不会为您带来任何好处(因为它会提高采样率较低的源的音频质量,这是一个荒谬的想法),因此您将将应用程序配置为使用 96khz 输出会更好。

但对我来说,如果我不强制使用 96khz 或 44.1khz 频率,我就会遇到一些噼啪声的问题(在特定游戏中,例如《幽浮:未知敌人》)。强制使用 96khz 并不会造成任何损失(它既不会提高也不会降低 44.1/48khz 信号源的质量),因此这是一个完美的解决方案。”

有一种应用程序可以获取数字信号,并将其转换为比原始信号更高的乘数:数字抖动减少。找出计算机与母带工作室为此目的使用的外部采样率转换器盒的精度将会很有趣。

第二个:我图像必须有一个处理帧,当采样率未定义时必须发生。从逻辑上讲,它必须感测来自硬盘驱动器的传入数据,然后将其格式化(如果不正确)到数据流中,而不是仅仅输出到数据流。声音使用实时处理而不是CPU。但由于您也进行了上采样,因此您可以修复游戏声音文件上的源采样率抖动。

相关内容