Einführung in die Audiocodierung

Der Begriff der Audiocodierung bezeichnet die Art und Weise, in der Audiodaten gespeichert und übertragen werden. Die nachfolgende Dokumentation beschreibt, wie solche Codierungen funktionieren. Richtlinien zur Auswahl der besten Codierung für Ihre Anwendung finden Sie unter Best Practices.

Die digitale Audiocodierung ist ein komplexes Thema. Im Allgemeinen brauchen Sie die Details zur Verarbeitung von Audiodaten innerhalb der Speech API nicht zu kennen. Die hier erläuterten Konzepte sollen Ihnen lediglich einen allgemeinen Überblick geben. Einige dieser Hintergrundinformationen können für das Verständnis der Funktionsweise der API und die Formatierung und Verarbeitung von Audiodaten in Ihren Anwendungen nützlich sein.

Audioformate im Vergleich zu Audiocodierungen

Beachten Sie, dass ein Audioformat nicht dasselbe ist wie eine Audiocodierung. Ein gängiges Dateiformat wie .WAV definiert beispielsweise das Format des Headers einer Audiodatei, ist aber selbst keine Audiocodierung. Bei .WAV-Audiodateien wird häufig, aber nicht immer, eine lineare PCM-Codierung verwendet. Sie können nicht davon ausgehen, dass eine .WAV-Datei eine bestimmte Codierung aufweist. Dazu müssen Sie den Header prüfen.

FLAC ist jedoch sowohl ein Dateiformat als auch eine Codierung, was gelegentlich zu einer gewissen Verwirrung führt. Innerhalb der Speech-to-Text API ist FLAC die einzige Codierung, bei der Audiodaten einen Header haben müssen. Bei allen anderen Audiocodierungen werden Audiodaten ohne Header angegeben. Wenn wir in der Speech-to-Text API auf FLAC verweisen, beziehen wir uns immer auf den Codec. Beim Verweis auf ein FLAC-Dateiformat verwenden wir die Formulierung "eine .FLAC-Datei".

Sie müssen die Codierung und Abtastrate von WAV- oder FLAC-Dateien nicht angeben. Sind sie nicht vorhanden, ermittelt Speech-to-Text die Codierung und die Abtastrate für WAV- oder FLAC-Dateien automatisch anhand des Dateiheaders. Wenn Sie einen Wert für Codierung oder Abtastrate angeben, der nicht mit dem Wert im Dateiheader übereinstimmt, gibt Speech-to-Text einen Fehler zurück.

Unterstützte Audiocodierungen

Die Speech-to-Text API unterstützt verschiedene Codierungen. In der nachstehenden Tabelle sind die unterstützten Audio-Codecs aufgelistet:

Codec Name Verlustfrei Hinweise zur Verwendung
MP3 MPEG Audio Layer III Nein Nur als Betaversion verfügbar. Weitere Informationen finden Sie in der Referenz zu RecognitionConfig.
FLAC Free Lossless Audio Codec Ja 16 Bit oder 24 Bit für Streams
LINEAR16 Linear PCM Ja 16-Bit-Codierung mit linearer Pulscodemodulation (PCM)
MULAW μ-law Nein 8-Bit-PCM-Codierung
AMR Adaptive Multi-Rate Narrowband Nein Abtastrate muss 8.000 Hz sein
AMR_WB Adaptive Multi-Rate Wideband Nein Abtastrate muss 16.000 Hz sein
OGG_OPUS Opus-codierte Audioframes in einem Ogg-Container Nein Die Abtastrate muss 8.000 Hz, 12.000 Hz, 16.000 Hz, 24.000 Hz oder 48.000 Hz betragen.
SPEEX_WITH_HEADER_BYTE Speex wideband Nein Abtastrate muss 16.000 Hz sein

Weitere Informationen zu den Audio-Codecs von Speech-to-Text finden Sie in der Referenzdokumentation zu AudioEncoding.

Wenn Sie bei der Codierung des Quellmaterials eine Wahl haben, verwenden Sie eine verlustfreie Codierung wie FLAC oder LINEAR16 für eine bessere Spracherkennung. Richtlinien für die Auswahl des Codecs, der für Ihre Aufgabe am besten geeignet ist, finden Sie unter Best Practices.

Warum Codierung?

Audiodaten bestehen aus den Wellenformen unterschiedlicher Frequenzen und Amplituden. Damit diese Wellenformen in digitalen Medien dargestellt werden können, müssen die Wellenformen mit Raten abgetastet werden, die zumindest Töne der höchsten Frequenz darstellen können, die Sie replizieren möchten. Zudem muss eine ausreichende Bittiefe gespeichert werden, um die richtige Amplitude der Wellenformen, d. h. die lauten und leisen Passagen, im gesamten Tonsample darzustellen.

Die Fähigkeit eines Audiogeräts, Frequenzen wiederzugeben, wird als Frequenzgang bezeichnet. Die Fähigkeit, laute und leise Passagen wiederzugeben, wird als Aussteuerungsbereich bezeichnet. Diese beiden Fähigkeiten zusammen bilden die Fidelity eines Audiogeräts. Die Codierung ist vereinfacht ausgedrückt ein Mittel, mit dem ein Schallereignis unter Verwendung dieser beiden Grundprinzipien rekonstruiert werden kann. Eine Codierung bietet auch die Möglichkeit, diese Daten effizient zu speichern und zu übertragen.

Abtastraten

Das Schallereignis liegt als analoge Wellenform vor. Ein Segment einer digitalen Audioaufnahme nähert sich dieser analogen Wellenform an, indem die Amplitude dieser analogen Welle mit einer ausreichend hohen Rate abgetastet wird, um die Frequenzen dieser Welle nachzubilden. Die Abtastrate eines digitalen Audiosegments gibt die Anzahl der Samples an, die aus dem Audioquellmaterial entnommen werden können. Die Zahl der Samples pro Sekunde wird als Abtastrate bezeichnet. Mit einer hohen Abtastrate lassen sich in digitalen Audiodateien hohe Frequenzen originalgetreuer wiedergeben.

Das Nyquist-Shannon-Abtasttheorem besagt, dass für eine digitale Erfassung mindestens die höchste Frequenz jeder Schallwelle doppelt abgetastet werden muss. Damit Schallereignisse im Bereich des menschlichen Gehörs (20–20.000 Hz) wiedergegeben werden können, muss ein digitales Audioformat mindestens 40.000 Mal pro Sekunde abtasten. Aus diesem Grund verwenden Audio-CDs eine Abtastrate von 44.100 Hz.

Bittiefen

Die Bittiefe beeinflusst den Aussteuerungsbereich eines bestimmten Tonsamples. Eine höhere Bittiefe ermöglicht eine genauere Darstellung der Amplituden. Wenn eine Audioaufnahme viele laute und leise Töne enthält, benötigen Sie eine höhere Bittiefe für die korrekte Wiedergabe der Töne.

Höhere Bittiefen reduzieren auch den Signal-Rausch-Abstand innerhalb eines Audiosamples. Audio-CDs mit Musik haben eine Bittiefe von 16 Bit. Das DVD Audio-Format verwendet eine Bittiefe von 24 Bit, während die meisten Telefoniegeräte eine Bittiefe von 8 Bit haben. Bestimmte Komprimierungstechniken kompensieren geringere Bittiefen, sind dann aber oft verlustbehaftet.

Nicht komprimierte Audiodaten

Die meisten digitalen Audioverarbeitungstechnologien nutzen diese beiden Methoden, Abtastrate und Bittiefe, um Audiodaten auf einfache Weise zu speichern. Eine der am häufigsten verwendeten digitalen Audiotechnologien wird als Pulscodemodulation (Pulse Code Modulation = PCM) bezeichnet. Diese Technologie wurde durch die Compact Disc bekannt. Dabei werden Audiodaten in festgelegten Intervallen abgetastet und die Amplitude der abgetasteten Welle wird an diesem Punkt als digitaler Wert mit der Bittiefe des Samples gespeichert.

Die lineare PCM, d. h. eine gleichbleibende Amplitudenantwort über das gesamte Sample hinweg, ist der Standard, der bei CDs verwendet wird. Auch bei der LINEAR16-Codierung der Speech-to-Text API wird er verwendet. Beide Codierungen produzieren einen nicht komprimierten Stream von Bytes, der den Audiodaten direkt entspricht. Beide Standards verwenden eine Bittiefe von 16 Bit. Die lineare PCM verwendet eine Abtastrate von 44.100 Hz für CDs, die für die Wiedergabe von Musik geeignet ist. Eine Abtastrate von 16.000 Hz ist dagegen eher für die Wiedergabe von Sprache geeignet.

Die lineare PCM (LINEAR16) ist ein Beispiel für die nicht komprimierte Audioaufnahme, da die digitalen Daten genau so gespeichert werden, wie es die oben erläuterten Standards vorsehen. Beim Lesen eines einkanaligen Streams von Bytes, der mit linearer PCM codiert wurde, könnten Sie beispielsweise alle 16 Bit (2 Byte) abzählen, um einen weiteren Amplitudenwert der Wellenform zu erhalten. Fast alle Geräte können digitale Daten nativ bearbeiten. Sie als Nutzer können lineare PCM-Audiodateien sogar in einem Texteditor zuschneiden. Aber nicht komprimierte Audioformate sind nicht besonders gut für die effiziente Übertragung oder Speicherung digitaler Audiodaten geeignet. Aus diesem Grund verwenden die meisten Audioanwendungen digitale Komprimierungstechniken.

Komprimierte Audiodaten

