| Autor |
Beitrag |
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 03.06.08 17:08
Moin,
ich würde gern ein programm schreiben das 2 sounds vergleicht.
also klanglich vergleichen und wenn eine gewisse ähnlichkeit besteht
soll irgendwas gemacht werden... .
er soll auf tonhöhe und tonreihenfolge vergleichen.
IST DAS IRGENDWIE MÖGLICH????
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Di 03.06.08 17:15
Ja.
Aber: Du willst nicht zufällig deinen Roboter per Sprache steuern, oder?
_________________ We are, we were and will not be.
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: Di 03.06.08 17:17
Ich würde spontan mal zur BASS.DLL raten.
Wenn du allerdings das vorhast, was Gausi vermutet, kannst du die BASS.DLL gleich wieder vergessen.
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 03.06.08 17:26
@Gausi ich bin nicht verrückt.das mit der sprache stimmt nicht.ich wollt es einfach nur so.es wäre sowiso völliger quatsch.
*IDEE* wenn man statt einem chip einfach gleich ein ganzen PC anbaut funz es bestimmt.wird bloß a bissl groß,oder.
Die bass.dll von dieser 2d engine,oder welche meinste?
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: Di 03.06.08 17:27
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Di 03.06.08 17:29
ich würd ja mal spontan tippen: Kommunikation zweier Roboter per Sound.. IMHO eventuell eher Infrarot nehmen(macht ja Lego auch so mit seinem RCX). Damit kannst du gleichzeitig noch Entfernungsmessungen vornehmen, man hört den Roboter nicht ständig...
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 03.06.08 17:31
war in dieser fear 2d engine nicht auch ne bass.dll
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: Di 03.06.08 17:33
Vielleicht mitgeliefert, aber sonst hat die BASS.DLL nichts mit Fear2D zu tun.
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Di 03.06.08 17:34
die bass.dll gibts auf un4seen.com , aber ich wüsste nicht, dass die bei dem Problem helfen kann. 
_________________ We are, we were and will not be.
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 03.06.08 17:35
was kann man sonst machen
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: Di 03.06.08 17:39
Also ich würde mir irgendwie die Wellen aufzeichnen lassen und dann vergleichen.
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 03.06.08 17:42
daran hatte ich auch schon gedacht.
aber wie geht das?
|
|
Gummibär
      
