![]() |
zwei Sounds vergleichen
Hallo,
wie kann man zwei sounds vergleichen, die ähnlich sind, also nicht exakt (für alle, die am freitag geniale erfinder geguckt haben:ich meine das mit der "intelligentesten Tür der Welt") |
Re: zwei Sounds vergleichen
Vielleicht lädts du die in zwei Streams und vergleichst die miteinader.
Ich hab noch irgendwo Source. Ich schau mal und Poste dann. |
Re: zwei Sounds vergleichen
Hier:
Delphi-Quellcode:
function CompareFiles(const sFileName1, sFileName2: String): Boolean;
var ms1, ms2: TMemoryStream; begin Result := False; ms1 := TMemoryStream.Create; try ms1.LoadFromFile(sFileName1); ms2 := TMemoryStream.Create; try ms2.LoadFromFile(sFileName2); If ms1.size = ms2.size Then Result := CompareMem(ms1.Memory, ms2.memory, ms1.size); finally FreeAndNil(ms2); end; finally FreeAndNil(ms1); end end; |
Re: zwei Sounds vergleichen
Zitat:
|
Re: zwei Sounds vergleichen
:oops: Wer lesen kann ist klar im Vorteil :oops:
Böse Spinne <- *pfui* |
Re: zwei Sounds vergleichen
Hi,
wobei man gucken kann, wie groß die Differenz ist. ;) Ich weiß nicht, wie deine Sounddateien aufgebaut sind, aber wenn in jedem Byte ein Wert steht, kannst du dir ja einen Gültigkeitsrahmen bauen. Und dann guckst, du wie groß die Differenz ist und ob sie noch in dem Rahmen sind. Chris |
Re: zwei Sounds vergleichen
Das Theme ist ein sehr komplexes Thema und beinhaltet ein gehörige Portion an Verständnis bezüglich Mathematik und Physik.
Als Schlagworte die dir bei einer Einarbeitung helfen könnten wären z.B. FFT (Fast Fourier Transformation), Hüllkurve, Frequenzspekturm und ähnliches. Ich denke für eine halbwegs leistungsfähige Lösung mußt Du vermutlich entweder einiges an Geld locker machen (für entsprechende FFT,...-Komponenten) oder sehr viel Wissen in diesem Bereich um alles selbst zu realisieren. |
Re: zwei Sounds vergleichen
Hi Bernhard,
sofern es eine richtige Spracherkennungssoftware geht, hast du Recht, allerdings sollte was ganz einfaches so möglich sein, wie Spider es gepostet hat. Nur müsste man das Datenformat kennen und somit die Werte vergleichen zu können. Chris |
Re: zwei Sounds vergleichen
Man könnte beide Dateien binaär laden und kucken wie viele Bytes identisch sind.
|
Re: zwei Sounds vergleichen
Ganz gemein wird das mit Sounds die in irgend einer Art komprimiert sind, und/oder nicht die selben Randbedingungen (Samplingrate, Mono/Stereo, Bittiefe) haben. Ein Byteweiser Vergleich ist dann nahezu nicht mehr möglich! Ein und der selbe Sound, ein mal als original Wave und ein mal als mp3 hören sich zwar verdammt ähnlich an, aber die Wellenform dürfte zuweilen erheblich anders aussehen.
Man arbeitet also mit einer tierischen Toleranz, oder man nimmt sich eine Transformation (FFT, Karhunen-Loewe, etc.) zur Hand und vergleicht quatisierte Spektren. Das wäre eher der Weg der zum Erfolg führen würde. (Eine Hüllenkurve würde auch weiter helfen, ist aber nicht unbedingt erforderlich hierbei.) Fazit: Einfach nach dem Schema "if a=b then..." wird das nix. |
Re: zwei Sounds vergleichen
Hi Chris,
ich denke nicht das deine (auch noch relative einfache) Lösung mittels Gültigkeitsrahmen zu einem Ziel führt. Wann ist ein Sound ähnlich? Er muß ähnliche Klangfolgen in ähnlichen Zeitabständen haben. Es ist z.B. immer noch sehr ähnlich wenn er z.B. 2 % schneller gespielt wird oder um ein paar Takte tiefer. Eine gepfiffene Melodie ist (wenn der Pfeiffer nicht so schlecht pfeift wie ich) auch noch dem "Orginal" ähnlich, als wenn das Stück mit einem Orchester gespielt wird. Ich glaube im letzten Jahre wurden zu diesem Themenbereich in Funk und Fernsehen einige Lösungen präsentiert, welche z.B. einen Popsong aufgrund einer Übertragung per Handy erkennen konnte ( ![]() |
Re: zwei Sounds vergleichen
Hi Bernhard,
natürlich hast du Recht: für eine komplexe Spracherkennung wird es nötig solche Dinge zu berücksichtigen. Ich habe am Freitag die Sendung nicht gesehen, allerdings denke ich, dass die Tür den Namen des Sprechers erkannt hat und damit entschieden hat, ob man eintreten darf oder nicht. Und sofern es darum geht, wird ein Name nur ähnlich ausgesprochen, wenn der jenige das spricht. Hier kommt es dann nur noch auf Geschwindigkeit an. Wenn ich jetzt darüber nachdenke, hast du wohl auch hier Recht. :wall: Wenn es jedoch wirklich nur um etwas einfaches gehen soll, sollte für den Anfang Spiders/Meine Lösung oder Luckies helfen. Chris |
Re: zwei Sounds vergleichen
Ein akustisches Signal ist aus so vielen einzelnen Parametern zusammengesetzt: den Amplituden der einzelnen Frequenzen, von denen man eine größere Anzahl betrachten muss, damit eine Stimmerkennung (und darum geht's doch? -- hab die Sendung nicht gesehen) einigermaßen zuverlässig funktioniert. Auch wenn die Amplituden der Frequenzen nur leicht abweichen, ändert sich das Ergebnis, das man als Bytes dargestellt bekommt, völlig (bei genügend hoher Samplingrate, die für eine auch nur einigermaßen zuverlässige Erkennung notwendig ist). Ein byteweiser Vergleich bringt genau gar nichts.
dizzy und Bernhard haben Recht, ein Vergleich der Resultate der DFT/FFTs sollte die am einfachsten zu machende Lösung sein. |
Re: zwei Sounds vergleichen
hallo, ich glaube ihr denkt viel zu kompliziert, denn es soll keine Spracherkennung sein(dafür hab ich Microsoft Speech SDK).
"Die intelligenteste Tür der Welt" ging so: Mikro am boden und zuerst der sound (der Gang der Person) von (z.B.)Tom aufgenommen. Anschließend noch der von Tom2. Dann noch der von Katharina1 und SabineX. Dann ging einer der 4 zur Tür(also am Mikro vorbei, dass die geräusche aufnam) und die Tür erkannte nach ca. eine halbe Sekunde, wer es war. Man könnte natürlich die DIfferenz und die LAutstärke der "aufprall-geräusche" messen/kontrollieren, aber: WIE? [edit]PS:Die Sounds sind also vom Prog selber aufgenommen und sind nicht komprimiert(und wenn doch, weiß man welche komprimierung)[/edit] |
Re: zwei Sounds vergleichen
Zitat:
|
Re: zwei Sounds vergleichen
mit der bass.dll könntest du einfach FFT nutzen.
|
Re: zwei Sounds vergleichen
Zitat:
Viele Grüße, Sebastian |
Re: zwei Sounds vergleichen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz