1

Ich arbeite an einem Projekt und habe einen Haken gefunden, der mein Verständnis übertrifft. Mein Ziel ist es, ein künstliches neuronales Netzwerk zu schaffen, das Informationen aus einer Sounddatei erhält, die dann durch das System portiert wird, was zu einer Beschriftung des Akkords führt. Ich hoffe, dass ich dies bei der Musiktranskription unterstützen kann - nicht um die Transkription selbst zu machen, sondern um bei der Harmonisierung zu helfen. Ich schweife ab.Ändern der Toneingabe zur Bestimmung der Frequenz

Ich habe so viel gelesen wie ich kann auf der Goertzel und der FFT-Funktion, aber ich bin mir nicht sicher, ob diese Funktionen sind, was ich suche. Ich suche keine bestimmte Frequenz in der Klangprobe, sondern hoffe, dass ich die höheren, mittleren und tiefen Frequenzen des Samples finde.

Ich weiß, dass der Goertzel-Algorithmus eine hohe Zahl zurückgibt, wenn eine bestimmte Frequenz gefunden wird, aber es scheint rechnerisch verschwenderisch zu sein, den Algorithmus für alle möglichen Töne in einer gegebenen Probe auszuführen. Irgendwelche Ideen auf was zu verwenden?

Oder, wenn das nicht möglich ist, würde ich das auch gerne wissen, bevor ich zu viel Zeit für dieses eine Projekt aufgebe.

Vielen Dank für Ihre Zeit!

+0

Was meinen Sie mit mittleren, höheren und niedrigeren "Frequenzen"? Dies sollte die erste Frage sein, die Sie sich stellen. Du bist auch im falschen Forum. – Mehno

Antwort

0

FFT ist die richtige Lösung. Wenn Sie die FFT eines Eingangssignals haben, das nur aus Sinuswellen besteht, können Sie den Akkord bestimmen, indem Sie einfach festlegen, welche Frequenzen zu bestimmten Tönen in welchem ​​musikalischen Temperament Sie verwenden möchten, und dann den von ihnen spezifizierten Akkord nachschlagen Töne. Wenn Sie keine Sinuswellen als Eingabe haben, dann ist die Verwendung eines neuronalen Netzwerks ein gültiger Versuch, das Problem zu lösen, vorausgesetzt, Sie haben genug Proben, um es zu trainieren.

1

Wahrscheinlich besser für DSP StackExchange geeignet.

Angenommen, Sie senden einen einzelnen 110 Hz-Ton, um ein Spektrogramm zu erhalten; Sie sehen gleichmäßig beabstandete Spitzen bei 110 220 330 usw. Hz - die Harmonischen. 110 ist das Fundamentale.

Angenommen, Sie haben 3 Töne. Schon wird es im Frequenzbereich ziemlich chaotisch aussehen. Besonders wenn Sie einen Akkord haben, der z.B. A110 und A220.

Aus diesem Grund denke ich, ein neuronales Netzwerk ist ein guter Ansatz.

Einspeisung FFT-Ausgang.

Es wäre eine gute Idee, ein neuronales Netzwerk zu verwenden, das komplexwertige Eingaben akzeptiert, als FFT-Ausgaben einer komplexen Zahl für jede Frequenzablage.

http://www.eagle.tamut.edu/faculty/igor/PRESENTATIONS/IJCNN-0813_Tutorial.pdf

Es kann rechnerisch verschwenderisch scheint so viele Frequenzen mit FFT, aber FFT-Algorithmen sind extrem effizient heutzutage zu extrahieren. Sie sollten wahrscheinlich eine Bitstärke von 10 verwenden, also 2^10 Eingänge -> 2^9 = 512 komplexe Bins.

+0

Danke für diese Information. Ich habe so viel wie möglich über die FFT gelesen und wie das alles funktioniert, aber könnten Sie in musikalisch-nicht-mathematischen Begriffen erklären (was möglich ist), was die FFT numerisch zurückgibt und wie sie sich auf die Präsenz bezieht einer bestimmten Tonhöhe? Ich weiß, es gibt 2 Werte, einen realen Kosinus-Wert und einen komplexen Sinus-Wert, aber was bedeuten sie eigentlich? – fhornplayer

0

FFT ist der richtige Weg. Oberschwingungen stören Sie nicht, da sie ein ganzzahliges Vielfaches der Grundfrequenz sind, sie sind nur höhere 'Oktaven' der gleichen Note. Und um einen Akkord zu erkennen, spielen Transponierungen von Noten über ganze Oktaven keine Rolle.