Beiträge: 18
Erhaltene Danke: 11
Delphi 7, Turbo Delphi
|
Verfasst: Mi 04.06.08 07:32
Das ist alles gar nicht so trivial.
Bei "Tonhöhe" denkt man ja gleich wieder an FFT. Da erhält man i.d.R. aber ein ganzes Spektrum von Frequenzen.
Gibt es bei den zu vergleichenden Tonsequenzen irgendwelche Rahmenbedingungen, oder sind das beliebige Geräusche? Wenn Tonhöhen und Tonfolge verglichen werden sollen, kann man von gleicher Geschwindigkeit der Töne ausgehen, oder sind die Abspielgeschwindigkeiten beliebig? Handelt es sich um reine Töne (Sinuskurve) oder Auszüge aus einer Wagneroper mit Zuschauergekeuche?
Ohne selber wirklich Ahnung zu haben - Vielleicht kann man wie folgt rangehen?
1. Man zerlegt die Tonspuren in kleine Portionen von beispielsweise 0.25sec. (Dürfen sich auch überlappen, und die Länge sollte am besten als Zweierpotenz darstellbar sein, wegen der FFT)
2. Über jede dieser kleinen Blöcke läßt man eine FFT laufen und isoliert die dominanteste Tonfrequenz (Vielleicht sollte man sich hier eine Minimum-Amplitude überlegen: Kommt keine Amplitude drüber, dann hat man nur Rauschen und keinen Ton - den Sample vergißt man dann einfach..
3. Aus der erhaltenen Kette von Frequenzen (zB. 440,441,330,332,331,220....) wirft man die Wiederholungen raus (wobei kleine Schwankungen erlaubt sind). Ergäbe im Beispiel (440,330,220). Das wäre somit die im Stück gefundene Tonfolge (a', e', a), ohne Berücksichtigung der Abspieldauer.
4a. Nun könnte man diese beiden Tonfolgen miteinander vergleichen (Korrelation), oder
4b Man berechnet erst mal die Tonänderungen. Beispielsweise geht es von 440Hz zu 220Hz eine Oktave runter, das wären 12 Halbtonschritte. Für obige Kette erhielte man -5, -7 (vom a' runter zum e' und von da runter zum nächsten a). Damit hätte man die Tonfolge von der Tonhöhe separiert, und man könnte auch transponierte Tonfolgen vergleichen (wieder mit Korrelation).
Soweit ich gehört habe, bietet die Bass.dll auch eine FFT. Ist aber nur hörensagen. FFT für Pascal findet man eh überall im Netz...
Nur so meine Gedanken zum Thema
Gruß
Michael
Edit: Da fällt mir noch ein: Bei komplexeren Tönen (Musik etc) ist die Frequenz mit der stärksten Amplitude nicht unbedingt die des von unserem Gehör wahrgenommenen Tones, sondern nur ein Oberton. Der ist allerdings meist um ein paar Oktaven nach oben verschoben. Das könnte die Analyse der Tonfolge erschweren...
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 04.06.08 16:28
danke für den "Roman" den du geschrieben hast.
bei mir ging es um spracherkennung.
das programm sollte eben zwei wörter/sätze miteinander
vergleichen.
Aber was ist FFT.ich kenn mich in der sparte nicht ganz aus.
gibt es dafür irgenwelche tutorials/bücher für delphi?
VLG
j.klugmann
|
|
nagel
      
Beiträge: 708
Win7, Ubuntu 10.10
|
Verfasst: Mi 04.06.08 16:36
FFT = Fast Fourier Transform
 Google
j.klugmann hat folgendes geschrieben: | | @Gausi ich bin nicht verrückt.das mit der sprache stimmt nicht.ich wollt es einfach nur so.es wäre sowiso völliger quatsch. |
j.klugmann hat folgendes geschrieben: | | bei mir ging es um spracherkennung. das programm sollte eben zwei wörter/sätze miteinander vergleichen. |
Wie jetzt?
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 04.06.08 16:45
NEIN,ICH WILL KEINEN SPRACHGESTEUERTEN ROBOTER BAUEN.ICH BIN NICHT AUS STAR WARS ODER SO ETWAS.
Ich wollte einfach nur ein programm schreiben das zwei töne miteinander vergleicht.
Ist das so schwer zu verstehen.Nur weil ich das mit dem roboter gefragt habe. 
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: Mi 04.06.08 16:49
j.klugmann hat folgendes geschrieben: | | bei mir ging es um spracherkennung. das programm sollte eben zwei wörter/sätze miteinander vergleichen. |
Aber es hat schon was mit Spracherkennung zu tun, oder wie? 
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 04.06.08 16:58
ja,ich wollte eingentlich ein passwortschutz machen ,bei dem man ein bestimmtes wort sagen muss
damit man irgendeine anwendung starten kann.
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mi 04.06.08 17:09
In der Delphipraxis gibt es iirc einen Beitrag zu Einzelworterkennung in der Opensource-Sparte. Das könnte was für dich sein.
_________________ We are, we were and will not be.
|
|
Gummibär
      
Beiträge: 18
Erhaltene Danke: 11
Delphi 7, Turbo Delphi
|
Verfasst: Mi 04.06.08 17:17
Okay, für die Spracherkennung kann man meinen Ansatz in die Tonne treten.
Allerdings könnte ich mit vorstellen, daß man um die FFT nicht ganz herumkommt.
Apropos FFT: Man kann sich das Wellenmuster eines Audiosamples als Summe vieler Sinusschwingungen unterschiedlicher Wellenlänge vorstellen. Grobgesprochen zerlegt die FFT das Ausgangssignal in diese Sinusschwingungen und sagt einem, wieviel (Amplitude) man von jeder einzelnen benötigt.
Die Erläuterungen dazu im Internet können einen aber auch einschüchtern...
Ich hab mal auf die Schnelle ein Bildchen dazu fabriziert. Die Grafik im Anhang zeigt das Ausgangssignal als rote Linie. Und die möchte ich gerne in vier Sinusschwingungen unterschiedlicher Wellenlänge zerlegt haben (das sind die 4 blauen Linien, eine mit einem "Bauch", eine mit zwei Bäuchen etc...).
Summiert man diese vier blauen Linien auf, erhält man noch nicht die rote Kurve, man muß erst wissen, wieviel man von jeder blauen Kurve nehmen darf. Und das erzählt einem die FFT: Rote Kurve = 0.2*Einfachschwingung - 0.3*Zweifachschwingung + 0.3*Dreifachschwingung - 0.2*Vierfachschwingung...
Mist, irgendwie ist diese Erklärung auch nicht besonders erhellend...
Gruß
Michael
Einloggen, um Attachments anzusehen!
|
|