Einführung in die Audiocodierung

Eine 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 Codierungs- oder Abtastratenwert 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 Die MP3-Codierung ist eine Beta-Funktion und nur in v1p1beta1 verfügbar. Weitere Informationen finden Sie in der Referenzdokumentation 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 muss Audio codiert werden?

Audiodaten bestehen aus den Wellenformen unterschiedlicher Frequenzen und Amplituden. Um diese Wellenformen in digitalen Medien darzustellen, 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 auch 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 werden oft zusammen als die Qualität (Fidelity) eines Audiogeräts bezeichnet. Die Codierung ist vereinfacht ausgedrückt ein Mittel, mit dem Ton unter Verwendung dieser beiden Grundprinzipien rekonstruiert werden kann. Eine Codierung bietet auch die Möglichkeit, diese Daten effizient zu speichern und zu übertragen.

Abtastraten

Der Ton liegt in Form einer analogen 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 wieder, die aus dem Audioquellmaterial entnommen werden können. Die Zahl der Samples pro Sekunde wird Abtastrate genannt. Eine hohe Abtastrate erhöht die Fähigkeit der digitalen Audiodateien, hohe Frequenzen originalgetreu wiederzugeben.

Das Nyquist-Shannon-Abtasttheorem besagt, dass für eine digitale Erfassung mindestens die höchste Frequenz jeder Schallwelle doppelt abgetastet werden muss. Um Audioaufnahmen im Bereich des menschlichen Gehörs (20-20.000 Hz) wiedergeben zu 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 jeden 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 aufweisen. Bestimmte Kompressionstechniken 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önnen Sie alle 16 Bit (2 Byte) abzählen, um beispielsweise einen weiteren Amplitudenwert der Wellenform zu erhalten. Fast alle Geräte können digitale Daten nativ bearbeiten. Sie 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 Kompressionstechniken.

Komprimierte Audiodaten

Audiodaten sind meistens wie alle anderen Daten komprimiert. Dies vereinfacht die Übertragung und das Speichern der Daten. Die Kompression von Audiocodierungen kann verlustfrei oder verlustbehaftet erfolgen. Eine verlustfreie Kompression lässt sich entpacken und stellt die digitalen Daten in ihrer ursprünglichen Form wieder her. Eine verlustbehaftete Kompression entfernt während der Kompression und Dekompression einige Informationen. Das Entfernen dieser Informationen wird über Parameter gesteuert, die angeben, welche Toleranz eine Kompression bei der Entfernung von Daten anwenden soll.

Verlustfreie Kompression

Eine verlustfreie Kompression 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 Kompression findet beim Entpacken der Daten in ihre ursprüngliche digitale Form kein Informationsverlust statt.

Verlustfreie Kompressionstechniken verfügen dennoch über Optimierungsparameter. Häufig definieren diese Parameter Kompromisse zwischen Dateigröße und Dekompressionszeit. FLAC verwendet beispielsweise Kompressionsstufenparameter zwischen 0 (am schnellsten) und 8 (kleinste Dateigröße). Höhere FLAC-Kompressionsstufen verlieren ebenso wie niedrigere keinerlei Informationen. Bei den höheren Kompressionsstufen erfordert der Kompressionsalgorithmus lediglich mehr Rechenleistung bei der Zusammenstellung oder beim Rückbau 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 Kompression

Die verlustbehaftete Kompression 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-Kompressionsmethoden entfernen Audiosignale, die außerhalb des menschlichen Hörbereichs liegen. Sie passen den Grad der Kompression 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-Kompression 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.

Andere Kompressionsformen parametrisieren einige andere Beschränkungen.

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-Kompression 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. Obwohl der Verlust solcher Daten aufgrund einer verlustbehafteten Kompression vom menschlichen Ohr möglicherweise nicht wahrnehmbar ist, kann sich die Genauigkeit der Spracherkennung von digitalen Systemen dadurch deutlich verschlechtern.