Samozřejmě by to šlo také zařídit přes standardní roury do arecord a příkaz tee, ale má to mouchy.
Z hloupého bajtstreamu není patrno, kde začíná audioframe, takže pokud se rozhodí synchronizace se začátkem streamu, už se neobnoví. Gstreamer si interně samozřejmě posílá správně zarovnané pakety, takže nic takového nehrozí.
Jako player do roury by to stejně chtělo něco, co dělá adaptivní resampling mezi příchozím streamem a hodinami zvukovky. gstreamer/mplayer/asi mpd by to měly umět, všechny umí výstup přímo do stdout.
Ale i tak jsou roury + tee čuňárna, korektní řešení je napojit se do nějaké pipeliny zpracovávající audiostream (gstreamer, ale asi by to šlo i přes pipewire nebo pulseaudio). Vlastní nahrávadlo, které kešuje x sekund audia a nahraje to na disk do korektního formátu (aspoň wav, lepší flac), asi bude nutné napsat. Jak jsem již zmínil, v pythonu by to nemělo být nic zásadně složitého, na vše z toho jsou knihovny a ukázky.
Možná nakonfigurovat odbočku v pipewire/pulseaudiu a nahrávat v pythonu z ní by nemuselo byt tak složité, jako gst v pythonu (s tím jsem musel docela divoce laborovat, dokumentace detailů je spíše formou mailinglistu gstreameru :-) ).