Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte » 

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Audio Files vergleichen und Qualität bewerten (https://www.delphipraxis.net/176341-audio-files-vergleichen-und-qualitaet-bewerten.html)

jensw_2000 28. Aug 2013 16:40

Audio Files vergleichen und Qualität bewerten
 
Ich habe heute eine Anfrage bekommen bei der ich völlig auf dem Schlauch stehe.

Ein lokaler VoIP Telefonie Carrier möchte neben den Prüfungen die dort amtsseitig ohnehin schon laufen automatisierte Qualitätschecks zu allen seinen Knotenpunkten machen.

Dazu will er einen meiner fertigen ISDN Powerdialer "missbrauchen".
Der Dialer soll ISDN-seitig an eine Fritzbox angeschlossen werden und in gewissen Intervallen über die VoIP Strecke Testanrufe zu definierte Endpunkten (Anrufbeantworter) in den Vermittlungsstellen machen.
Der Audiostream des Anrufbeantworters wird vom Dialer mitgeschnitten und als Audiofile gespeichert.

Soweit ist das fertig und kein Problem...

Jetzt möchte mein Kunde das originale Audiofile des Anrufbeantworters als Referenz nehmen und mit den Audio-Mitschnitten der Testanrufe vergleichen.
Also Qualitätsverlust, Knacken, dumpfer, Verzerrungen, Aussetzer, zu laut, zu leise usw. erkennen und auswerten.

Es geht nicht um die fachliche Bewertung des VoIP Signals (Jitter usw.) sondern im einen reinen Vergleichstest.
Sprich: "Seit einer Woche nimmt die Gesprächsqualität zum Knoten XYZ deutlich ab. Erkannt an folgenden Punkten ..."

Beide Audiofiles (AB und Mitschnitt) sind G729a Audiofiles (8 Bit, 8K Sample-Rate).

Ist so etwas realisierbar?
Wie? Was brauche ich dafür?


Grüße
Jens

Furtbichler 28. Aug 2013 19:03

AW: Audio Files vergleichen und Qualität bewerten
 
Keine Ahnung, aber über eine Frequenzanalyse (FFT) sollte sich das lösen lassen. Irgendwie die Frequenzbereiche vergleichen. Wenn Du prozentuale Angaben machen sollst, muss man vereinbaren, was verglichen wird.

jensw_2000 28. Aug 2013 20:17

AW: Audio Files vergleichen und Qualität bewerten
 
Nachdem ich den Wikipedia Artikel und das hier zum Thema FFT gelesen habe, bin ich mir sicher, dass ich Input auf viel viel niedrigerem Level benötige.
So wenig Infos habe ich schon lange nicht mehr aus einem Text entnehmen können. Jetzt fühle ich mich klein, dumm und deprimiert..:cry: Keine Ahnung wovon die da sprechen...

Gibt es keine APIs oder fertigen DLLs, die zwei Audiofiles miteinander vergleichen können und -keine Ahnung- die Anzahl der "Störungen" bzw. prozentualen Abweichungen ermitteln?
Das Test-Audiofile auf dem AB könnte z.B. einen sauberer Rechteck-Impuls abspielen.
Wenn (übertrieben gesagt) ein unsauberer Sinus mit Interferenzen, Peaks und Aussetzern zurückkommt ist die Verbindung ganz sicher schlecht ...

Ist irgendein Freelancer bei diesem Thema total fit und möchte eine threadsichere detaillierte Delphi "Audio-Vergleichsanalyse API" als Subauftragsnehmer annehmen? Also falls mein Kunde unterschreibt...:)

Perlsau 28. Aug 2013 20:55

AW: Audio Files vergleichen und Qualität bewerten
 
Aus meiner eigenen Erfahrung mit Voice-over-IP kann ich sagen, daß die größte Unannehmlichkeit darin besteht, wenn Pakete verlorengehen, was sich darin niederschlägt, daß Gesprächsteile fehlen. Entsprechende Vergleichsmethoden lassen sich vermutlich relativ leicht in Delphi umsetzen.

