Linux 環境で momo を使用して音声デバイスにアクセスするには、PipeWire と適切なユーザー権限が必要です。
momo は PulseAudio API 経由で音声デバイスにアクセスします。最近の Ubuntu 環境では PipeWire が PulseAudio 互換レイヤー(pipewire-pulse)を提供しているため、PipeWire 経由で動作します。
sudo apt install pipewire pipewire-pulse wireplumberUbuntu 24.04 以降では PipeWire がデフォルトでインストールされています。
systemd 経由で起動する場合:
systemctl --user start pipewire pipewire-pulse wireplumberPipeWire と pipewire-pulse がインストールされているか確認:
systemctl --user status pipewire pipewire-pulse wireplumber正常に動作している場合、3 つのサービスすべてが Active: active (running) と表示されます:
● pipewire.service - PipeWire Multimedia Service
Active: active (running) since ...
● pipewire-pulse.service - PipeWire PulseAudio
Active: active (running) since ...
● wireplumber.service - Multimedia Service Session Manager
Active: active (running) since ...
pipewire-pulse が動作していない場合、momo は音声デバイスにアクセスできません。
Linux では、音声デバイスへのアクセスにグループ権限が必要です。
audio: 音声デバイス(/dev/snd/*など)へのアクセスに必要
sudo usermod -a -G audio $USERデバイスファイルの権限を確認:
ls -l /dev/snd/典型的な出力例:
crw-rw---- 1 root audio 116, 0 Oct 15 10:00 /dev/snd/controlC0
この例では、audio グループに所属するユーザーのみが読み書き可能です。
groupsグループに参加した後は、以下のいずれかの方法で権限を反映させる必要があります:
-
ログアウトして再ログイン(推奨)
-
新しいシェルセッションを開始:
newgrp audio
-
一時的にグループ権限で実行:
sg audio -c 'コマンド'
./momo --list-devices正常に動作している場合の出力例:
=== Available audio input devices ===
[0] default: Insta360 Link Mono
[1] HyperX QuadCast S Analog Stereo
[2] Yamaha YVC-200 Mono
=== Available audio output devices ===
[0] default: Yamaha YVC-200 Mono
[1] HyperX QuadCast S Analog Stereo
音声入力デバイス:
pactl list sources short音声出力デバイス:
pactl list sinks shortcat /proc/asound/cardspw-cli ls Node音声入力デバイスと音声出力デバイスを指定できます:
./momo --audio-input-device 1 --audio-output-device 0 ...デバイスは以下の方法で指定できます:
- インデックス番号:
--audio-input-device 1 - デバイス名:
--audio-input-device "HyperX QuadCast S Analog Stereo"
症状:
Warning: AudioDeviceModule::Init failed (error code: -1). Audio device enumeration is not available.
Note: This may occur if PulseAudio or ALSA is not running.
原因と対処:
-
PipeWire または pipewire-pulse が起動していない
systemctl --user start pipewire pipewire-pulse wireplumber
-
ユーザーが
audioグループに所属していないsudo usermod -a -G audio $USER # ログアウトして再ログイン、または newgrp audio
-
PipeWire がハードウェアを認識していない
systemctl --user restart pipewire pipewire-pulse wireplumber
原因:
- PipeWire がハードウェアデバイスを認識していない
- ユーザー権限の問題
対処:
-
グループ権限を確認:
groups # audio が含まれているか確認 -
PipeWire を適切な権限で再起動:
sg audio -c 'systemctl --user restart pipewire pipewire-pulse wireplumber' -
デバイスが認識されているか確認:
cat /proc/asound/cards pw-cli ls Node
対処:
-
PipeWire のログを確認:
journalctl --user -u pipewire -f journalctl --user -u pipewire-pulse -f
-
pactl でデバイスの状態を確認:
pactl list sources pactl list sinks
-
デバイスファイルのアクセス権を確認:
ls -l /dev/snd/
- PipeWire: https://pipewire.org/
- WirePlumber: https://pipewire.pages.freedesktop.org/wireplumber/
- PulseAudio API: https://www.freedesktop.org/wiki/Software/PulseAudio/