Wie alle anderen Daten sind auch Audiodaten meistens komprimiert. Dies vereinfacht ihre Übertragung und Speicherung. Die Komprimierung von Audiocodierungen kann verlustfrei oder verlustbehaftet erfolgen. Eine verlustfreie Komprimierung lässt sich entpacken und stellt die digitalen Daten in ihrer ursprünglichen Form wieder her. Eine verlustbehaftete Komprimierung entfernt während der Komprimierung und Dekomprimierung einige Informationen. Das Entfernen dieser Informationen wird über Parameter gesteuert, die angeben, welche Toleranz bei der Komprimierung für die Entfernung von Daten gelten soll.

Verlustfreie Komprimierung

Eine verlustfreie Komprimierung komprimiert digitale Audiodaten unter Verwendung komplexer Umordnungen der gespeicherten Daten, führt jedoch zu keiner Verschlechterung der Qualität des ursprünglichen digitalen Samples. Bei einer verlustfreien Komprimierung findet beim Entpacken der Daten in ihre ursprüngliche digitale Form kein Informationsverlust statt.

Verlustfreie Komprimierungstechniken haben dennoch Optimierungsparameter. Häufig definieren diese Parameter Kompromisse zwischen Dateigröße und Dekomprimierungszeit. FLAC verwendet beispielsweise Komprimierungsstufenparameter zwischen 0 (am schnellsten) und 8 (kleinste Dateigröße). Höhere FLAC-Komprimierungsstufen verlieren ebenso wie niedrigere keinerlei Informationen. Bei den höheren Komprimierungsstufen erfordert der Komprimierungsalgorithmus allerdings mehr Rechenleistung bei der Zusammenstellung oder der Rekonstruktion der ursprünglichen digitalen Audiodaten.

Die Speech-to-Text API unterstützt zwei verlustfreie Codierungen: FLAC und LINEAR16. Technisch gesehen ist LINEAR16 keine "verlustfreie Komprimierung", da keine Komprimierung stattfindet. Wenn die Dateigröße oder Datenübertragung für Sie wichtig sind, wählen Sie FLAC als Audiocodierung.

Verlustbehaftete Komprimierung

Die verlustbehaftete Komprimierung komprimiert Audiodaten, indem bestimmte Informationen bei der Zusammenstellung der komprimierten Daten entfernt oder reduziert werden. Die Speech-to-Text API unterstützt mehrere verlustbehaftete Formate. Diese sollten Sie aber vermeiden, wenn Sie mit Audiodaten arbeiten, da der Datenverlust die Erkennungsgenauigkeit beeinträchtigen kann.

Der beliebte Codec MP3 ist ein Beispiel für eine verlustbehaftete Codierung. Alle MP3-Komprimierungsmethoden entfernen Audiosignale, die außerhalb des menschlichen Hörbereichs liegen. Sie passen den Grad der Komprimierung an, indem sie die effektive Bitrate des MP3-Codecs oder die Anzahl der Bit pro Sekunde für das Speichern der Audiodaten ändern.

Zum Beispiel hat eine Stereo-CD mit linearer PCM von 16 Bit eine effektive Bitrate von:

    44100 * 2 channels * 16 bits = 1411200 bits per second (bps) = 1411 kbps
    

Die MP3-Komprimierung entfernt solche digitalen Daten mit Bitraten wie beispielsweise 320 kBit/s, 128 kBit/s oder 96 kBit/s, was zu einer Verschlechterung der Tonqualität führt. MP3 unterstützt auch variable Bitraten, wodurch Audiodaten noch weiter komprimiert werden können. Beide Techniken entfernen Informationen und können die Qualität beeinträchtigen. Viele Menschen erkennen beispielsweise den Unterschied zwischen mit 96 kBit/s und 128 kBit/s codierter MP3-Musik.

Bei anderen Komprimierungsformen werden jeweils eine oder mehrere andere Beschränkungen parametrisiert.

MULAW ist eine PCM-Codierung mit 8 Bit, bei der die Amplitude der Stichprobe logarithmisch statt linear moduliert wird. Als Ergebnis verringert uLaw den effektiven Aussteuerungsbereich der so komprimierten Audiodaten. Obwohl uLaw eingeführt wurde, um die Codierung von Sprache gegenüber anderen Audiotypen zu optimieren, ist das nicht komprimierte 16-Bit-PCM LINEAR16 der 8-Bit-uLaw-Komprimierung noch weit überlegen.

AMR und AMR_WB führen die Modulation von codierten Audiosamples aus, indem sie eine variable Bitrate auf das Audioquellsample anwenden.

Obwohl die Speech-to-Text API mehrere verlustbehaftete Formate unterstützt, sollten Sie deren Verwendung vermeiden, wenn Sie mit Audioquelldaten arbeiten. Auch wenn der Verlust solcher Daten durch verlustbehaftete Komprimierung für das menschliche Ohr möglicherweise nicht wahrnehmbar ist, kann sich die Genauigkeit der Spracherkennung von digitalen Systemen dadurch deutlich verschlechtern.