R ist plattformübergreifend und frei / Open Source.
Laden Sie es, und laden Sie die tuneR
und seewave
-Bibliotheken (installieren Sie sie vom Paketmanager, falls noch nicht installiert).
library(tuneR)
library(seewave)
Laden Sie dann Ihre MP3- oder WAV-Datei:
w = readMP3("dog-whistle-0.mp3")
w = readWave("dog-whistle-0.wav")
Nun zeichnen wir das Spektrum und seine Peaks auf:
fpeaks(meanspec(w), nmax=1)
Ergebnis:
Zahlenergebnis:
fpeaks(meanspec(w), nmax=1, plot=FALSE)
12.05859
Das Obige funktioniert nur mit nicht-musikalischen Daten. Wenn Sie Musikfrequenzen analysieren, werden Sie feststellen, dass die höchsten Frequenzen je nach Instrument (en) immer zwischen 12 und 20 kHz liegen. Diese höchste Frequenz gibt Ihnen jedoch keine Schätzung der gespielten Note, da eine Musiknote, wenn sie von einem Instrument gespielt wird, aus mehreren Frequenzen besteht.
Dies ist das sogenannte "Timbre" eines Instruments, und Sie werden feststellen, dass ein A bei 440 Hz durch eine Flöte andere Frequenzkomponenten enthält als ein A, das von einer E-Gitarre gespielt wird.
Am besten führen Sie eine Dominant-Frequency-Analyse durch, indem Sie die Frequenzspitzen über gleitende Zeitfenster betrachten und prüfen, wo die höchste auftritt.
Es gibt jedoch keine "Frequenz über die Zeit". Sie können nur plotten den Mittelwert (oder dominant) Frequenz über bestimmte gleitenden Zeitfenster . Seewave bietet einige Funktionen zur Auswahl von Zeitfenstern, die jedoch recht kompliziert werden.
Du könntest benutzen
s = specprop(meanspec(w, from=10, to=11))
um die Spektrumseigenschaften von 10 bis 11 Sekunden zu erhalten und dann aufzurufen s$centroid
oder s$mean
um den Schwerpunkt oder die mittleren Frequenzen dieses bestimmten Zeitfensters zu erhalten (obwohl 1 Sekunde für die Audioanalyse ziemlich groß ist).
Wenn Ihre Wave-Datei eine Abtastrate von 44,1 kHz verwendet, können Sie die Abtastrate verringern, um den Rechenaufwand zu verringern, z. B. auf 16 kHz.
w = downsample(w, 16000)
Denken Sie jedoch daran, dass nach dem Nyquist-Theorem die maximale Frequenz, die jetzt dargestellt werden kann, 8 kHz beträgt.
Sie könnten auch nach einer Tonhöhenerkennungssoftware suchen. Wie dieser , der allerdings MATLAB benötigt.
fpeaks
, wissen Sie, ob es eine Funktion gibt, die die Frequenz in Abhängigkeit von der Zeit grafisch darstellt?Haben Sie Audacity ausprobiert ? Es ist ein Freeware-Tool, das einige ziemlich ausgefeilte Analyse-Tools enthält, einschließlich eines Plot Spectrum- Befehls, auf den über Analysieren -> Plot Spectrum ... zugegriffen werden kann .
Beachten Sie, dass Sie mit der MP3-Version der Datei andere Ergebnisse erzielen als mit der WAV-Version, da die MP3-Komprimierung die Wellenform geändert und Artefakte / Aliasing eingeführt hat.
Bearbeiten: Diese Audiodateien, mit denen Sie verknüpfen, sind keine guten Beispiele dafür. Die Dateien mit höheren Frequenzen werden nur mit 44,1 kHz abgetastet, was auf das menschliche Gehör zugeschnitten ist (maximal ca. 20 kHz). Sie können Ultraschallfrequenzen nicht darstellen, ohne die Abtastrate zu erhöhen.
quelle