![]() |
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 :)
|
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 |
Re: Tonhöhe herausfinden
Ok ich kann sagen es soll in das mikrofon gesungen werden. Und zwar am besten ein ganzes Lied... :mrgreen: ...
|
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. |
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 ?
|
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.
|
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.
|
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.
|
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
|
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 |
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. |
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 ![]() 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 06:44 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-2025 by Thomas Breitkreuz