Loopback-Latenz eines Audio-CODECs?

Ich denke weit über ein mögliches zukünftiges Projekt nach, das unter anderem eine Art "DIY-Hörgerät" beinhalten wird. Mikrofone, die Ohrhörer mit etwas DSP dazwischen speisen, alles auf physisch kleinem Raum. Nicht weil ich schwerhörig bin, sondern um einen akustischen Tiefpass zu berücksichtigen, der durch einen anderen Teil des Projekts verursacht wird.

Ich habe einige Erfahrung mit digitalen Live-Audiosystemen, die eine Latenzzeit von etwa 1 ms von den ADCs über den (ziemlich komplizierten) DSP bis zu den DACs beanspruchen. Mit anderen Worten, ein Stereorecorder, der an einen Y-Splitter am ADC-Eingang für einen Aufnahmekanal und am DAC-Ausgang für den anderen Aufnahmekanal angeschlossen ist, würde zwischen ihnen einen Versatz von etwa 1 ms messen. (siehe Testschaltung unten)

Das ist für ein Konzert in Ordnung, wo Sie leicht einen größeren physischen Versatz als diesen (~ 1 Fuß) zwischen den Mikrofonen und Lautsprechern haben können, aber für mein Projekt betrachte ich höchstens mehrere Zoll.

Um also ein Gefühl dafür zu bekommen, wo ich feststecke und wie sehr ich meinen DSP-Code optimieren und überfordern muss, um in die verbleibende Zeit zu passen (kleine Puffer, sogar bis zu einem einzelnen Sample, nur um es JETZT herauszuholen!, was bedeutet, dass ich keine SIMD-Anweisungen verwenden kann - erhöhte Abtastrate, nicht für "audiophool" -Qualität, sondern nur um die Bearbeitungszeit zu verkürzen - usw.) , welche Latenz kann ich für einen typischen Audio-CODEC-Chip in dieser Testschaltung erwarten? :

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Ich erwarte mindestens 2 Samples, nur weil I2S funktioniert - vom ADC einrasten und verschieben, dann in den DAC verschieben und erneut einrasten -, aber ich stelle mir vor, dass die Konvertierungen selbst auch nicht sofort erfolgen.

Ich habe mir ein paar Datenblätter angesehen und kann zumindest bei den billigen keinen Parameter finden, der mir die Gesamtlatenz angibt. Für die beabsichtigte Anwendung von PC-Audio kann ich verstehen, dass es nicht wichtig ist, aber für dieses Projekt ist es irgendwie wichtig.

Nach welchen Parametern sollte ich in einem guten Datenblatt suchen? Und gibt es irgendwelche Faustregeln / Stammeswissen, die auch in Bezug auf Echtzeit-DSP nützlich wären, wo sich die Ausgabe nach einer kleinen Geschwindigkeitsverzögerung der ursprünglichen Eingabe mit der ursprünglichen Eingabe kombinieren könnte? (Einsen von Samples bei 48 kHz)


Natürlich spielt das alles keine Rolle, je nachdem, welchen akustischen Tiefpass ich am Ende habe, für den dieser DSP ein ergänzender Hochpass mit Wandlerkorrektur und Spitzenbegrenzung sein muss. Ich habe keine Ahnung, was das für ein akustischer Tiefpass sein wird, also suche ich nach genügend allgemeinen Informationen, um es zu gegebener Zeit bewerten zu können.

(Wenn die Übergangsfrequenz niedrig genug und steil genug ist (die Gesamtlatenz ist ein kleiner Bruchteil einer einzelnen Welle), kann dies alles ein strittiger Punkt sein; ich werde das Original sowieso nicht hören, wo es darauf ankommt Werfen Sie einfach einen vorgefertigten Code darauf und nennen Sie es gut. Oder die Frequenzweiche könnte hoch oder allmählich genug sein, dass es eine Rolle spielt ...)

Wie auch immer, ich suche nach genügend allgemeinen Informationen, die ich zu gegebener Zeit auswerten kann. Danke!

