Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Tonhöhe herausfinden (https://www.delphipraxis.net/48495-tonhoehe-herausfinden.html)

Neutral General 26. Jun 2005 11:27


Tonhöhe herausfinden
 
Mir ist leider kein besserer Titel eingefallen. Ich möchte das der Benutzer ins Mikrofon spricht und mein programm dann herausfindet was das für ein Ton war. Ich schätze mal das geht irgendwie mit der Bass.dll und ich schätze es ist einfacher gesagt als getan aber ich würde mich für einige Ansätze freuen :)

tn249 26. Jun 2005 11:37

Re: Tonhöhe herausfinden
 
Das was ein normaler Mensch redet, entspricht nicht einem Ton, weil selbst all die Konsonanten Töne bestimmte Frequenzen sind und man auch den Tonfall berücksichtigen muss.

Das Gesprochene ist eine Überlagerung von Dutzenden Sinuskurven, die dann erst die Einmaligkeit bewirken, durch die wir genau erkenn wer gesprochen hat (wenn wir die Stimme kennen).

Etwas leichter ist das wenn du jemand in ein Mikrofon singen lässt, aber auch nur einen Vokal, am besten "a"
(Ich kenne das aber nur von den kleinen Geräten, die man zum Stimmen von Instrument verwendet, wie die im Detail funktionieren weiß ich nicht)

Mehr kann ich dazu nicht sagen

MfG
Thomas

Neutral General 26. Jun 2005 11:39

Re: Tonhöhe herausfinden
 
Ok ich kann sagen es soll in das mikrofon gesungen werden. Und zwar am besten ein ganzes Lied... :mrgreen: ...

leddl 26. Jun 2005 11:43

Re: Tonhöhe herausfinden
 
OK, das selbe wollte ich auch gerade sagen. Daher jetzt mal nur ne Ergänzung:
Selbst, wenn du deinen User nur ein a ins Mikro singen läßt, könnte es schwierig sein. Denn nur die wenigsten werde da einen perfekten Ton treffen. Und solange das nicht der Fall ist, mußt du wieder Frequenzen filtern.

Neutral General 26. Jun 2005 11:50

Re: Tonhöhe herausfinden
 
Könnte man nicht "einfach" die Frequenz herausfinden und dann festlegen : von der Frequenz a bis zur Frequenz b ist der Ton etwa ein C ?

leddl 26. Jun 2005 11:54

Re: Tonhöhe herausfinden
 
Was meinst du jetzt mit "von Frequenz a bis b"? In der Stimme überlagern sich verschiedene Frequenzen. Ich kenne mich in der Materie jetzt auch nicht besonders gut aus, aber ich gehe mal davon aus, daß es relativ kompliziert ist, diese Frequenzen zu trennen. Danach dürfte es aber nicht mehr so schwer sein.

Neutral General 26. Jun 2005 11:56

Re: Tonhöhe herausfinden
 
Naja es wird doch sicher eine gesamt Frequenz geben. Dann kann man doch sagen wenn die Frequenz zwischen 1132 und 1354 liegt dann ist der Ton ein C. Ansonsten wäre ich gerne mal über praktische Beispiele und Ansätze dankbar.

leddl 26. Jun 2005 12:08

Re: Tonhöhe herausfinden
 
Naja, ganz so einfach ist das nicht. Das mit der Frequenz kommt auch immer auf den Sprecher/Sänger an. Aber wie gesagt, ich kenne mich in der Materie auch nicht besonders aus.

SirThornberry 26. Jun 2005 12:08

Re: Tonhöhe herausfinden
 
ein "Stefan Huber" hat da mal was dazu gemacht. Er hat das irgendwie als Studienabschlussarbeit oder wie man das nennt gemacht. Du stellst dir das ganze aber etwas zu leicht vor.. naja, versuch mal ob du bei google was zu seiner arbeit findest und nimm eventuell dann kontakt zu ihm auf

Newbie44 26. Jun 2005 12:09

Re: Tonhöhe herausfinden
 
Du kannst schon anhand von Frequenzen (A = 440 hz) z. B. die tonhöhe ermitteln jedoch brauchst du dafür nicht nur die Bass.dll sondner auch gut FFT kennnisse.

Denn leicht ist das nicht

dizzy 26. Jun 2005 12:09

Re: Tonhöhe herausfinden
 
Du musst auf jeden Fall zunächst eine FFT-Analyse des Inputs machen. Damit hast du ein Abbild des Frequenzspektrums. Die Frequenzen die eine Stimme einzigartig machen nennen sich Formanten. Diese musst du auch auf jeden Fall herausfiltern, was durchaus machbar ist, da sie den gesamten Ton über so gut wie konstant bleiben. (Also NUR machbar wenn nicht nur ein Ton gesungen wird! Die Formanten sind in der Regel leiser als der eigentliche Ton, aber verlassen kann man sich nicht darauf.)
Was übrig bleiben sollte sind die gesungenen Frequenzen, ihre Obertöne und Rauschen. Das Rauschen im besten Fall auch filtern. Die Obertöne sind gemein - du bekommst nur schlecht raus welche Oktave wirklich geklungen ist. Zwar ist diese auch wieder am lautesten, aber da spielt dann wieder rein was der Mensch bei verschiedenen Frequenzen als laut empfindet... Wenn du die Oktave nicht brauchchst, dann hast du damit keine Probleme.
Es sind meist noch weitere Obertöne da, die nicht einer Oktave entsprechen, aber die sollten leise genug sein. Alles in allem keine allzu leichte Aufgabe das ganze.

Neutral General 26. Jun 2005 12:14

Re: Tonhöhe herausfinden
 
Ok ich merke es wird NOCH schwerer als ich gedacht hatte. Ich habe noch ein paar Fragen :

1. Was ist eine FFT-Analyse und was braucht man dafür bzw wie macht man sowas ?
2. Wie filtert man das ganze Unnütze da raus ?
3. Ist das dieser Stefan Huber ?

Zu den Oktaven. Also es ist egal welches C jetzt gesungen wird. Hauptsache C. Ich hoffe das hast du gemeint. Falls es das einfacher macht bin ich schonmal froh^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:02 Uhr.

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