So dekodieren Sie Base64 in WAV
- Fügen Sie das Base64 in Base64 oder Data-URI ein. Ein Präfix
data:audio/wav;base64,oderdata:audio/x-wav;base64,ist kein Problem. - Spielen Sie es im Player ab. Dauer zeigt die Länge in Minuten und Sekunden.
- Klicken Sie auf Hex-Dump anzeigen, um die ersten 512 Bytes zu sehen; der nächste Abschnitt erklärt, worauf Sie achten sollten.
- Mit Datei herunterladen speichern Sie die .wav-Datei.
Dekodierung und Wiedergabe laufen im Browser. Die Seite darf außer dem Seitenaufrufzähler von Cloudflare keine Daten über das Netzwerk senden, Sprachaufnahmen bleiben also auf Ihrem Gerät.
Den WAV-Header im Hex-Dump lesen
Eine WAV-Datei beginnt mit einem 12 Byte langen RIFF-Header, meist direkt gefolgt vom Chunk fmt , der das Audio beschreibt. Im Hex-Dump verraten diese Positionen, was Sie vor sich haben:
| Offset (hex) | Bytes | Feld | Beispiel: 16 kHz Mono-PCM |
|---|---|---|---|
00 | 4 | RIFF | 52 49 46 46 |
08 | 4 | WAVE | 57 41 56 45 |
14 | 2 | Formatcode | 01 00 |
16 | 2 | Kanäle | 01 00 (Mono) |
18 | 4 | Abtastrate | 80 3e 00 00 (16.000) |
22 | 2 | Bits pro Sample | 10 00 (16) |
Alle Zahlen sind Little-Endian, 80 3e 00 00 ist also 0x3e80, das sind 16.000. Der Formatcode entscheidet, ob der Browser die Datei abspielen kann:
| Formatcode | Codec | Spielt in Chrome |
|---|---|---|
01 00 | PCM | Ja |
03 00 | 32-Bit-Float | Ja |
06 00, 07 00 | A-law, µ-law (Telefonie) | Ja |
02 00, 11 00 | Microsoft ADPCM, IMA ADPCM | Nein |
31 00 | GSM 6.10 | Nein |
fe ff | Extensible: Der eigentliche Codec steht weiter hinten im Chunk, meist PCM | Ja bei PCM |
Jeder Browser spielt PCM ab, die Unterstützung der anderen Codecs ist aber unterschiedlich; testen Sie also in dem Browser, den Ihre Zuhörer nutzen. Kann der Browser eine Datei nicht dekodieren, erscheint der Hinweis „Ihr Browser kann diese WAV-Datei nicht abspielen.“, und Dauer zeigt „k. A.“. Der Download ist trotzdem die richtige Datei, und Desktop-Player wie VLC beherrschen all diese Codecs.
Auch die Länge ergibt sich aus dem Header: Die Dauer ist die Größe des Daten-Chunks geteilt durch Abtastrate × Kanäle × Bytes pro Sample. Zwei Sekunden 16-kHz-Mono-Audio mit 16 Bit sind 64.000 Bytes Samples plus ein Header von mindestens 44 Bytes.
Rohes PCM ohne Header
Sprach- und Voice-APIs liefern Audio oft als nackte 16-Bit-PCM-Samples mit 16 oder 24 kHz, ohne RIFF-Header. Diese Bytes tragen keine Signatur, daher meldet das Tool „Erwartet: WAV, erkannt: Binärdaten.“, und kein Player spielt sie ab, selbst wenn sie mit der Endung .wav gespeichert werden. Verpacken Sie sie in einen Header mit Abtastrate, Kanalzahl und Sample-Größe aus der API-Dokumentation:
import base64, wave
with open("speech.b64") as f:
pcm = base64.b64decode(f.read())
with wave.open("speech.wav", "wb") as w:
w.setnchannels(1)
w.setsampwidth(2)
w.setframerate(24000)
w.writeframes(pcm)
setsampwidth(2) bedeutet 16-Bit-Samples. Zwei Sekunden 24-kHz-Mono-Audio, also 96.000 Bytes PCM, werden zu einem WAV mit 96.044 Bytes, das mit UklGR beginnt und hier und in jedem Player abspielt. Klingt das Ergebnis zu schnell, zu langsam oder wie Rauschen, stimmt die Abtastrate oder das Sample-Format nicht; probieren Sie die anderen üblichen Raten oder prüfen Sie, ob die API stattdessen 8-Bit-µ-law sendet. Mehr unter Base64 in Python.
Andere Formate auf einer WAV-Seite
Sind die Daten ein anderes Audioformat, nennt das Tool es: „Erkannt: MP3, erwartet: WAV.“ kommt mit einer Schaltfläche Als .mp3 herunterladen, und der Player funktioniert trotzdem. WAV-Dateien sind groß, deshalb wechseln APIs und Apps oft zu MP3 oder Opus, um Platz zu sparen, während in der Dokumentation noch WAV steht. Zum Größenunterschied und zum Kodieren von WAV-Dateien siehe WAV in Base64; für alle Audioformate Base64 in Audio.
Häufige Fragen
Wie wandle ich Base64 in eine WAV-Datei um?
Fügen Sie das Base64 oben ein und klicken Sie auf Datei herunterladen; das Audio wird als decoded.wav gespeichert. Spielen Sie es vorher im Player ab, um sicherzugehen, dass es das Erwartete ist.
Mein Base64 sollte ein WAV sein, aber das Tool meldet Binärdaten. Warum?
Eine WAV-Datei beginnt mit RIFF (UklGR in Base64). Fehlt das, haben Sie höchstwahrscheinlich rohe PCM-Samples, wie sie viele Sprach-APIs liefern; ergänzen Sie einen Header mit der Abtastrate aus der API-Dokumentation, wie auf dieser Seite gezeigt.
Warum spielt ein WAV ab und ein anderes nicht?
WAV ist ein Container, und der Codec ist eine Zahl in seinem Header. Einfaches PCM spielt überall; ADPCM und GSM, verbreitet in alter Telefonie und Voicemail-Systemen, spielen in Browsern meist nicht. Wandeln Sie solche Dateien mit ffmpeg -i in.wav -c:a pcm_s16le out.wav um.