EwmsDiag

Das Diagnoseprogramm EwmsDiag bestimmt u.a. die Genauigkeit der von der Soundkarte gelieferten Wiedergabepositionen, die über einen Aufruf der entsprechenden Funktion der DirectSound-Schnittstelle von Windows angefordert werden. Diese Funktion wird benötigt, wenn Reaktionen auf auditive Ereignisse innerhalb längerer Sounddateien erfaßt werden sollen.

Ziel der Diagnose ist es, das Ausmaß des bei der Reaktionszeitmessung zu erwartenden Fehlers zu bestimmen, der durch ungenaue Positionsmeldungen der Soundkarte entsteht. So können z.B. Soundkarten mit inakzeptabel hohen Fehlerwerten durch zuverlässigere Modelle ersetzt werden.

Für den Fall, daß der ermittelte Fehler hauptsächlich in einer konstanten zeitlichen Abweichung der Wiedergabepositionen besteht, kann diese Abweichung zur Korrektur der Reaktionszeitdaten eingesetzt werden.

Zusätzlich können mittels EwmsDiag sowohl die Wiedergabe- als auch die Aufnahmelatenz (wichtig u.a. bei der Reaktionserfassung mittels Voice Key) gemessen werden.

Problemstellung

Im Rahmen eines Projektes war folgende Aufgabe zu realisieren:

Der Untersuchungsperson (UP) werden Audioaufnahmen von Gesprächssituationen präsentiert. Die Aufgabe der UP besteht darin, auf das Auftreten der Stimme einer oder mehrerer vorgegebener Zielpersonen mittels Tastendruck zu reagieren. Die Gesprächsaufnahmen können mehrere Minuten lang sein und enthalten in der Regel mehrere Reaktionsabschnitte. Die Einsätze der Zielpersonen, die die jeweilige Reaktionszeitmessung starten, werden als Wiedergabeposition der Audiodatei spezifiziert.

Die programmiertechnische Hauptanforderung bzgl. der Soundausgabe besteht hier darin, die aktuelle Wiedergabeposition jederzeit exakt bestimmen zu können, um beim Auftreten einer Tastenreaktion die Reaktionszeit als Differenz aus dem Zeitpunkt des Tastendrucks und dem Zeitpunkt, zu dem die kritische Wiedergabeposition (letztes Auftreten der Zielperson) erreicht wurde, berechnen zu können.

Eine naheliegende Idee bestünde vielleicht darin, zunächst den Zeitpunkt des Wiedergabestarts zu bestimmen und dann den Zeitpunkt des Erreichens der kritischen Wiedergabeposition zu berechnen.

Wird z.B. eine Audiodatei mit der Samplingrate 22050 wiedergegeben, und soll eine Reaktionszeitmessung nach der Ausgabe von 44100 Samples gestartet werden, läßt sich der zeitliche Abstand zum Wiedergabebeginn leicht berechnen:

44100 / 22050 = 2 (Sekunden)

Durch Addition dieses Wertes zum zuvor gemessenen Startzeitpunkt der Wiedergabe erhält man den Zeitpunkt für den Reaktionsstart.

Dieses Verfahren setzt aber voraus, daß die Soundkarte die gewünschte Samplingrate äußerst exakt einhält, was meistens nicht der Fall ist. Und bereits eine Abweichung der Samplerate um ein Promille würde pro Minute einen (kumulativen) Rechenfehler von 60 ms ergeben.

Genaugenommen besteht das Problem auch dann, wenn die Samplingrate exakt eingehalten wird.

Es ist nämlich zu beachten, daß hier zwei voneinander unabhängige Zeitbasen miteinander kombiniert werden:

Sobald beide Zeitbasen voneinander abweichen, führen Berechnungen, die Werte des einen Systems in Werte des anderen transformieren, zu einem Fehler, dessen Ausmaß exakt der relativen Abweichung der beiden Zeitbasen entspricht.

Beispiel:

Es wird angenommen, daß der Timer korrekte Werte liefert. Die reale Samplingrate dagegen weicht um 1 Promille vom Ideal (22050) ab: 22027,95. Berechnungen zur Vorhersage der Sampleposition (Soundkartenzeit) zu einem bestimmten Zeitpunkt (Rechnerzeit) sind so mit einem relativen Fehler von

(22050 - 22027,95) / 22050 = 0.001

behaftet. Die Größe des resultierenden absoluten Fehlers wächst proportional zum Abstand der vorherzusagenden Position vom Wiedergabebeginn:

nach      20 ms      0,02 ms
nach   1.000 ms      1,00 ms
nach   2.000 ms      2,00 ms
nach  60.000 ms     60,00 ms
nach 300.000 ms    300,00 ms

Theoretisch könnte die Abweichung der beiden Zeitbasen voneinander gemessen und als Korrekturfaktor für die Umrechnung zwischen den Systemen eingesetzt werden. Die dafür erforderliche Meßgenauigkeit würde aber extrem lange Messungen bedingen. Und wenn die Parameter eines Systems z.B. aufgrund von thermischen Einflüssen variieren, sind gar keine brauchbaren Werte zu ermitteln.

Da die aktuelle Wiedergabeposition also nicht hinreichend genau berechnet werden kann, muß ein alternatives Verfahren eingesetzt werden. Erfreulicherweise bietet die DirectSound-Schnittstelle prinzipiell die Möglichkeit, jederzeit die aktuelle Position der Audiowiedergabe als Anzahl der bereits ausgegeben Samples abzurufen.

Darauf aubauend wurde folgende Methode verwendet:

Kleinere Abfrageintervalle würden zwar die Genauigkeit weiter erhöhen, hätten aber zwei Nachteile: Erstens würde weniger Rechenzeit für parallel auszuführende Aktionen wie z.B. das Laden der Sounddaten von der Festplatte übrig bleiben und zweitens haben meine Untersuchungen gezeigt, daß manche Soundkarten zu kurze Abfrageintervalle übelnehmen und ihr Mißfallen dann in Form von unsinnigen Positionsangaben oder sogar Wiedergabeartefakten kundtun.

Prinzipiell könnte das Abfrageintervall auch vergrößert werden, ohne daß dadurch ein relevanter Genauigkeitsverlust entstehen würde. Leider liefern aber manche Soundkarten hin und wieder unsinnige Werte für die aktuelle Wiedergabeposition. Meine Lösung analysiert jeden Wert im Kontext der Werte der letzen paar Sekunden und filtert derartige Ausreißer aus. Das klappt zuverlässiger, wenn mehr Meßwerte zur Verfügung stehen, so daß eine Erhöhung des Abfrageintervalles hier nachteilig wirken würde.

Beim Einsatz des o.g. Verfahrens sollte eine etwaige Latenz des Wiedergabebeginns keine Rolle mehr spielen, denn eine kurze Verzögerung des Wiedergabebeginns ist bei diesem Experiment unkritisch und die Latenz beeinträchtigt auch nicht die Genauigkeit der Abfrage der Wiedergabepositionen, da diese relativ zum realen Wiedergabebeginn zu interpretieren sind.

Problem gelöst? Die Antwort lautet 'Ja', sofern man nicht so genau hinschaut...

Wie ist es denn um die Genauigkeit der von der Soundkarte gelieferten Wiedergabepositionen bestellt? Ist sie hinreichend oder gibt es einen relevanten konstanten oder gar variablen Fehler?

Zur Klärung dieser Fragen wurde das Diagnoseprogramm EwmsDiag entwickelt. Seine Meßverfahren wurden so konzipiert, daß sie ohne aufwendige externe Hardware auskommen, somit also auch problemlos außerhalb eines Labores eingesetzt werden können.

Meßmethode 1

Die Diagnose besteht aus einer wählbaren Anzahl (typisch 50) identischer Messungen, deren Ergebnisse gemittelt werden. Jede Einzelmessung folgt (stark vereinfacht) diesem Schema:

Nach Abschluß der Messung werden aus den Meßwerten jeder einzelnen Positionsabfrage zwei Zeitpunkte berechnet:

Zeitpunkt-Abweichung bezeichnet die Differenz aus Positions- und Sollzeitpunkt. Je größer der Betrag dieses Wertes ist, desto ungenauer sind die von der Soundkarte gelieferten Positionsangaben.

An dieser Stelle kommt nun doch wieder die Latenz des Wiedergabebeginns ins Spiel. Da sich der tatsächliche Wiedergabebeginn um die Größe der Wiedergabelatenz verzögert, werden die Sollzeitpunkte entsprechend unterschätzt. Und so geht die Wiedergabelatenz als Fehler in den Ergebnisparameter Zeitpunkt-Abweichung ein und verhindert eine sinnvolle Interpretation.

Es ist also erforderlich, die Wiedergabelatenz zu messen, und sie dann zu jedem Sollzeitpunkt zu addieren.

Wiedergabelatenz

Zur Messung der Wiedergabelatenz wird die Meßmethode folgendermaßen erweitert:

Nach dem Meßende wird der Aufnahmepuffer nach dem Ton durchsucht. Die (positive) Verschiebung seiner Position gegenüber dem Ideal von 350 ms entspricht der Wiedergabelatenz.

Wiedergabelatenz

Deren Wert kann nun zur Korrektur des Ergebnisparameters 'Zeitpunkt-Abweichung' eingesetzt werden.

Leider führt die neue Meßmethode selbst eine weitere potentielle Fehlerquelle ein: Startet der Aufnahmevorgang unmittelbar oder gibt es auch eine relavante Aufnahmelatenz? Diese würde zu einer Unterschätzung der Wiedergabelatenz führen, denn ein verspäteter Aufnahmebegin würde die Aufnahmedaten in Richtung des Anfangs des Aufnahmepuffers verschieben.

Also wird noch eine Messmethode für die Aufnahmelatenz benötigt.

Aufnahmelatenz

Die Messung der Aufnahmelatenz verwendet ein ähnliches Prinzip wie die der Wiedergabelatenz. Allerdings kann der Meßton nicht von der Soundkarte erzeugt werden, da er dann von der Wiedergabelatenz betroffen wäre, die ja erst nach der Bestimmung der Aufnahmelatenz zuverlässig ermittelt werden kann.

Stattdessen wird der Ton über den parallelen Druckeranschluß ausgegeben. Die Verbindung zum Soundkarteneingang erfolgt über ein leicht anzufertigendes Kabel, das ein paar Widerstände und Kondensatoren zur Pegelanpassung und Entkopplung enthält.

Der weitere Meßvorgang erfolgt analog zur Bestimmung der Wiedergabelatenz. Die Aufnahmelatenz äußert sich als negative Abweichung (natürlich wird das Vorzeichen noch umgekehrt, um einen positiven Wert zu erhalten) der idealen Tonposition; der Ton wandert in Richtung Pufferanfang.

Aufnahmelatenz

Die Wiedergabelatenz kann nun durch Addition des Wertes der Aufnahmelatenz korrigiert werden.

Eine gute Nachricht am Rande: Im Gegensatz zur Wiedergabelatenz scheint die Aufnahmelatenz eher unkritisch. Sie lag bei allen bisherigen Messungen im Bereich von maximal 1 ms.

Ergebnisse

Aufgrund der bislang gesammelten Diagnoseergebnisse verschiedener Soundkartentypen unter unterschiedlichen Betriebssystemversionen lassen sich folgende Aussagen treffen:

Fazit: Eine Diagnose der Genauigkeit der Wiedergabepositionen mittels einer geeigneten Diagnosesoftware ist zwingend erforderlich, wenn exakte Reaktionszeiten benötigt werden.

Eine Veröffentlichung detaillierter Ergebnisse einzelner Soundkarten auf dieser Seite scheint mir derzeit nicht sinnvoll, da sie von zu vielen Faktoren abhängen: Treiberversion, Betriebssystem, DirectX-Version, Hardwarerevision usw.

Ferner gibt es eine Reihe von Parametern, die der Programmierer der Experimentalsoftware bei der Ansteuerung der Soundkarte variieren kann und die alle die Positionsabweichung beeinflussen können.

Die Diagnosesoftware muß also exakt dieselben Parameter wie die Experimentalsoftware verwenden, damit die Meßergebnisse auf das Experiment übertragbar sind.

Methodische Probleme

Obwohl das beschriebene Meßverfahren schon recht aufwendig ist, ist es doch noch mit einigen meßmethodischen Problemen behaftet:

Die Messung der Wiedergabelatenz verlangt nach dem Duplex-Modus, also der simultanen Aufnahme und Wiedergabe. Im Experiment wird die Soundkarte aber im reinen Wiedergabemodus betrieben. So stellt sich natürlich die Frage, ob die Ergebnisse der Duplexmessung auf die Bedingungen im Experimentaleinsatz übertragbar sind.

EwmsDiag ermittelt für beide Betriebsarten eine Reihe zusätzlicher Parameter, die manuell auf Übereinstimmung geprüft werden können, um so ggfs. Anhaltspunkte für grundätzliche Unterschiede zwischen den beiden Modi aufzudecken. Kein wirklich sicheres Verfahren.

Das größte Problem in der bisherigen Praxis stellten Soundkarten dar, deren Duplex-Modus nicht richtig funktionierte. Dies betraf vor allem Modelle des untersten Preissegmentes. Angesichts der Tatsache, daß der Duplexmodus nun bereits seit Jahren zum allgemeinen Standard gehört, ein recht überraschender Befund.

Meßmethode 2

Alle im vorherigen Abschnitt dargestellten Probleme lassen sich mittels einer Meßanordnung, die aus zwei Rechnern besteht, vermeiden.

Dabei wird die Messung der Wiedergabelatenz, die ja in Methode 1 den Betrieb im problembehafteten Duplex-Modus bedingt, vom zu untersuchenden Testrechner in einen separaten Meßrechner ausgelagert.

Der Testrechner gibt wie in Methode 1 über die Soundkarte ein Tonsignal aus und mißt die Zeitpunkt-Abweichung. Zusätzlich gibt er über den parallelen Druckerport ein zweites Signal aus, und zwar genau zu dem Zeitpunkt, zu dem der Soundkartenton erklingen würde, wenn die Wiedergabelatenz 0 wäre.

Der Meßrechner führt eine Stereoaufnahme durch, wobei er auf einem Kanal das Soundkarten- und auf dem anderen Kanal das Parallelportsignal des Testrechners empfängt. Die Verschiebung der beiden Signale gegeneinander entspricht der Wiedergabelatenz des Testrechners.

Nach dem Meßende überträgt der Meßrechner die ermittelten Wiedergabelatenzen jeder Teilmessung an den Testrechner, der nun die Wiedergabelatenzen zur Korrektur der gemessenen Zeitpunktabweichung einsetzen kann.

Leider erfordert diese Lösung nicht unbeträchtlichen Aufwand. Während sich die Meßmethodik eher vereinfacht, erwachsen zusätzliche Anforderungen aus der Notwendigkeit, in beiden Richtungen Daten zwischen den Rechnern austauschen zu können. Eine Implementierung über eine Netzwerkverbindung würde den Anwender mit zu vielen Konfigurationsarbeiten belasten und wäre so wenig praxistauglich.

Deshalb wird der Datenaustausch analog über die ohnehin erforderliche Verbindung zwischen den Soundkarten beider Rechner durchgeführt.

Ergebnisse

Meine aktuelle Implementierung der Meßmethode 2 ist zwar bereits voll funktionsfähig, aber noch nicht hinreichend sauber und anwenderfreundlich umgesetzt, weshalb sie noch nicht veröffentlicht wurde.

So liegen bislang auch nur Meßergebnisse von meinen zwei Arbeitsrechnern vor. In beiden Fällen stimmten die Werte der Methode 2 weitgehend mit denen der Methode 1 überein.

Download

Sie können hier die Freewareversion EwmsDiagL (Light) downloaden, deren Funktionalität sich derzeit auf die Diagnose der Wiedergabepositionen mittels der Meßmethode 1 beschränkt (ohne Messung der in der Regel unkritischen Aufnahmelatenz):

EwmsDiagL_083.zip Größe: 306 KB

Die Dokumentation finden Sie in der Datei "EwmsDiag.chm" (Windows- Hilfedateiformat).

Bitte beachten Sie, daß das Programm sehr systemnah arbeitet, und so zu manchen Hard- und Softwarekonfigurationen inkompatibel ist.

Links

Audio Latency Measurements of Desktop Operating Systems by Karl MacMillan et al.
Diese Studie vergleicht verschiedene Betriebssysteme hinsichtlich ihrer Eignung für die Echtzeitverarbeitung von Audiodaten, die vor allem durch die Latenz des Audiosystems bestimmt wird. Neben dem Betriebssystem wird auch nach Programmierschnittstellen (z.B. ASIO und DirectSound) sowie Soundkartenqualität ('Low Cost' und 'High End') differenziert.
Anmerkung: Bei der Übertragung der Ergebnisse auf meinen Text ist unbedingt die abweichende Definition des Latenzbegriffs zu beachten.
Direct Sound tips and traps by Peter Clare
Eine sehr kompakte Darstellung typischer Probleme bei der Programmierung der DirectSound-Schnittstelle. Ferner viele Tips zur Problemlösung und Optimierung.
Architecture of the Windows Driver Foundation by Microsoft
Microsoft's Startseite zur Treiberprogrammierung. Hier finden sich u.a. Artikel zum KMixer, der für einen Großteil der Wiedergabelatenz unter DirectSound verantwortlich ist, sowie zum Kernel Streaming, dessen Einsatz zu sehr geringen Latenzen führen kann.
Da diese Seite häufig umstrukturiert wird, verzichte ich auf die Angabe kurzlebiger direkter Links zu den entsprechenden Artikeln.