Offenbar gibt es zahlreiche Tools, die Audiodateien vergleichen. Vielleicht findest du ja eines, das irgend eine Form des Ergebnis-Exports ermöglicht, den du dann mit deinem Programm auswerten kannst und das du am besten noch via Ole-Automation steuern kannst.

Die Alternative wäre dann natürlich, selber entsprechende Vergleichs-Methoden zu entwickeln. In der Entwickler-Ecke gibt es zwei mir bekannte Beiträge zu Frequenzanalyse im Zusammenhang mit einer Musik-Erkennungs-Software. Vielleicht hilft dir das weiter: Frequenzanalyse und MusicInfoFinder. Und/oder du schreibst mal den Entwickler GTA-Place an, vielleicht hat der ja Interesse, das für dich zu machen.

Namenloser 28. Aug 2013 21:12

AW: Audio Files vergleichen und Qualität bewerten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Fertige FFT-Implementierungen gibt es zuhauf, unter anderem eine hier in der Codelib. Die FFT schlüsselt dir dein Signal in die einzelnen Frequenzen auf. Das machst du natürlich nicht nur einmal, sondern Abschnittsweise über die ganze Audio-Datei. Damit kriegst du einen Frequenzverlauf.

Das kann man sogar graphisch darstellen wie im Anhang. Die Visualisierung stammt aus dem Musikplayer Foobar2000, auf der X-Achse ist die Zeit und auf der Y-Achse die Frequenzen. Je stärker eine Frequenz zu einem bestimmten Zeitpunkt präsent ist, desto heller das Pixel...

Als Distanzmaß würde sich vielleicht die Earth mover’s distance eignen.

nahpets 28. Aug 2013 22:14

AW: Audio Files vergleichen und Qualität bewerten
 
Hallo,

von dem Thema habe ich keine Ahnung, trotzdem gibt es ein paar unausgegorene Gedanken dazu, eventuell hilfts ja als Denkanstoß.

Es gibt da die BASS.dll, die hier im Forum immer wieder mal Erwähnung findet.

Die BASS.dll kann auch FFT-Daten liefern, die z. B. für die graphische Anzeige genutzt werden können. Ebenfalls kann ein Level geliefert werden, der die Lautstärke repräsentiert.

Da das ja alles nur numerische Werte sind, könnte ich mir folgendes vorstellen:

Das gewünschte Testsignal wiedergeben und mit der BASS.dll die Werte z. B. alle 20 Millisekunden in eine (Datenbank)-Tabelle speichern, als Referenz.

Wenn nun ein Testanruf aufgezeichnet wird, diesen ebenfalls wiedergeben und auch hier per BASS.dll die Werte in einer (Datenbank)-Tabelle speichern. Im Idealfall müssten ja identische Ergebnisse vorliegen.

Nun müsste man "nur noch" die Differenz dieser beiden Tabellen ermitteln, was mit purer Mathematik möglich sein sollte. (Datenbank hätte den Vorteil, es ginge mit SQL und es könnten beliebig viele Testanrufe gespeichert werden.)
Bin jetzt mal naiv und behaupte: Je größer die numerischen Abweichungen, umso schlechter das Ergebnis des Testanrufes.

Wenn man als Test nun halt nacheinander mehrere unterschiedlich hohe und unterschiedlich laute Töne sendet, müsste man eigentlich schon eine Basis für einen (für Deine Anforderung) ausreichenden Vergleich bekommen. Es soll ja kein Qualitätsvergleich von einer Sinfonie, einmal auf Schellack aufgenommen, einmal als CD und einmal als MP3... vorgenommen werden, sondern es sollen Signale verglichen werden, die Du selbst bestimmen kannst.

Schau Dir mal das zur BASS.dll gehörende Beispielprogramm livespec an, das Programm stellt die gerade (von welchem Programm auch immer) am PC wiedergebenen "Geräusche" grafisch dar. Es nutzt dazu die FFT-Daten. Hier sollte eigenlich durch ein Abspeichern der Daten des Originals und der Daten der Testanrufe ein Vergleich möglich sein.

