So wandeln Sie WAV in Base64 um
- Legen Sie eine
.wav-Datei auf dem Feld ab oder wählen Sie sie über die Dateiauswahl. - Spielen Sie sie in der Vorschau ab.
- Ausgabe als steht auf Data-URI. Für APIs wählen Sie Reines Base64 oder JSON, um Name, MIME-Typ und Größe mitzuliefern.
- Drücken Sie Ausgabe kopieren. Aufnahmen von mehr als ein paar Sekunden ergeben lange Strings; Als .txt speichern ist dann einfacher zu handhaben.
Wie groß ein Base64-WAV wird
Unkomprimiertes PCM lässt sich leicht berechnen: Abtastrate × Bytes pro Sample × Kanäle ergibt Bytes pro Sekunde. Addieren Sie den üblichen 44-Byte-Header und multiplizieren Sie für Base64 mit 4/3:
| Format | 1 Sekunde | 10 Sekunden | 1 Minute |
|---|---|---|---|
| 8 kHz, mono, 16 Bit (Telefon) | 21.392 Zeichen | 213.392 Zeichen | 1.280.060 Zeichen |
| 16 kHz, mono, 16 Bit (Sprache) | 42.728 Zeichen | 426.728 Zeichen | 2.560.060 Zeichen |
| 44,1 kHz, mono, 16 Bit | 117.660 Zeichen | 1.176.060 Zeichen | 7.056.060 Zeichen |
| 44,1 kHz, stereo, 16 Bit (CD) | 235.260 Zeichen | 2.352.060 Zeichen | 14.112.060 Zeichen |
| 48 kHz, stereo, 16 Bit | 256.060 Zeichen | 2.560.060 Zeichen | 15.360.060 Zeichen |
Dateien, die manche Apps aufnehmen, enthalten zusätzliche Chunks mit Metadaten, die tatsächlichen Größen können also etwas höher liegen.
WAV und Sprach-APIs
Spracherkennungsdienste nehmen häufig unkomprimiertes 16-Bit-PCM an, weil es verlustfrei dekodiert und keinen Codec braucht. Nehmen sie Audio inline in einem JSON-Request an, kommt es als Base64 hinein, zusammen mit Feldern, die Kodierung, Abtastrate und Kanalanzahl beschreiben. Diese Werte müssen zur Datei passen. Eine Stereo-Aufnahme mit 44,1 kHz, die als 16 kHz mono deklariert wird, liefert unsinnige Transkripte oder einen Fehler.
Sprachmodelle arbeiten typischerweise mit 16 kHz mono oder weniger. Wandeln Sie eine Stereo-Aufnahme in CD-Qualität vor dem Kodieren in 16 kHz mono um, wird der Request etwa fünfeinhalbmal kleiner, meist ohne die Erkennung zu verschlechtern. Erledigen Sie das in einem Audio-Editor oder mit einem Kommandozeilen-Konverter; diese Seite kodiert die Datei so, wie sie ist.
Ist das Inline-Limit für eine lange Aufnahme immer noch zu klein, akzeptieren diese Dienste meist auch einen Link auf eine Datei im Speicher, und dieser Weg kommt ganz ohne Base64 aus.
Ein WAV in Python erzeugen und kodieren
Die Standardbibliothek kann ein WAV schreiben und kodieren, praktisch für Testdaten. Dieser Code erzeugt einen Piepton von 200 ms bei 880 Hz:
import base64, io, math, struct, wave
rate = 8000
samples = b"".join(
struct.pack("<h", int(12000 * math.sin(2 * math.pi * 880 * i / rate)))
for i in range(rate // 5)
)
buf = io.BytesIO()
with wave.open(buf, "wb") as w:
w.setnchannels(1)
w.setsampwidth(2)
w.setframerate(rate)
w.writeframes(samples)
uri = "data:audio/wav;base64," + base64.b64encode(buf.getvalue()).decode()
Die Datei hat 3.244 Bytes und die Data-URI 4.350 Zeichen, beginnend mit data:audio/wav;base64,UklGRqQMAABXQVZF. Mehr zu Dateien und Streams unter Base64 in Python.
Der Rückweg
Base64 in WAV spielt einen Base64-WAV-String ab und speichert ihn als Datei. Um Audio für das Web zu verkleinern, nehmen Sie ein komprimiertes Format; Größenvergleiche finden Sie unter MP3 in Base64.
Häufige Fragen
Warum ist mein WAV-Base64 so lang?
WAV speichert meist rohe PCM-Samples ohne Kompression. Eine Sekunde Stereo in CD-Qualität sind 176.400 Bytes Audio oder 235.260 Base64-Zeichen einschließlich Header. Die Umwandlung in Mono und eine niedrigere Abtastrate verkürzt das erheblich.
Heißt es audio/wav oder audio/x-wav?
Beides ist im Umlauf, und Browser spielen beides ab. audio/wav ist die übliche Wahl; manche älteren Systeme senden audio/x-wav oder audio/wave. Das Tool verwendet den Typ, den Ihr Browser meldet.
Was bedeuten die ersten Zeichen eines WAV in Base64?
UklGR ist der Header des RIFF-Containers, den auch WebP und AVI verwenden. Das Tag WAVE erscheint als XQVZF an den Zeichen 12 bis 16, und Zm10 direkt danach ist der Chunk fmt .