PulseAudio – matoken's blog https://matoken.org/blog Is there no plan B? Tue, 19 Apr 2022 06:01:49 +0000 ja hourly 1 https://wordpress.org/?v=6.8.3 https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9-32x32.jpeg PulseAudio – matoken's blog https://matoken.org/blog 32 32 Debian bullseyeでPipeWireに切り替えてPulseAudioに戻したらA2DPが使えなくなった https://matoken.org/blog/2021/12/16/debian-bullseye-can-no-longer-use-a2dp/ https://matoken.org/blog/2021/12/16/debian-bullseye-can-no-longer-use-a2dp/#respond Thu, 16 Dec 2021 13:40:56 +0000 http://matoken.org/blog/?p=3440

Debian BullseyeのサウンドサーバのPipeWireですが,experimentalだとかBullseyeのPipeWireは現在の状態を表すものではないとか書かれています.でもちょっと試したいことがあってDebian Wikiを見ながらPulseAudioからPipeWireに切り替えてみました.少し試したあと元のPuleAudioに戻したのですが,以前使えていたBluetooth A2DPに切り替えできなくなりました.

Bluetoothプロファイルの切り替えにいつもはblueman-managerやpavuctrlを使っていますがどちらでもHSP/HFPかoffしか設定できずA2DPに切り替えようとするとうまく行きません.
pacmdではこんなメッセージ.

$ pacmd set-card-profile 4 a2dp_sink
Failed to set card profile to 'a2dp_sink'

ヘッドセットのペアリング設定を削除して設定し直ししても動作変わらず.
以下のページを見て同じ常用でGDMが掴んでしまうことがあるよう.GDM3を使っているけどプロセスは残ってないし関係なさそう.でも一応設定して動作変わらず.

以前遭遇した以下の設定も試してみましたが動作変わらず.

プロセスを見るとPipeWireのものが残っています.
これのせいかな?とPipeWireのプロセスを止めたあとPulseAudioを再起動してBluetoothヘッドセットを接続するとA2DPでつながるようになりました.

$ systemctl --user stop pipewire.service pipewire.socket
$ systemctl --user restart pulseaudio

PipeWire pkgを消してしまおうと思ったがGnomeなどが依存しているようなのでそのままにして次ログイン以降も大丈夫なようにPipeWireを無効化しました.

$ systemctl --user disable pipewire pipewire-pulse

追記)
再起動したらPipeWireのプロセスが起動してきました./etc/systemd/user の下にシステムワイドの設定があるのでこれも削除して再起動して起動してこなくなるんのを確認しました.

$ sudo rm /etc/systemd/user/sockets.target.wants/pipewire.socket \
/etc/systemd/user/default.target.wants/pipewire.service
環境
$ bluetoothctl info 00:18:09:FF:FF:FF
Device 00:18:09:FF:FF:FF (public)
        Name: MDR-ZX330BT
        Alias: MDR-ZX330BT
        Class: 0x00240404
        Icon: audio-card
        Paired: yes
        Trusted: yes
        Blocked: no
        Connected: yes
        LegacyPairing: no
        UUID: Headset                   (00001108-0000-1000-8000-00805f9b34fb)
        UUID: Audio Sink                (0000110b-0000-1000-8000-00805f9b34fb)
        UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
        UUID: Advanced Audio Distribu.. (0000110d-0000-1000-8000-00805f9b34fb)
        UUID: A/V Remote Control        (0000110e-0000-1000-8000-00805f9b34fb)
        UUID: Handsfree                 (0000111e-0000-1000-8000-00805f9b34fb)
$ dpkg-query -W pipewire* pulseaudio* bluetooth* blueman* pavucontrol
blueman 2.1.4-1+b1
bluetooth       5.55-3.1
pavucontrol     4.0-2
pipewire:amd64  0.3.19-4
pipewire-bin    0.3.19-4
pulseaudio      14.2-2
pulseaudio-module-bluetooth     14.2-2
pulseaudio-module-jack  14.2-2
pulseaudio-module-zeroconf
pulseaudio-utils        14.2-2
$ lsb_release -dr
Description:    Debian GNU/Linux 11 (bullseye)
Release:        11
$ arch
x86_64
]]>
https://matoken.org/blog/2021/12/16/debian-bullseye-can-no-longer-use-a2dp/feed/ 0
ミュートアンミュートスクリプトを修正 https://matoken.org/blog/2021/01/24/fix-mute-unmute-script/ https://matoken.org/blog/2021/01/24/fix-mute-unmute-script/#respond Sat, 23 Jan 2021 23:25:08 +0000 http://matoken.org/blog/?p=2944

以前Awesome wmでボリュームコントロールをするのにscriptを書いてこれまで使っていました.

しかし,最近アンミュートにしても音が出なくなりました.

amixerではonになっているけど音が出ない
$ amixer -c 0 get Master
Simple mixer control 'Master',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined
  Playback channels: Mono
  Limits: Playback 0 - 87
  Mono: Playback 36 [41%] [-38.25dB] [on]

pavucontrolで見るとミュートになっています.

pavucontrol mute

これをアンミュートすると音が出ます.
scriptで制御できるようコマンドで試します. pactl set-sink-mute コマンドで制御できました.

$ pactl set-sink-mute
You have to specify a sink name/index and a mute action (0, 1, or 'toggle')
$ pactl set-sink-mute 0 1 (1)
$ pactl set-sink-mute 0 0 (2)
  1. ミュート
  2. アンミュート

ということでscriptに追記しました.動作も問題なさそうです.これでビデオチャット時にアンミュートしたのに音が聞こえない??とならないといいな.

$ git -C ~/.config/awesome/ diff ~/.config/awesome/bin/awesome-audio.sh
diff --git a/bin/awesome-audio.sh b/bin/awesome-audio.sh
index 440f399..9c30d3d 100755
--- a/bin/awesome-audio.sh
+++ b/bin/awesome-audio.sh
@@ -22,6 +22,7 @@ case "$1" in
       amixer -q -c 0 set Master unmute
       amixer -q -c 0 set Speaker unmute
       amixer -q -c 0 set Headphone unmute
+      pactl set-sink-mute 0 0
       xset b
       echo -e "🔊\nunmute!"
       amixer -c 0 get Master | tail -1 | cut -d '[' -f 2 | sed s/\]// | xargs notify-send -u low -t 500 -i '/usr/share/icons/ContrastHigh/scalable/status/audio-volume-high.svg' numute
環境
$ dpkg-query -W pulseaudio pulseaudio-utils pavucontrol alsa-utils
alsa-utils      1.2.4-1
pavucontrol     4.0-2
pulseaudio      14.2-1
pulseaudio-utils        14.2-1
$ lsb_release -dr
Description:    Debian GNU/Linux bullseye/sid
Release:        unstable
$ uname -m
x86_64

]]>
https://matoken.org/blog/2021/01/24/fix-mute-unmute-script/feed/ 0
LinuxのPulseAudioのエコーキャンセルモジュールがいい感じ https://matoken.org/blog/2020/05/01/pulseaudios-echo-cancellation-module-for-linux-looks-good/ https://matoken.org/blog/2020/05/01/pulseaudios-echo-cancellation-module-for-linux-looks-good/#respond Thu, 30 Apr 2020 15:47:59 +0000 http://matoken.org/blog/?p=2722

皆さんオンラインミーティングとかやってますか?私は急にオンラインミーティングに参加する頻度が増えました.
これまでマイクはほとんど使っていなかったのでマイクは気にしていなかったのですが気になるようになりました.

Linuxで使えるリアルタイムノイズキャンセルソフトウェアはあるのだろうかと少し調べるとPulseAudioのモジュールで module-echo-cancel というものがあるのを知りました.

とりあえず規定値の設定は簡単で,/etc/pulse/default.pa`というファイルに`load-module module-echo-cancel`を書いてあげてPulseAudioの再起動でokです.
PulseAudioの再起動は手元の環境では `pulseaudio -k
で停止してすぐ自動起動してきました.

$ echo "load-module module-echo-cancel" | sudo tee -a /etc/pulse/default.pa
$ pulseaudio -k
$ ps ux | grep pulseaudio | grep -v grep || pulseaudio --daemonize=no
Note
追記)

/etc/pulse/default.pa はシステムワイドな設定でroot権限も必要なので自分しか使わないなら ~/.config/pulse/default.pa を使ったほうがいいですね.
そしてデーモンの再起動は上の方法だと乱暴なのでこんな感じかな

$ systemctl --user restart pulseaudio.service

これでマイクを利用したいアプリでオーディオデバイスをecho cancelのものに切り替えればOKです.

discord audio
zoom audio

という感じで簡単に設定できました.
この設定有効なのだろうか?とpavucontrolで見てみました.

以下は特に何も話していないときの様子です.上がマイク直のデバイス,下がecho cancel module のされたデバイスの状態です.

pulseaudio echo cancel

バーの動き的にはなにか効いてる感じです.

Discordで音声チャット中に切り替えて聴き比べてもらうと明らかに良くなってるとのこと.
てことでノイズ源が回りにある人は設定がお手軽なのでおすすめです.

ちなみにKrispというノイズキャンセルアプリケーションがあって評判がいいようです.しかし残念ながらLinuxは対応していません(◞‸◟)
でもChrome拡張機能があるのでChromeのウェブアプリでは利用できそうです.

]]>
https://matoken.org/blog/2020/05/01/pulseaudios-echo-cancellation-module-for-linux-looks-good/feed/ 0