Ink

Contents related to tech, hobby, etc

音声周りの環境改善をした

|

音声周りの環境改善をした

実はこの環境は音声周りの環境が大分悪くて、 普段はYouTubeなどはこの環境からは利用していない。

今回暇だったので、せっかくなので直してみることにする。

元々あった問題

アプリケーション毎の音量差が激しすぎる

ブラウザで流しているYouTubeの音が聞こえる程度の音量にすると、 通知が爆音でガチビビるという現象がありました。 逆に通知の音量程度にすると、YouTubeの音が全く聞こえません。

ちなみに、通知の音量程度にした時にPulseAudioの音量ゲージが100% なのでブラウザ側の音量が小さいのが問題です。

Air Podsを接続して聞くと音がガビガビになる

昔はきちんと聞こえていた(と思う)のですが、いつからか ガビガビで聞けたものじゃなくなりました。

今回やったこと

1. ブラウザの sink-input の音量を調節した

詳しくは前回書いたブログを参照。

ブラウザの音量めっっっちゃ小さくされてた(10%だった) のでそれを100%に戻したところ、 良いバランスになった

2. Air PodsのBluetoothプロファイルを修正した

前に、音質周りについてプロファイルの問題うんたらと見た ことがあったな~と思ったのでそこ辺りを検索。

その結果 Raspberry Pi に複数の Bluetooth デバイスを接続して同時に音を流す -- noraworld を発見、どうやら音声通話用プロファイルと音楽用プロファイルが別に存在するらしい。

用途略称正式名称
音声通話用HFPHands-Free Profile
音楽用A2DPAdvanced Audio Distribution Profile

(ちなみに本当に一覧が見たければbluetooth公式のページに存在する)

pactl list sinks でSinkの一覧を表示した際、

   シンク #1
状態: RUNNING
名前: bluez_sink.74_65_0C_F0_90_23.handsfree_head_unit
説明: Air Pods
ドライバー: module-bluez5-device.c
サンプル仕様: s16le 1ch 16000Hz
チャンネルマップ: mono
       ...
ボリューム: mono: 65536 / 100%
        バランス 0.00
ベースボリューム: 65536 / 100%
       ...
プロパティー:
	bluetooth.protocol = "handsfree_head_unit"
	bluetooth.codec = "mSBC"
	device.intended_roles = "phone"
               ...

プロパティーの下に bluetooth.protocol = "handsfree_head_unit" とあるので HFPになってるらしいことがわかる。 また、チャンネルマップが mono であることからこれはおそらくモノラル音源になっている ことがわかる。

またこれはあまり詳しくないので間違っているかもしれないが、 サンプル数も1ch 16000Hzとかなり低めになっていることがわかる。 (参考までに、パソコン本体のサンプル仕様は 2ch 44100Hzだった)

ということでこれをA2DPに切り替える。 今回はpavucontrolを使って切り替えた。

pavucontrolを起動したら configure タブを開き、そこに表示された BluetoothヘッドホンのProfileを A2DP に変更する。