Warum nicht rein analog gehen, um die Phasenverschiebung mit der Entfernung zu messen, und einen grafischen Equalizer für kabelgebundene Ohrhörer verwenden. Dann wird die Latenz nur durch Ihre Elektronik begrenzt (nahe 0) und 10 bis 90 % Anstiegszeit = 35 % von BW 1/f. Was ist das Endergebnis?
Ein entzerrtes Spektrum welchen Mediums? Grafische Equalizer können ziemlich klein gemacht werden.
Wenn Sie es mit reinem Analog nicht zum Laufen bringen können, wird es mit einem DSP noch schwieriger.
Der digitale Filter im DAC/ADC fügt ebenfalls eine erhebliche Latenz hinzu. Könnte mit einem SAR-ADC besser dran sein oder den Bitstrom aus dem Sigma-Delta direkt verwenden.
@ TonyStewartEE75 Ja, es wäre rein analog möglich, und das war meine ursprüngliche Idee, aber ich kann nicht physisch darauf zugreifen, während es läuft, daher ist auch eine Art Ferneinstellung erforderlich. (Theoretisch nahe kommen, dann "live" finalisieren) Das lässt sich ganz einfach zu einem digitalen Design hinzufügen, stellt aber eine ziemlich große Zunahme der Komplexität und stark eingeschränkte Optionen im Analogbereich dar, da nicht alle Topologien einfach oder überhaupt möglich sind elektrisch zu verstellen. (DAC-gespeiste VCAs und Digipots können nur so viel)
Dann stellen Sie fest, dass Sie nicht an alle Optionen gedacht haben, die Sie wirklich brauchen, und Sie müssen ein ganz anderes Board bauen, um sie zu bekommen, anstatt nur einen Chip neu zu programmieren. Die Verwaltungsseite der Dinge wäre SO viel einfacher, wenn alles digital wäre, also versuche ich, einen Weg zu finden, die Nebenwirkungen akzeptabel zu machen, lange bevor ich mich zu irgendetwas verpflichte und den Rest des Designs darauf aufbaue.
Wenn die Antwort lautet, dass die Konvertierung von Natur aus zu lang ist, um dies auch ohne DSP-Code (gemäß meiner obigen Testschaltung) zum Laufen zu bringen , ist das in Ordnung, aber ich möchte, dass jemand das zeigt, wenn es wahr ist.
Ich wünschte, ich könnte Ihre Anwendung und Spezifikation sehen, die Sie im Sinn haben, und warum die Latenz für eine Phase von wenigen Zoll in Doppelmikrofonen wichtig ist. Soll das die Lücke zwischen den Ohren für besondere Schärfe simulieren?
@TonyStewartEE75 Es ist ein ziemlich kompliziertes Theaterkostüm, das den Kopf des Schauspielers bedeckt, daher der akustische Tiefpass. Ich möchte einfach ersetzen, was verloren geht, ohne Kammfilter. Warum das notwendig ist, um die Umlaufverzögerung eines ADC / DAC-Paares zu messen, weiß ich nicht. Wie gesagt, ich suche nach genügend Informationen, um es selbst zu bewerten, wenn die Zeit gekommen ist, die es definitiv noch nicht hat. Waaaay, vielleicht gibt es an dieser Stelle auch Unbekannte, damit jeder eine solide Ja- oder Nein-Antwort geben kann, also suche ich eher nach einem allgemeinen Gefühl dafür, was die Tools selbst tun. Nicht, ob sie gut passen oder nicht.
In-Ear-Monitoring ist auch eine Option, aber ich würde es LIEBEN, wenn ich beides tun könnte: das IEM auf der Bühne verwenden und die in sich geschlossene Verstärkung, um mit dem Publikum in der Lobby oder auf der Straße zu interagieren usw. Ich bin Sorgen Sie sich nicht um die Latenz des IEM, da es sich um ein anderes Signal handelt als das, was in der Luft ist. Das lokale Mikrofon und die Verarbeitung bilden einen parallelen Pfad mit dem direkten Sound, und das kümmert sich nicht um einen Unterschied in der Latenz, oder es erzeugt einen Kammfilter.

Antworten (2)

Hast du nicht gerade die Antwort angegeben?

Sie sagten Abstand von "ein paar Zentimetern". Der Ton beträgt ungefähr 1 ms pro Fuß. Nehmen wir 4 Zoll an, was ungefähr 400 us bedeutet (ich bin SEHR locker, um die Mathematik zu vereinfachen).

Bei 48 KHz sind die Samples etwa alle 20 us – Sie erhalten also 20 Samples (400 us/20 us), um Ihr Latenzbudget einzuhalten.

Wenn Sie das auf 192 kHz hochfahren, erhalten Sie 80 Samples.

Die Codecs liegen wahrscheinlich nahe bei 1 Sample Latenz auf DAC und ADC, wenn Sie die integrierte DSP-Verarbeitung ausschalten. Niemand versucht tatsächlich, Dinge zu verzögern (es sei denn, Sie haben eine integrierte Verarbeitung und bitten sie darum), aber Sie müssen ein vollständiges Sample haben, um auf dem digitalen Bus zu senden/empfangen.

Was die Vektorbefehle betrifft, so haben Sie, selbst wenn Sie nur 1 aktuelles Zeitmuster zum Arbeiten hätten, viele DSP-Algorithmen, die mit ziemlich vielen vergangenen Zeitmustern arbeiten, sodass SIMD-Vektorbefehle immer noch ein Gewinn wären.

Ich möchte Sie auch davor warnen, in Ihren Audiospezifikationen zu streng zu sein. Die meisten Menschen haben ... ein ziemlich unvollkommenes Gehör. Ich habe Audiosysteme erstellt, bei denen es eine variable Tonhöhenverschiebung von 5-8% gab (in wirklich schlimmen Fällen aus Gründen der Verzögerungskompensation). Es tat mir weh , das zu hören, aber die überwiegende Mehrheit der Leute bemerkte es nicht einmal, nachdem ich darauf hingewiesen hatte.

Ich empfehle Ihnen, Ihre Spezifikationen auf den Durchschnitt der menschlichen Wahrnehmung einzustellen und Anpassungen für diejenigen zuzulassen, die außerhalb der Norm liegen.

Hoffe das hilft.

Hmm ... Ihre Anekdote darüber, dass die meisten Leute ein Problem nicht hören, das Ihnen offensichtlich ist, selbst nachdem Sie darauf hingewiesen haben, ist ermutigend ... außer dass ich einer von denen bin, die dazu neigen, so etwas zu bemerken. :-/ Ein Blick auf die Fehlermodi scheint auch dann ein wenig ermutigend: Wenn mein System unzureichend ist , wird es ein Kammfilter sein, und unsere Ohren scheinen ziemlich gut darin zu sein, diese zu ignorieren, da sie sowieso ständig in der Natur vorkommen. Vielleicht kann es also funktionieren, es einfach tun zu lassen, was es tun soll, mit einer bekanntermaßen guten Codebasis.
Ich weiß, dass niemand diese Dinge absichtlich verzögert, aber ich weiß auch, dass einige von Natur aus erforderlich sind, nur weil der Prozess funktioniert. Also frage ich danach, mehr als alles andere. Wie lange dauert es in der in der Frage gezeigten Testschaltung, bis ein Impuls, eine Stufenänderung oder ein anderes erkennbares Merkmal vollständig durch ist? Nicht nur die Mechanik der seriellen Kommunikation, sondern zuerst eine digitale Darstellung zu entwickeln und sie am Ende zu verwenden. Ein SAR-ADC zum Beispiel ist nicht augenblicklich, aber Audio ist wahrscheinlich Delta-Sigma ...
Sie streiten mit dem Datenblatt über "Abtastrate". Das Datenblatt besagt, dass alle 20 ms bei 48 kHz ein Sample abfällt, also passiert das. Dies sind keine Hochgeschwindigkeits-HF-ADCs mit einer so tiefen Pipeline, da die analoge Abtastrate und die digitale Datenrate ähnlich sind. Niemand hält eine Pipeline von analogen Samples mit Audiogeschwindigkeit bereit – das wäre eine Verschwendung von Silizium. Die Delta-Sigma-Wandler werden intern mit vielen MHz (20 MHz+) getaktet, nicht mit KHz, und arbeiten ein Audio-Sample auf einmal. Audio ist langsam im Vergleich zu den digitalen Blöcken. Folglich beträgt die Delta-Sigma- Audiotaktlatenz 1.
" Niemand hält eine Pipeline analoger Samples mit Audiogeschwindigkeit herum - das wäre eine Verschwendung von Silizium. " Nicht absichtlich, nein. Ich habe nie behauptet, dass es jemand getan hat. " ... und ein Audio-Sample nach dem anderen bearbeiten. " Ich wusste, dass es sich um superschnelle Konverter mit niedriger Auflösung handelte, die absichtlich "verrauscht" waren (alle hohen Frequenzen) und dann tiefpassiert wurden, um beide die niedrigeren Bits auszufüllen und entfernen Sie dieses Rauschen, bevor Sie jedes 1000ste Sample oder was auch immer nehmen und den Rest wegwerfen, aber wenn man bedenkt, dass 1) das DSP-Arbeit im Konverter selbst ist und 2) DSP normalerweise eine Latenz ungleich Null impliziert ...
Wie auch immer, Sie sagen, dass meine Testschaltung unabhängig von der Abtastrate einen Versatz von zwei I2S-Abtastperioden zwischen den Kanälen des Stereo-Analogrecorders ergibt? Das bedeutet, dass sie intern IIR-Filter verwenden, da FIRs dazu neigen, sich auf andere Weise falsch zu verhalten, wenn Sie sie für extrem niedrige Latenzzeiten optimieren. Das erscheint mir plausibel, auch wenn sich FIRs ansonsten hervorragend zur Sampleratenwandlung in einem Schritt eignen, als Tiefpass, der nur die benötigten Ausgangssamples berechnet und nicht alles. Wenn ich Sie richtig interpretiert habe, dann klingt das nach der ersten wirklichen Antwort.
Das erwarte ich, ja. Ich würde jedoch empfehlen, dass Sie sich mit Delta-Sigma-Konvertern befassen. Sie haben einige Missverständnisse über sie, die Sie wahrscheinlich korrigieren möchten, bevor Sie DSP-Algorithmen auf ihre Ausgänge/Eingänge werfen. Delta-Sigma-Wandler werfen keine Samples weg – sie übertasten sie ziemlich stark und ihre Komparatoren haben eine sehr hohe Auflösung. Delta-Sigma fügt von Natur aus kein Rauschen hinzu, aber es formt das Grundrauschen. Schließlich erhöht das Hinzufügen von Rauschen (als Dithering bezeichnet) tatsächlich das Gesamtrauschen selbst bei niedrigen Frequenzen, bricht jedoch Sampling-Artefakte auf. Viel Glück.
Vielleicht haben wir dann einen Unterschied im Verständnis der Begriffe. (+1 für diesen Kommentar) "Oversampling" erfordert für mich zwangsläufig, dass später etwas weggeworfen (dezimiert) wird, und das ist in Ordnung, wenn das Signal nichts höher als die resultierende Nyquist-Grenze enthält. Wenn Sie einen digitalen Tiefpass verwenden, ist die minimale Abtastrate des Eingangs höher als die minimale Abtastrate des Ausgangs. Diese Dezimierung ist möglicherweise nicht unbedingt ein expliziter Schritt, sondern nur ein Nebeneffekt von etwas anderem. Zum Beispiel...
... eines meiner früheren Projekte hatte einen 10-Bit-SAR-ADC, der so schnell wie möglich lief (~ 100 ksps), eine manuelle Bedienersteuerung mit viel unkorreliertem elektronischem Rauschen maß und die ADC-Interrupt-Routine einen IIR-Tiefpass 1. Ordnung ausführte darauf (auch als "exponentieller Durchschnitt" bezeichnet) mit einem Cutoff von ~ 10 Hz (natürlich aus der Abtastrate berechnet - DSP versteht nur Abtastungen, nicht die Zeit), bevor es in eine globale 16-Bit-Variable geschrieben wird, was eine PID-Schleife tun würde als Sollwert nehmen, wann immer es dazu kam. Viele ADC-Samples pro PID-Scan.
Alle Prinzipien, die ich beschrieben habe, sind vorhanden: Oversampling mit Rauschen, Tiefpass, um dieses Rauschen in eine bessere Auflösung umzuwandeln, und dann das Ergebnis mit einer niedrigeren Abtastrate zu verwenden. Die Erklärungen, die ich zu Delta-Sigma gesehen habe, sind so ziemlich das, außer dass die meisten von ihnen einen 1-Bit-Wandler verwenden (analoger Komparator oder direkte Verwendung des digitalen Bits - ein "1-Bit-DAC" ist nur ein Draht) mit vielleicht eine digitale 8-Bit-Schnittstelle. Reale Designs verwenden wahrscheinlich ein paar Bits mehr, wie vielleicht 8 oder so als Flash-ADC oder R-2R-DAC, da diese praktisch augenblicklich sind, aber ich verstehe ziemlich genau das.

Nach welchen Parametern sollte ich in einem guten Datenblatt suchen?

Ich glaube, ich bin endlich auf die Antwort für diese gestolpert. Es heißt "Group Delay", wie auf den Seiten 16 und 20 dieses Datenblatts . Es scheint in Proben gemessen zu werden, obwohl das Datenblatt die Einheit in Sekunden und die Zahl als x/Fs angibt.
Seite 21 gibt die gültigen Abtastraten für jeden Modus an.

Ich musste "Gruppenverzögerung" googeln, weil ich damit nicht vertraut war, und fand diese nützliche Erklärung . Im Zusammenhang mit einem ADC- oder DAC-Filter scheint es also, dass der Wandler selbst das Signal tatsächlich um so viele Samples verzögert.

Im Fall des hier verlinkten sind das 12 oder 9 Samples für den ADC bei 48 kHz bzw. 96 kHz und 10 oder 5 Samples für den DAC, für einen gesamten Roundtrip von 22 oder 14 Samples vom analogen Eingang zum analogen Ausgang. nur im Konverterchip selbst.

Die Umrechnung in Zeit und dann Entfernung in Luft ergibt ~460us|~6in|~15cm oder ~150us|~2in|~5cm.

Ich denke, ich kann mit der kürzeren davon arbeiten, vorausgesetzt, ich kann mit der doppelten Anzahl von Proben Schritt halten! Selbst wenn es ganz oben Kammfilter gibt (die Wellenlänge von 20 kHz in Luft beträgt ~ 5/8 Zoll | ~ 1,5 cm), ist es akustisch ziemlich gut gedämpft (der Grund, warum dieses Projekt überhaupt existiert), also wahrscheinlich nicht bemerkbar. Solange es durch den Übergangsbereich (akustischer Tiefpass, DSP-Hochpass) eng genug anliegt, bin ich zufrieden.

Interessanterweise beträgt die Verzögerungszahl für 48 kHz fast die Hälfte der 1 ms, die die kommerzielle Live-Sound-Ausrüstung für ihre Gesamtlatenz bewirbt. Ich schätze, es wäre vernünftig für ein komplexes Routing und eine Handvoll Transporte, um die anderen 26 Samples oder so zu nehmen.

Und gibt es irgendwelche Faustregeln / Stammeswissen, die auch nützlich wären, um einen akustischen Kammfilter von einem Live- / Echtzeit-DSP zu vermeiden ...?

Nun, angesichts des ersten Teils dieser Antwort ist es naheliegend, das System so schnell laufen zu lassen, wie Sie im DSP genügend Takte pro Sample haben! Was diese Zahl ist, hängt davon ab, was Ihr DSP ist, was die Verarbeitung ist und wie Sie diese Verarbeitung optimieren.

96 kHz klingen nicht anders als 48 kHz, aber mit dem oben genannten Codec führt dies zu ~ 1/3 der Latenz!