Holen Sie sich die Amplitude zu einer bestimmten Zeit in einer Sound-Datei?

Ich arbeite an einem Projekt, wo ich die Amplitude des Klangs kennen muss, die von einem Mikrofon auf einen Computer kommt.

Ich bin derzeit mit Python mit dem Snack Sound Toolkit und ich kann Audio aufnehmen aus dem Mikrofon, aber ich muss wissen, wie laut das Audio ist. Ich könnte die Aufnahme in eine Datei speichern und ein anderes Toolkit verwenden, um die Amplitude zu bestimmten Zeitpunkten aus der Audiodatei zu lesen oder zu versuchen, die Amplitude zu bekommen, während das Audio hereinkommt (was fehleranfälliger sein könnte).

Gibt es Bibliotheken oder Beispielcode, die mir dabei helfen können? Ich habe gesucht und so weit das Snack Sound Toolkit scheint meine beste Hoffnung zu sein, aber es scheint nicht, ein Weg zu sein, um direkten Zugang zu Amplitude zu bekommen.

3 Solutions collect form web for “Holen Sie sich die Amplitude zu einer bestimmten Zeit in einer Sound-Datei?”

Betrachtet man die Snack Sound Toolkit Beispiele, scheint es eine dbPowerSpectrum Funktion zu sein.

Aus der Referenz:

DBPowerSpectrum ()

Berechnet das log-FFT-Leistungsspektrum des Tons (bei der in der Startoption angegebenen Stichprobennummer) und gibt eine Liste der dB-Werte zurück. Siehe Abschnitt für eine Beschreibung der restlichen Optionen. Optional kann ein Endpunkt mit der Endoption gegeben werden. In diesem Fall ist das Ergebnis der Durchschnitt der aufeinanderfolgenden FFTs im angegebenen Bereich. Ihr Standardabstand wird aus der fftlength genommen, aber dieser kann mit der überspring-Option geändert werden, die anzeigt, wie viele Punkte das FFT-Fenster jeden Schritt bewegen. Optionen:

EDIT: Ich gehe davon aus, wann du Amplitude sagst, du meinst, wie "laut" der Klang einem Menschen erscheint und nicht die Zeitbereichsspannung (die wahrscheinlich während der gesamten Länge 0 sein würde, da das Integral der Sinuswellen 0 sein wird ZB: 10 * sin (t) ist lauter als 5 * sin (t), aber ihr durchschnittlicher Wert über der Zeit ist 0. (Du willst keine Wechselspannungen an einen Sprecher sowieso senden)).

Um zu bekommen, wie laut der Ton ist, müssen Sie die Amplituden jeder Frequenzkomponente bestimmen. Dies geschieht mit einer Fourier-Transformation (FFT), die den Klang in die Frequenzkomponenten zerlegt. Die Funktion dbPowerSpectrum scheint Ihnen eine Liste der Größen zu geben (verzeihen Sie mir, wenn sich das von der genauen Definition eines Leistungsspektrums unterscheidet) jeder Frequenz. Um das Gesamtvolumen zu erhalten, kannst du einfach die ganze Liste summieren (was nahe sein wird, man kann es immer noch von der percieved Lautheit unterscheiden, da das menschliche Ohr eine Frequenzantwort selbst hat).

Ich bin nicht einverstanden mit dieser "Antwort" von CookieOfFortune.

Bewilligt, die Frage ist schlecht formuliert … aber diese Antwort macht die Dinge viel komplexer als nötig. Ich gehe davon aus, dass mit "Amplitude" du die wahrgenommene Lautheit meinst. Da technisch jede Abtastung im (PCM) Audiostrom eine Amplitude des Signals bei einer vorgegebenen Zeitscheibe darstellt. Um eine loudness-darstellung zu erhalten versuchen eine einfache RMS-Berechnung:

RMS

| K <

Ich bin mir nicht sicher, ob dies helfen wird, aber skimpygimpy bietet Einrichtungen für das Analysieren von WAVE-Dateien in Python-Sequenzen und zurück – Sie könnten potenziell verwenden, um die Wellenform Proben direkt zu untersuchen und zu tun, was Sie mögen. Sie müssen eine Quelle lesen, diese Unterkomponenten sind nicht dokumentiert.

Python ist die beste Programmiersprache der Welt.