Habe mal drei Bilder mit der Anzeige der FFT-Daten der BASS.dll mit meinem Player angehängt. Bei klar definierten Testsignalen müsste eine derartige Anzeige eigentlich an bestimmten Stellen immer die gleichen, typischen Signale anzeigen.

Medium 28. Aug 2013 22:51

AW: Audio Files vergleichen und Qualität bewerten
 
Was, egal welchen Weg man nachher nimmt, unbedingt allen Beteiligten klar sein muss: Die Bewertung wird objektiv extrem schwierig sein. Gerade da die üblichen Kompressionsverfahren ziemlich adaptiv sind, und unterschiedlich gut auf die Menschliche Stimme zugeschnitten, wird man mit synthetischen Tests auch nur recht synthetische Aussagen treffen können, die zwar böse Patzer aufdecken dürften, jedoch sicherlich keine Nuancen, und kaum eine nachvollziehbare in Zahlen ausgedrückte Bewertung eines subjektiven Höreindrucks.
Die FFT erlaubt prinzipiell Analysen im Frequenzraum, aber gerade bei Stimmen sind auch diese noch ziemlich aufwendig. Da die Stimme eine irre Fülle an Frequenzen beinhaltet, ist es fast schon unmöglich für das gute Verständnis wichtige oder hilfreiche Anteile von bloßem Rauschen zu unterscheiden. Für den Höreindruck macht das Welten aus, in Zahlen wird man kaum signifikante Unterscheidungsmekrmale für manche Fälle finden. Ausser eben die offensichtlichen, die stehen aber wohl am Ende von "auf dieser Leitung wird es mit der Zeit schlechter".

Ich bin mal so frei zu behaupten, dass man nicht viel weiter als bis zur Erkennung von kompletten Aussetzern und extremen Abweichungen vom Original damit kommt. Bevor man da allzuviel Arbeit rein steckt, könnte es am Ende gar günstiger kommen, wenn sich wirklich mal einer einen Tag hinsetzt und die Testanrufe mit eigenen Ohren bewertet.

