Audioaufnahme

Ab Android 5.0 (Lollipop) basieren die Audio-Resampler nun vollständig auf zu FIR-Filtern, die von einer Kaiser-Fenster-Sinc-Funktion abgeleitet wurden. Der Kaiser im Fenster bietet folgende Eigenschaften:

  • Die Berechnung der Entwurfsparameter (Stoppband Wellen, Übergangsbandbreite, Grenzfrequenz oder Filterlänge).
  • Sie ist fast optimal, um die Stoppbandenergie im Vergleich zum Gesamtbetrieb zu reduzieren. Energie.

Siehe P.P. Vaidyanathan, Multirate Systems and Filter Banks, S. 50 für Diskussionen über die Kaiserfenster und seine Optimität und Beziehung zu Prolat sphäridal Windows

Die Designparameter werden automatisch anhand interner Qualitätsbestimmung und die gewünschten Stichprobenverhältnisse. Basierend auf den Designparameter wird der Windowed-Sinc-Filter generiert. Für Musik: wird der Resampler für 44,1 bis 48 kHz mit einer höheren als bei der Konvertierung mit beliebiger Häufigkeit.

Die Audio-Resampler sorgen für bessere Qualität und Geschwindigkeit um diese Qualität zu erreichen. Resampler können jedoch kleine Mengen des Pasband-Ripples und des Aliasing harmonischen Rauschens. Dies kann zu erheblichen im Übergangsband verschlechtern. Vermeiden Sie daher eine unnötige Verwendung.

Best Practices für die Stichprobenerhebung und das Sampling

In diesem Abschnitt werden einige Best Practices beschrieben, mit denen Sie Probleme mit Stichprobenraten vermeiden können.

Abtastrate für das Gerät auswählen

Im Allgemeinen ist es am besten, die Sampling-Rate für das Gerät auszuwählen, normalerweise 44,1 kHz oder 48 kHz. Verwendung einer Abtastrate größer als 48 kHz führt in der Regel zu einer geringeren Qualität, da ein Resampler zum Abspielen der Datei verwendet wird.

Einfaches Resampling verwenden Verhältnisse (feste im Vergleich zu interpolierten Polylinien)

Der Resampler wird in einem der folgenden Modi ausgeführt:

  • Festgelegter Polylinienmodus. Die Filterkoeffizienten für jede Polylinie werden vorausberechnet.
  • Interpolierter Polylinienmodus. Die Filterkoeffizienten für jede Polylinie müssen von den nächsten beiden vorausberechneten Polylinien interpoliert werden.

Der Resampler ist im Modus mit fester Mehrphase am schnellsten, wenn das Verhältnis der Eingabe Raten über Ausgaberate L/M (größte gemeinsame Teiler ermitteln) hat M kleiner als 256. Beispiel: Für eine Conversion von 44.100 bis 48.000 gilt: L = 147, M = 160.

Im Modus mit fester Polylinie ist die Abtastrate gesperrt und ändert sich nicht. In interpoliert im Polylinienmodus ist die Abtastrate annähernd genau. Bei der Wiedergabe auf einem 48-kHz-Gerät ist die Abtastrate Drift ist im Allgemeinen eine Stichprobe über mehrere Stunden hinweg. Dies stellt normalerweise kein Problem dar, Der Näherungsfehler ist viel kleiner als der vom internen Quarz bereitgestellten Häufigkeitsfehler. Oszillatoren, thermische Abweichung oder Jitter (normalerweise 10 ppm)

Wählen Sie bei der Wiedergabe Abtastraten mit einfachem Verhältnis wie 24 kHz (1:2) und 32 kHz (2:3) aus. auf einem 48-kHz-Gerät, auch wenn Raten und Seitenverhältnisse können über AudioTrack zulässig sein.

Verwenden Sie anstelle von Upsampling als Downsampling, um die Stichprobenraten

Abtastraten können spontan geändert werden. Der Detaillierungsgrad der basiert eine solche Änderung auf der internen Pufferung (normalerweise ein paar Hundert Stichproben) und nicht auf Stichprobenbasis. Dies kann für Effekte verwendet werden.

Ändern Sie die Abtastraten nicht dynamisch, das Downsampling. Wenn Sie die Abtastrate ändern, nachdem ein Audiotrack können Abweichungen von etwa 5 bis 10 Prozent vom ursprünglichen Preis beim Downsampling eine neue Filterberechnung auslösen (um Aliasing). Dies kann Rechenressourcen verbrauchen und zu einem hörbaren Klick führen wenn der Filter in Echtzeit ersetzt wird.

Downsampling auf maximal 6:1 beschränken

Das Downsampling wird in der Regel durch Anforderungen an Hardwaregeräte ausgelöst. Wenn der Parameter Der Sample Rate Converter wird für Downsampling, Versuchen Sie, das Downsampling-Verhältnis auf maximal 6:1 zu beschränken, um ein gutes Aliasing zu gewährleisten. suppression (z. B. nicht größer als 48.000 bis 8.000). Der Filter passen sich die Längen an das Downsampling-Verhältnis an, Sie geben jedoch mehr auf. bei höheren Downsampling-Verhältnissen Bandbreite übergangen, um übermäßige wenn Sie die Filterlänge erhöhen. Es gibt keine ähnlichen Aliasing-Bedenken für Upsampling. Einige Teile der Audiopipeline kann ein Downsampling von mehr als 2:1 verhindern.

Wenn Sie Bedenken wegen der Latenz haben, führen Sie kein Resampling durch.

Durch Resampling wird verhindert, dass der Titel in FastMixer platziert wird. -Pfad, was bedeutet, dass eine erheblich höhere Latenz aufgrund der zusätzlichen, im normalen Mixer-Pfad enthalten. Außerdem eine implizite Verzögerung von der Filterlänge des Resamplers, Üblicherweise etwa eine Millisekunde oder weniger, Das ist nicht so groß wie die zusätzliche Zwischenspeicherung für den normalen Mixer-Pfad. (normalerweise 20 Millisekunden).

Gleitkomma-Audio verwenden

Die Verwendung von Gleitkommazahlen zur Darstellung von Audiodaten kann die Audioqualität erheblich verbessern hochleistungsfähigen Audioanwendungen. Gleitkommazahlen bieten Folgendes: Vorteile:

  • Breiterer Dynamikumfang
  • Konstante Genauigkeit über den gesamten dynamischen Bereich hinweg.
  • Mehr Spielraum für die Vermeidung von Überschnitten bei Zwischenberechnungen und Transienten.

Gleitkommazahlen können die Audioqualität zwar verbessern, haben aber auch einige Nachteile:

  • Gleitkommazahlen verbrauchen mehr Arbeitsspeicher.
  • Gleitkommaoperationen verwenden unerwartete Eigenschaften. So kann z. B. Addition nicht assoziativ.
  • Bei Gleitkommaberechnungen kann die arithmetische Genauigkeit aufgrund von Rundungs- oder numerisch instabilen Algorithmen.
  • Die effektive Verwendung von Gleitkommazahlen erfordert ein größeres Verständnis, um genaue und reproduzierbare Ergebnisse.

Früher waren Gleitkommazahlen berüchtigt dafür, dass sie nicht verfügbar oder langsam waren. Dies ist auch für Low-End- und eingebettete Prozessoren. Prozessoren auf modernen Mobilgeräte haben jetzt Hardware-Gleitkommazahlen mit einer Leistung, die ähnlich (oder in einigen Fällen sogar schneller) als Integer. Moderne CPUs unterstützen auch SIMD (eine Anweisung, mehrere Daten), die die Leistung weiter verbessern kann.

Best Practices für Gleitkomma-Audioinhalte

Die folgenden Best Practices helfen Ihnen, Probleme bei Gleitkommaberechnungen zu vermeiden:

  • Gleitkommazahlen mit doppelter Genauigkeit für seltene Berechnungen verwenden, wie die Berechnung der Filterkoeffizienten.
  • Achten Sie auf die Reihenfolge der Vorgänge.
  • Deklarieren Sie explizite Variablen für Zwischenwerte.
  • Verwenden Sie möglichst viele Klammern.
  • Wenn Sie ein NaN- oder unendliches Ergebnis erhalten, verwenden Sie die binäre Suche, um wo es eingeführt wurde.

Bei Gleitkomma-Audio: Die Audioformatcodierung AudioFormat.ENCODING_PCM_FLOAT wird ähnlich verwendet wie ENCODING_PCM_16_BIT oder ENCODING_PCM_8_BIT zum Angeben AudioTrack-Daten Formaten. Die entsprechende überlastete Methode AudioTrack.write() verwendet ein Float-Array, um Daten zu liefern.

Kotlin

fun write(
        audioData: FloatArray,
        offsetInFloats: Int,
        sizeInFloats: Int,
        writeMode: Int
): Int

Java

public int write(float[] audioData,
        int offsetInFloats,
        int sizeInFloats,
        int writeMode)

Weitere Informationen

In diesem Abschnitt werden einige zusätzliche Ressourcen zu Stichproben und Gleitkommazahlen aufgeführt.

Abtastung

Abtastraten

Erneute Stichprobennahme

Die Kontroverse mit hoher Bittiefe und hohem kHz-Wert

Gleitkommawert

Die folgenden Wikipedia-Seiten sind hilfreich für das Verständnis von Gleitkommaaudio:

Der folgende Artikel enthält Informationen zu den Aspekten von Gleitkommazahlen, direkten Einfluss auf die Designschaffenden von Computersystemen: