feat(audio): Audio-Sinks oto und null mit eigener WAV-Dekodierung

Sink-Vertrag Play/Name; oto-Sink (github.com/ebitengine/oto/v3, auf
v3.5.0 gepinnt — aktuelle stabile Major-Version; purego statt CGO, damit
cross-compilierbar) spielt RIFF/WAVE-PCM blockierend, ein Context pro
PCM-Format gecacht, da oto nur einen Kontext pro Prozess erlaubt.
null-Sink verwirft (CI/Server/Tests) und loggt optional. WAV-Parser
(RIFF-Chunks, PCM 8/16 Bit, Float32) mit klarer Fehler für alles andere.
Echte Wiedergabe nur hinter TALK_TEST_REAL_AUDIO=1.
This commit is contained in:
m3ta-chiron committed 2026-10-18 15:39:09 +02:00
1 parent 5f450ea015
commit 523e6f4bf2
7 files changed
+439 -4

No files matched your search

+3 -3
View File
@@ -1,5 +1,5 @@
// Package audio implementiert die Audio-Ausgabe von talk über das
// Sink-Interface: Playback embedded via oto (PCM/WAV) und ein null-Sink,
// das verwirft (CI, Server, Tests). Auswahl per Config audio.sink.
// Implementierung folgt in Task 02.
// Sink-Interface: Playback embedded via oto (RIFF/WAVE-PCM) und ein
// null-Sink, das verwirft (CI, Server, Tests). Auswahl per Config
// audio.sink = "oto" | "null" (Default oto).
package audio