Files
streaming-audio/README.md
T

108 lines
3.9 KiB
Markdown

# Streaming Audio
`streaming-audio.sh` richtet ein persönliches Streaming-Audiorouting für Fedora,
PipeWire, OBS und Discord ein. Das Skript trennt Spiel- und Systemton, Discord,
Firebot und Soundboard in eigene virtuelle Ausgänge.
## Signalwege
| Virtuelles Gerät | Verwendung | Kopfhörer | OBS | Discord |
| --- | --- | --- | --- | --- |
| `game_audio` | Spiel- und Systemton | ja | ja | nein |
| `discord_sink` | Stimmen aus Discord | ja | ja | nein |
| `firebot_sounds` | Firebot und Browser | ja | ja | nein |
| `soundboard_sounds` | Soundboard und Stream Deck | ja | ja | ja, leiser |
| `discord_micmix` | Gefiltertes OBS-Mikrofon und Soundboard-Kopie | nein | nein | ja |
Das echte Mikrofon wird zuerst in OBS bearbeitet. Das OBS-Audiomonitoring leitet
die gefilterte Stimme anschließend an `discord_micmix` und damit an das virtuelle
Eingabegerät `Discord-Mikrofon` weiter.
## Voraussetzungen
- Fedora oder ein vergleichbares System mit PipeWire und WirePlumber
- `bash`, `pactl`, `pw-link`, `systemctl`, `awk` und `grep`
- OBS Studio und Discord
Die Gerätenamen und Routing-Regeln sind auf das ursprüngliche System abgestimmt.
Vor einer Verwendung auf einem anderen Rechner müssen insbesondere `MIC_RE`,
`LINE_OUT_RE` und gegebenenfalls die Erkennung der Anwendungen im Skript angepasst
werden.
## Installation
```bash
git clone https://git.hnz.io/hnzio/streaming-audio.git ~/Projekte/streaming-audio
ln -s ~/Projekte/streaming-audio/streaming-audio.sh ~/bin/streaming-audio.sh
~/bin/streaming-audio.sh install
```
`install` schreibt die PipeWire-Konfiguration nach
`~/.config/pipewire/pipewire.conf.d/10-streaming-sinks.conf` und startet die
PipeWire-Benutzerdienste neu. Laufende Audioverbindungen werden dabei kurz
unterbrochen. Danach sollten OBS, Discord, Firebot und das Soundboard neu gestartet
werden.
## Verwendung
```bash
~/bin/streaming-audio.sh install
~/bin/streaming-audio.sh route
~/bin/streaming-audio.sh status
~/bin/streaming-audio.sh cleanup
~/bin/streaming-audio.sh restore-mic
```
- `install` bereinigt alte Instanzen und legt die virtuellen Geräte dauerhaft an.
- `route` verschiebt aktive Anwendungen und stellt die PipeWire-Verbindungen her.
- `status` zeigt Geräte, Audiostreams, Module und relevante Verbindungen an.
- `cleanup` entfernt alte manuelle Module und deaktiviert doppelte Konfigurationen.
- `restore-mic` setzt das erkannte ZOOM/H6 wieder als Standardmikrofon.
`route` sollte ausgeführt werden, wenn OBS, Discord und die zu routenden Anwendungen
bereits laufen oder gerade Ton ausgeben. Spiele sollten danach gestartet werden,
damit sie den virtuellen Standardausgang `game_audio` verwenden.
## OBS und Discord
In OBS unter **Einstellungen > Audio > Erweitert**:
- Audiomonitoring-Gerät: `DiscordMicMix`
In den erweiterten Audioeigenschaften:
- Mikrofon: `Monitor und Ausgabe`
- Soundboard und alle anderen Quellen: Monitoring aus
In Discord:
- Eingabegerät: `Discord-Mikrofon`
`DiscordMicMix` darf nicht als eigene OBS-Quelle aufgenommen werden. Auch der
physische Line-Out sollte nicht zusätzlich in OBS aufgenommen werden, da sonst
doppelte Signale oder Hall entstehen können.
## Pegel anpassen
Die Pegel und die Loopback-Latenz lassen sich über Umgebungsvariablen ändern:
```bash
DISCORD_MIC_VOLUME=110% \
DISCORD_SOUNDBOARD_VOLUME=70% \
DISCORD_SOUNDBOARD_LATENCY_MS=40 \
~/bin/streaming-audio.sh route
```
Standardwerte sind `115%`, `75%` und `30` Millisekunden.
## Hinweise zu `cleanup`
Das Skript sucht in `~/.config/pipewire/pipewire.conf.d` nach anderen
Konfigurationen, die Namen seiner virtuellen Geräte enthalten. Solche Dateien
werden nicht gelöscht, sondern mit dem Zusatz `.disabled-by-streaming-audio`
umbenannt. Falls dieser Name bereits existiert, wird eine freie nummerierte Variante
verwendet.
Vor dem ersten Einsatz auf einem anderen System empfiehlt es sich, die vorhandenen
PipeWire-Konfigurationen zu sichern und die Trefferbedingungen im Skript zu prüfen.