2 Stimmen

Was sind lineare PCM-Werte

Ich arbeite mit Audio im iPhone OS und bin etwas verwirrt.

Ich erhalte derzeit Eingaben aus meinem Audiopuffer in Form von pcm-Werten im Bereich von -32767 bis 32768. Ich hoffe, eine dbSPL-Konvertierung mit der Formel 20LOG10(p/pref) durchzuführen.

Ich weiß, dass pRef 0,00002 Pascal beträgt, und möchte die pcm-Werte in Pascal umrechnen.

Meine Frage ist a) Was repräsentieren diese pcm-Werte genau? b) Wie kann ich diese Werte in Pascal umwandeln?

Vielen Dank

3voto

Jim Lewis Punkte 41707

Sie können diese Konvertierung ohne zusätzliche Informationen nicht durchführen. Die Zuordnung von PCM-Werten zu physikalischen Druckeinheiten (Pascal) hängt von der Lautstärkeeinstellung, den Eigenschaften des Ausgabegeräts (Kopfhörer? ein PA-System?) und der Position des Betrachters in Bezug auf das Ausgabegerät (direkt neben dem Lautsprecher? 100 Meter entfernt?) ab.

Um den ersten Teil Ihrer Frage zu beantworten: Wenn Sie den Schalldruck über die Zeit für beispielsweise einen 1 kHz Sinuston graphisch darstellen würden, wären die linear quantisierten PCM-Werte zu den Abtastzeiten grob proportional zu den Schalldruckvariationen von der Umgebungslautstärke in diesem Moment. ("Großzügig", weil Eingabe- und Ausgabegeräte selten über absolut flache Antwortkurven im gesamten Audiofrequenzbereich verfügen.)

2voto

Scott Stensland Punkte 24643

Lassen Sie uns ein Gefühl für die Frage bekommen

Was genau repräsentieren diese PCM-Werte (im Bereich von -32767 bis 32768)

Audio ist einfach eine Kurve, die über und unter einer Nulllinie schwankt ... wenn die Kurve lang genug an oder in der Nähe der Nulllinie sitzt, wird dies zu Stille führen ... weder die Lautsprecheroberfläche noch das Trommelfell wackeln ... alternativ, wenn die Audio-Kurve für eine längere Zeit von Maximalwert zu Minimalwert heftig schwankt, haben Sie in der Regel maximale Lautstärke und damit einen höheren Pascal-Wert

Audio, das Ihr Ohr hört, ist analog ... um Audio zu digitalisieren, muss diese analoge Kurve in binäre Daten umgewandelt werden, indem die Roh-Audiokurve gesampelt wird, um die Kurvenhöhe bei X Samples pro Sekunde aufzuzeichnen ... das grundlegende digitale Format für Audio ist PCM, das diese kontinuierliche, ununterbrochene analoge Kurve einfach in verschiedene Punkte auf einem Graphen abbildet ... PCM-Audio erscheint immer noch als Kurve, aber wenn Sie hineinzoomen, sind es nur verschiedene Punkte auf der Kurve ... jeder Kurvenpunkt hat seinen X- und Y-Wert, wobei X die Zeit (von links nach rechts) und Y die Amplitude (von oben nach unten) repräsentiert ... jedoch werden nur die Y-Werte gespeichert und die X-Werte sind impliziert, was bedeutet, dass jeder aufeinanderfolgende Y-Wert per Definition in der Zeit getrennt ist, die durch die Abtastrate bestimmt wird. So haben Sie für eine Sekunde mit einer Abtastrate von 44100 Hertz 44100 Y-Werte pro Sekunde der Aufnahme (pro Kanal)

Die Anzahl der X-Messungen pro Sekunde nennen wir Abtastrate (oft 44.100 pro Sekunde) ... die Anzahl der verwendeten Bits zur Aufzeichnung der Fidelität von Y nennen wir Bit-Tiefe ... wenn wir 3 Bits verwenden, muss das Universum der möglichen Y-Werte in einer dieser Reihen passen

0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 0

für 3 Bits beträgt die Anzahl der möglichen Werte von Y 2^3 oder 8 verschiedene Werte, die sehr verzerrt klingen, da die Audio-Kurve weit von kontinuierlich entfernt ist, weshalb Audioqualität bei CDs zwei Bytes (16 Bits) an Informationen verwendet, um den Wert der Kurvenhöhe Y aufzuzeichnen, was 2^16 unterschiedliche Y-Werte ergibt, die der Skala entsprechen, die Sie uns gegeben haben (-32767 bis 32768) ... 2^16 == 65536 verschiedene Y-Werte ... die ursprüngliche kontinuierliche, ununterbrochene analoge Audio-Kurve ist nun digitalisiert in 2^16 Auswahlmöglichkeiten von Höhenwerten von oben nach unten der Audio-Kurve, die für das menschliche Ohr nicht mehr vom Ausgangs-Audio-Kurve zu unterscheiden sind ... bei der Durchführung von Audio-Berechnungen mit Gleitkomma wird oft der Y-Wert normalisiert ... auf z. B. einen Bereich von -1,0 bis +1,0 ... anstelle von (-32767 bis 32768)

Es sollte jetzt klar sein, dass das Herz Ihrer Frage bezüglich Pascals (Einheit des Drucks) orthogonal zum Y-Wertebereich (Bit-Tiefe) ist und stattdessen eine Funktion der Form der Audio-Kurve zusammen mit der reinen Fläche der Lautsprecheroberfläche ist ... für eine bestimmte Auswahl von Frequenz(en) wird der Grad, in dem die Audio-Kurve der kanonischen Sinuskurve dieser Frequenz entspricht, während sie den gesamten Bereich der möglichen Y-Werte nutzt, die Amplitude (Lautstärke) maximieren und somit den Pascal-Wert erhöhen

1voto

Deine Frage betrifft weder "iphone", "objective-c" noch "objective-c++". Aber sie kann sehr einfach beantwortet werden: http://de.wikipedia.org/wiki/Puls-Code-Modulation

Grüße

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X