PROTOKOLL / EIN SEKUNDENBLOCK

Von Sprache zu Stegobabble3200 und zurück

Die Portierung übernimmt die eingefrorenen Audiomodelle und das exakte benutzerdefinierte 3.200/6.400-Transportprofil der Stegophone-3200-Vorlage.

1. Sprachvorbereitung und Codec2

Mehrkanalige Eingaben werden gemittelt, mit einem Kaiser-FIR-Polyphasenfilter auf 16 kHz resampelt und in PCM16 gespeichert. Die letzte Sekunde wird bei Bedarf mit Nullsamples aufgefüllt. Danach folgt dieselbe 2:1-FIR-Abtastsenkung auf 8 kHz wie im Original.

160 Samples @ 8 kHz = 20 ms
Codec23200: 160 Samples → 8 Bytes
50 Pakete = 400 Bytes = 3200 Bits pro Sekunde

Der Codec-Zustand bleibt über die gesamte Aufnahme bestehen. Jede unabhängige Encode-/Decode-Operation startet mit einer frischen WASM-Instanz, entsprechend den frischen Prozessen der Vorlage.

2. Turbocode und öffentliche Verteilung

Zwei rekursive systematische 16-Zustands-Komponenten starten im Nullzustand. Der zweite Encoder sieht die permutierten Nutzbits. Abwechselnde Paritäten ergeben exakt Rate 1/2.

mother = (u₀,pA,0,u₁,pB,1,u₂,pA,2,…)
r = mother ⊕ PN17
cⱼ = r(173j+29) mod 6400

Die PN-Folge startet jede Sekunde neu. Sie ist öffentlich und keine Verschlüsselung. Die acht kodierten Tail-Symbole werden nicht übertragen.

3. Generator und tatsächliche PCM16-WAV

Die 6.400 Bits werden in zehn Gruppen à 640 Bits aufgeteilt. Jede Gruppe hat die Form 10×64 und erzeugt 1.600 signed Samples. Zehn Aufrufe ergeben eine Sekunde bei 16 kHz.

G: {0,1}10×64 → [−1,1]1600
PCM16 = floor(clip(G,−1,32767/32768)·32768)

Genau diese integerquantisierten Samples werden als WAV gespeichert, heruntergeladen und später analysiert. Es gibt keinen Weg über unquantisierte Generatorausgaben zum Decoder.

4. Empfänger ohne Senderwissen

Der Analyzer liest 1.600er-Sampleblöcke aus der WAV und liefert 640 Logits. Nach inverser physischer Permutation und PN-Rücknahme wird jede Sekunde separat turbo-decodiert.

ℓᵢ = log(P(cᵢ=1)/P(cᵢ=0))
Lᵢ = −ℓᵢ
û = LogMAPmax.12(L)

Wiederhergestellte Codec2-Pakete werden mit frischem Decoderzustand synthetisiert. Die Referenzen fließen erst danach in Fehlerzählung und PCM-Vergleich ein.

Aufnahmelänge und Dateiformat

Ein unabhängiger Träger enthält nur ganze Transportsekunden. Die ursprüngliche Länge der Sprachaufnahme ist darin nicht enthalten. Bei lokal erzeugten Trägern kann die Wiedergabe anhand der getrennten Sitzungsmetadaten gekürzt werden. Ein importierter Träger wird vollständig ausgegeben.

Trägerimports bleiben strikt mono/PCM16/16 kHz mit ganzzahliger Sekundenzahl. Automatisches Resampling wäre hier eine Veränderung der Kanalprobe. Es existiert kein eingebetteter Synchronisationsmarker.