AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 19212
Accepted
Igor Zinov'yev
Igor Zinov'yev
Asked: 2010-12-30 01:48:33 +0800 CST2010-12-30 01:48:33 +0800 CST 2010-12-30 01:48:33 +0800 CST

我如何知道我的系统是否能够播放 24bit/96kHz 声音?

  • 772

让我郑重声明,当谈到 Hi-Fi 音响系统时,我完全是个菜鸟,但我对音质相当挑剔。通常我会听 16/44 翻录到 FLAC 的 CD 录音,但我有几张专辑也是 24/96 翻录到 FLAC 的。但似乎我无法区分 16 位和 24 位版本之间的区别(当然,除了一些黑胶噪音)。这可能是由于几个原因:

  • 我的设备(板载音频、监听耳机)不够好,无法有所作为,
  • 我的系统没有播放 24 位 96 kHz 的音频,
  • 我身体上听不出区别。

所以这是我的问题,我如何判断我的系统是否可以播放96 或 192 kHz 分辨率的 24 位声音?如果可以,我怎么知道它播放它而不是下采样到 16 位/44 kHz?

另外,您会推荐什么硬件(声卡、放大器等)在 Ubuntu 上播放此类录音?

sound soundcard
  • 2 2 个回答
  • 16575 Views

2 个回答

  • Voted
  1. Best Answer
    Stefano Palazzo
    2010-12-30T06:31:20+08:002010-12-30T06:31:20+08:00

    要了解您的声卡支持什么,请查看

    /proc/asound/card0/codec#2
    

    (您只需输入cat /proc/asound/card0/codec#2终端即可阅读)

    现在,0 和 #2 可能会因您而异,cat /proc/asound在终端中输入并点击tab以查看其中的内容,

    在这个文件中(这不是一个真正的文件,但没关系),你会发现这样的东西:

    [...]
    Node 0x10 [Audio Output] wcaps 0xc1d: Stereo Amp-Out R/L
    [...]
      PCM:
    [...]
        rates [0x560]: 44100 48000 96000 192000
    [...]
    

    此外,可以说,您可以安全地打字cat /proc/asound/card0/codec#2 | grep rates并查看最低公分母。

    但是:与音响系统真正无关的DAC(数模转换器)可能只是对信号进行插值,声卡甚至可能会做一些虚假广告,你看制造商无法知道安全网站。

    你没有听到差异的原因(我断言有一个可以听到,尽管这是一个很大的争论的主题)是 - 可能 - DAC不够好。这是迄今为止最薄弱的环节(在您的计算机内部)。

    至于你的第二个问题:虽然这当然不是讨论它的地方,但看看“ESI Juli@”或“Dr. Dac Nano”之类的东西,它们价格合理,分别播放 192kHz / 96kHz - 并且他们被非常挑剔的发烧友社区广泛认为“还可以”。此外,如果耳机/扬声器/放大器跟不上,最好的声音芯片也将无济于事。

    • 8
  2. Tomek
    2021-04-09T14:49:40+08:002021-04-09T14:49:40+08:00

    我知道这是一个老问题,但是当我研究自己的类似问题时,我偶然发现了它,同时我找到了原始问题的这个特定部分的答案,但尚未得到回答:

    如果可以,我怎么知道它播放它而不是下采样到 16 位/44 kHz?

    简短的回答

    在大多数情况下,您可以确定您的系统正在对您的高质量音乐进行下采样。“大多数情况”是指常规的、日常的、正常的操作系统设置。

    长答案,并提供有关如何自行验证的指南

    首先,一些假设 - 假设您的主声卡是card0(如该问题的第一个答案),并且标准立体声输出(用于前置扬声器)进入pcm0p该卡上的设备(代表“PCM设备0,回放”)。在这种情况下,您感兴趣的文件如下:

    /proc/asound/card0/pcm0p/sub0/hw_params

    子设备在哪里sub0(稍后会详细介绍,但是当只播放一个声音时,sub0它将被发送到子设备)。如果当前没有声音被发送到特定的子设备,则相应hw_params文件的内容将只是closed. 因此,首先您需要开始播放您最喜欢的高品质声音文件(您知道超过 16 位和/或超过 44kHz),然后查看该hw_params文件,检查其中的format和rate声明的内容。例如,如果您知道您的声音文件每个样本使用 24 位,并且您看到format: S16_LE(16 位有符号整数,little-endian 位排序),那么您知道它在到达您的声卡的途中某处被下采样。

    如果您看到您的文件正在被下采样,并且想检查系统的哪个部分负责(声音服务器?音乐播放器?),请继续阅读。

    正如承诺的那样,首先对子设备进行更多介绍。如果你的声卡支持硬件混音,那么播放设备会有多个子设备。如果它不支持硬件混音,它将只有一个子设备 - sub0。但即使它确实有多个子设备,也可以肯定只有sub0一个会被使用。那是因为大多数(全部?)现代操作系统都使用软件混音。例如,Ubuntu 目前使用 PulseAudio 声音服务器,该服务器在将声音进一步发送到操作系统之前进行软件混音。通过硬件混音,来自多个来源(例如多个音乐播放器)的声音将进入不同的子设备,然后声卡将在硬件中进行混音。通过软件混音,来自所有来源的声音进入sub0子设备。只是要记住一点 - 记得hw_params在正确的子设备中查看文件。

    回到主题。既然我们在谈论 Ubuntu,我们将坚持它的软件堆栈——在 PulseAudio 的后端有 ALSA,它是与硬件驱动程序对话的接口,因此 PulseAudio 可以成为一个花哨的高级声音服务器,它不不必费心知道它正在与什么硬件通信。

    了解了以上所有内容,我们就可以开始排除潜在的嫌疑人了。我们真的可以自动排除任何类型的音乐播放器,因为他们唯一要做的就是打开声音文件,如果它以 PCM 以外的某种格式编码,则对其进行解码,然后将读取/解码的内容发送到,例如,声音服务器。

    所以我们只剩下声卡的硬件驱动程序和音乐播放器之间的层——ALSA 和 PulseAudio。用其他声音子系统(但可行)替换 ALSA(出于测试目的)有点困难,但暂时禁用 PulseAudio 相当容易,这将迫使我们的音乐播放器直接与 ALSA 对话。为了实现这一点,我们从终端(作为普通用户)执行以下命令:

    systemctl --user stop pulseaudio.socket
    systemctl --user stop pulseaudio.service
    

    现在您需要重新启动音乐播放器,开始播放音乐文件,然后再次查看/proc/asound/card0/pcm0p/sub0/hw_params文件。而这一次你会看到正确的值,这证明了,与网上流传的一些观点相反,PulseAudio确实对声音进行了下采样。

    我使用在索尼网站 ( https://helpguide.sony.net/high-res/sample1/v1/en/index.html ) 上找到的高分辨率音乐文件 (24bit, 96kHz) 进行了测试,并播放了它回到 VLC 并在hw_params文件中看到声卡报告它正在 S16_LEformat中的 48000 处输入数据rate。然后我禁用了 PulseAudio,重新启动了 VLC 并播放了同一个文件——这次hw_params文件报告format为 FLOAT_LE(浮点,根据定义是 32 位,所以实际上是从 24 位放大的,可能是 ALSA),并且rate是96000(应该是这样)。

    测试完成后,您可以使用以下命令重新启用 PulseAudio:

    systemctl --user start pulseaudio.service
    systemctl --user start pulseaudio.socket
    

    编辑:也许我还应该提到我用于测试的声卡 - (部分)输出lspci -v:

    04:00.0 Audio device: Creative Labs EMU20k2 [Sound Blaster X-Fi Titanium Series] (rev 03)
        Subsystem: Creative Labs SB1270 [SoundBlaster X-Fi Titanium HD]
        Kernel driver in use: snd_ctxfi
        Kernel modules: snd_ctxfi
    
    • 1

相关问题

  • 从网络广播录制声音

  • 播放声音时延迟

  • 5.1环绕声[关闭]

  • 声音,在多个程序之间停止

  • 即使插入耳机,我的扬声器也会发出声音[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve