ALSA でサンプリングレートを変更する

ALSA でサンプリングレートを変更する

私はコンピューターオーディオマニアで、オーディオには Windows (ASIO4ALL 付き) と OSX を使ってきました。現在は Ubuntu 13 を HTPC/ステレオ オーディオとして使用しています。まず、Pulse オーディオを無効にし、ALSA 付きの GooMusicplayer を使用しています。

私の DAC は 24 ビット 96 kHz に対応しています。出力サンプリング レートを設定するための ALSA の設定が見つからないようです。どのように設定すればよいでしょうか?

答え1

Alsa はデフォルトでソースと同じサンプリング レートと形式を使用します。ただし、サンプル レートを強制的に上げたり下げたりすることも可能です。

これを行う方法の1つは次のとおりです。(サウンドファイルまたは~/.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"
}

ただし、上記はステレオソースにのみ機能します(したがって、デフォルトでサラウンド51 PCMを使用する5.1ソースから再生する場合は、状況が少し複雑になります)。

私が知っている(そして個人的に使っている)非ステレオソースのサンプルレートを強制する方法は、このasound.conf/asoundrc(リンク切れ) を修正しました。(注: このファイルは私が書いたものではありません)

(私のサウンド.confこの質問に入力し、下記のように手動で変更する手間をかけずに、そのままコピーしてください。

まず、「dmixed」PCM をコピーし、そのハードウェア セクションを目的のサンプル レートと形式に変更します。

次に、!default、surround40、および surrounding51 pcm をそのままコピーします。これにより、すべての出力が効果的に dmix され、すべての 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 にも適用されます。

残念ながら、現在の状況ではモノラルソースは左スピーカーからしか出力されませんが、モノラルサウンドソースは今では珍しいので、それはほとんど問題ではありません。私が今挙げた例は、まさに私が自分のスピーカーで行っていることです。サウンド.conf設定すると、5.1 スピーカー セットアップがあり、96 kHz のサンプル レートを強制する場合に便利です。

理論的には、サンプル レートを強制的に上げても何も達成できないと思います (サンプル レートが低いソースからのオーディオの品質が向上するというのは無意味な考えです)。そのため、96 kHz 出力を使用するようにアプリケーションを構成する方がはるかに効果的です。

しかし、私の場合、96khz または 44.1khz の周波数を強制しないと、パチパチという音が出るという問題がありました (Xcom: Enemy Unknown などの特定のゲーム)。96khz を強制しても何も失わないので (44.1/48khz のソースの品質は向上も低下もしません)、これは完璧な解決策でした。

答え2

デバイスのサンプル レートは、デフォルトではアプリケーションで設定されたもの、つまり元のファイルのサンプル レートになります。

答え3

他の答えはある程度正しいです。

ほとんどのサウンド カードには、デフォルトでマルチ チャネル機能がありません。マルチ チャネル ミキサーを備えたカードをお持ちの場合は、ここでの説明を読む必要はありません。ALSA は、ソフトウェアで複数のサウンドをミキシングします。

一般的に言えば、2 つのオプションが考えられます。

  1. ミキシング ソフトウェアの出力をすべてバイパスすると、より広い範囲のサウンドを楽しむことができます (たとえば、6 つ以上のスピーカーにチャネリングするなど、サンプル レートとビット レートを高くする)。

    サウンド カードで動作できるプログラムは 1 つだけです。

  2. ソフトウェア ミキシングを有効にすると、品質が多少低下しますが、おそらく気付かない程度です (Asus Xonair DX と Sennheiser HD598 でテストしましたが、まったく違いは感じられませんでした。96 kHz 6 チャンネル サンプル レート flac と 192 kHz 2 チャンネル flac を使用しました)。

    複数のプログラムがそのように動作する可能性があります。念のため言っておきますが、私はオーディオマニアではありません。少なくとも今のところは。

ハードウェアが複数のストリームの同時混合をサポートしていない場合、2 番目のオプションはデフォルトで有効になります。

注記:3 番目のオプションもあります。ALSA はソフトウェアで再サンプリングするように構成できますが、私の経験では、すべてのアプリを最高のサンプル レートとビット レートに再サンプリングするように調整することは可能ですが、FPS ゲームで顕著な遅延が発生し、ゲーマーにとって問題となります (銃から弾丸を発射したときに 3 分の 1 秒程度かかり、非常にイライラしました)。

3 番目のオプションは、いくつかの理由によりおそらく実用的ではないことに注意してください。

  1. 十分にテストしていませんが、一部のアプリではまだ問題がある可能性があります。
  2. ほとんどのオーディオ コレクションは、FLAC を多用しない限り、16 ビット レートで 44.1/44 khz のサンプル レートになっていますが、その場合でも、FLAC にはより高いサンプル レートが必要です。
  3. アップサンプリングでは音質は向上しません (理論的には向上しますが、安価なヘッドフォンを使用すると、99% 気付かないでしょう)。
  4. ファイルに何か間違いがない限り、ゲームでの遅延は実際に発生します.asoundrc

物事をもっと混乱させるのは、良い意味でさらに悪化するかもしれません。さまざまな設定 (チャンネル/レート/サンプル レート/物理的な出力と入力の構成) で「デバイス」を作成できます。また、一部のアプリは手動で作成したデバイスを使用できますが、一部は使用できません。これは本当にイライラします。

最も悪名高く問題の多いものは、Flash Player です。

この答えは、USB 接続のイヤホンを使用していない人には当てはまります。イヤホンには独自のサウンド カードが組み込まれていますが、それについては私の知識が限られているため、マザーボードにサウンド カードが組み込まれているイヤホンの方が当てはまるかもしれません。USB ヘッドセットにも当てはまるかもしれませんが、全体を鵜呑みにしないでください。ハードウェアにはオプションとしてハードウェア ミキシングがないため、製造されるサウンド カードの 10% 未満ではハードウェア ミキシングが使用されていると推測しています。光出力は大きな例外です。私の知る限り、光出力にはミキサーは必要ありません。デマルチプレクシングは「レシーバー」で行われ、ハードウェアで実行されます。私の言葉を鵜呑みにしないでください。

答え4

@Cestarian さん、上記の情報をありがとうございます。これで、USB セミプロ オーディオ インターフェイスを、私のレコーディングで標準化されたサンプリング レート (96K) に合わせることができるはずです。この情報は、スタジオ用にマシンをセットアップする上で非常に役立つと思います。

あなたを助けるために、そしてあなたが私を助けてくれたので、私は以下の質問に答えます:

「理論的には、サンプル レートを強制的に上げても何も達成できないと思います (サンプル レートが低いソースからのオーディオの品質が向上するというのは無意味な考えです)。そのため、96 kHz 出力を使用するようにアプリケーションを構成する方がはるかに効果的です。

しかし、私の場合、96kHz または 44.1kHz の周波数を強制しないと、パチパチという音 (Xcom: Enemy Unknown などの特定のゲーム) が発生するという問題がありました。96kHz を強制しても何も失われないので (44.1/48kHz のソースの品質が上がることも下がることもありません)、これは完璧な解決策でした。」

デジタル信号を取得し、それを元の信号よりも高い乗数に変換するアプリケーションが 1 つあります。それは、デジタル ジッター削減です。この目的のためにマスタリング スタジオで使用される外部サンプル レート コンバーター ボックスと比較して、コンピューターの精度を調べるのは興味深いことです。

2 番目: サンプリング レートが未定義の場合に発生する処理フレームがあるはずです。論理的には、ハード ドライブからの入力データを感知し、データ ストリームに出力するだけでなく、データ ストリームにフォーマットする必要があります (正しくない場合は)。サウンドは CPU ではなくリアルタイム処理を使用します。ただし、アップ サンプリングも行っているため、ゲームのサウンド ファイルのソース サンプリング レート ジッターを修正できます。

関連情報