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? :
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!
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.
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.
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!
Tony Stewart EE75
Tony Stewart EE75
Tony Stewart EE75
Bobflux
AaronD
AaronD
AaronD
Tony Stewart EE75
AaronD
AaronD