Warum komme ich zu so einer Aussage? Ich habe mich für meine Bachelorarbeit mit dem Thema Bildkompression beschäftigt, wofür ich Mechanismen gesucht habe, diverse Algos in ihren Ergebnissen miteinander bzgl. des wahrgenommenen Bildeindrucks zu vergleichen. Eine einfache mittlere quadratische Abweichung z.B. hatte sowohl im Bild- als auch im Frequenzraum fast die gleiche Signifikanz wie eine Zufallsbewertung. Bei meinen Recherchen bin ich u.a. auch auf eine Seite des JPEG-Kommitees gestoßen (leider finde ich sie nicht mehr, so oft gesucht :(), bei dem sogar die zu dem Ergebnis gekommen sind: In gewissen sehr engen Grenzen, und für Spezialfälle an Bildinhalten lieferten manche Methoden tendenzielle Aussagen, jedoch war keine allgemeingültig für eine subjektiv signifikante Eindrucksbewertung tauglich.
Da Bild und Ton was die reine Signalverarbeitung (und auch die Kompressionsmethoden) angeht gar nicht soooo verschieden voneinander sind, glaube ich hier durchaus Rückschlüsse ziehen zu dürfen.


Was man z.B. denken könnte, was aber dank der Kompression genau 0 Aussagekraft hat ist: Man nehme ein Testsignal, dass einfach nacheinander eine Reihe von Sinuswellen verschiedener Frequenz abspielt. Jetzt könnte man die Aufnahme mit dem Original vergleichen, und so Dinge versuchen wie: "Aha, Frequenz X und Y sind tendenziell leiser als sie sollten." - Trugschluss. Das sog. Psycho-Akustische Modell der meisten modernen Kompressionsverfahren nutzt eben gerade eine Bandfiltermethode, mit der die "vermutlich weniger relevanten" Frequenzbänder aus einem Signal entfernt werden. Oft sogar alle paar Millisekunden auf das konkrete Signal genau zugeschnitten und neu gewichtet. In der Hoffnung, dass deren Fehlen für den Höreindruck kaum einen Unterschied macht. In Zahlen lassen sich zuweilen riesige Abweichungen ausmachen, aber wirklich deutlich hören würde die keiner. Und gerade die Voice-Codecs sind hier ausgeprochen trickreich unterwegs.
Um also ein zumindest näherungsweise relevantes Ergebnis zu bekommen, ist mathematisch echt schon was los. Zudem müsste man exakt wissen mit welchem Codec übertragen wurde, mit welchen Settings, und man müsste im Detail wissen wie er arbeitet. Und selbst dann müsste man sich noch auf den Fall Sprache beschränken. (Manch eine Stimme kommt ganz prima durch eine Kompression, die ein Pop-Lied völlig verhackstücken würde, und umgekehrt. Je nach dem.)

Ich würde den Auftraggeber zumindest mal über die potenzielle Tragweite seiner Anforderung informieren, und ich würde mir - der zumindest ein Basiswissen (wirklich nicht mehr) von Signalverarbeitung hat - nicht zutrauen hier eine (eigene) Lösung anzubieten, die ich guten Gewissens verkaufen kann.

jensw_2000 28. Aug 2013 22:52

AW: Audio Files vergleichen und Qualität bewerten
 
Das sieht alles sehr vielversprechend aus und wird mich die nächsten Stunden und Tage fesseln ...

Parallel habe ich aber trotzdem den Audio-Spezi aus der Entwickler-Ecke angeschrieben.
Mal schauen ob er antwortet und was er kostet.

Zur Bass.dll habe ich noch eine Frage, bevor ich viel Zeit in die Forschung stecke.

Ich übertreibe mal ein bisschen ...
Das Referenzfile ändert sich nicht, aber die Gegenseite kann ich kaum beeinflussen.
Wenn der Anrufbeantworter auf der anderen Seite erstmal die Kassette zurückspult, ein paar mal klackt bis der Tonkopf in der richtigen Position ist und danach erst das Prüf-File abspielt, wird ein rein numerischer Vergleich ab Stream-Beginn nichts bringen.

Kann man die Audiofiles mit der Bass.dll öffnen und dann bis zum einem definierten Erkennungssignal "vorspulen", um den Vergleichs-Startpunkt zu synchronisieren?

jensw_2000 28. Aug 2013 23:05

AW: Audio Files vergleichen und Qualität bewerten
 
PS:
@Medium >> Das hört sich nicht gut an. Gute Argumente.
Hälst Du den Vergleich auch bei einer sehr einfachen Rechteck-Frequenz für nahezu unmöglich?
Wir können vor der eigentlichen Arbeit schon ein paar Testdateien über die VoIP Leitung schicken und schauen, welche Frequenzen durch die Codecs gefiltert werden und somit nicht im fertigen Referenzfile enthalten sein dürfen.

Medium 28. Aug 2013 23:15

AW: Audio Files vergleichen und Qualität bewerten
 
Das ist die Krux: So eine Aussage wird unmöglich sein. Ein paar Bänder werden sicherlich pauschal "abgeschoren", im interessanten Bereich hängt es aber vollständig vom gesamten Rest des Signals (und der Bitrate!) ab, was da wann wo und wie stark ausgelassen wird. 200Hz könnten z.B. isoliert fast 1:1 durchgehen, aber 200Hz in einer Sprachnachricht könnten ggf. komplett entfallen. Das wird i.A. dynamisch entschieden, und kann nicht vorab so einfach ermittelt werden.
Am Rande: Rechtecke sind der Teufel der Signalanalyse. Besonders in einer FFT bereiten einem diese Biester das Maximum an Obertönen, sowohl in Frequenzbreite als auch Amplitude. Sie sind in gewisser Weise fast als das Gegenteil von schönen Sinuswellen anzusehen. (Die einem aus o.g. Gründen aber trotzdem nicht so wirklich weiter helfen.)
Für die sinnvolle Bewertung von Sprache käme man um eine psycho-akustische Analyse nicht wirklich herum fürchte ich, und selbst dabei dürfte es hart werden wirklich aussagekräftige Maßzahlen herauszumodelieren. So einfach wie in der analogen Welt ist es leider nicht :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:36 Uhr.
Seite 1 von 5  1 23     Letzte » 

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz