Echtzeit-Audio- und Musikanalyse mit kostenloser Python-Bibliothek
Aubio ist eine Open-Source-Python-Audiobearbeitungsbibliothek, die von Softwareentwicklern für Tonhöhenerkennung, Beat-Tracking, MFCC-Extraktion und Echtzeit-Audiobearbeitung verwendet wird.
Was ist Aubio?
Moderne Audioanwendungen—wie Musikproduktionswerkzeuge, Audioanalyseplattformen und Echtzeit‑Sound‑Verarbeitungssysteme—benötigen effiziente Methoden zur Analyse von Audiosignalen. Eine beliebte Open‑Source‑Lösung dafür ist Aubio, eine leichte, aber leistungsstarke Bibliothek, die entwickelt wurde, um bedeutungsvolle Informationen aus Audiosignalen zu extrahieren. Aubio ist eine Open‑Source‑Bibliothek, die darauf ausgelegt ist, Annotationen und musikalische Merkmale aus Audiosignalen zu extrahieren. Sie analysiert Audiostreams und identifiziert Ereignisse wie Noten‑Onsets, Tonhöhe, Beats und Tempo. Sie ist hauptsächlich in C geschrieben für hohe Leistung und funktioniert unter Linux, macOS und Windows.
Die Bibliothek ist sehr einfach zu handhaben und unterstützt die Echtzeit-Audiobearbeitung. Die Bibliothek kann musikalische Ereignisse erkennen, wie zum Beispiel wann ein Schlagzeugschlag auftritt, die Frequenz einer musikalischen Note und das Tempo oder den Rhythmus eines Tracks. Sie kann sowohl offline (Audiodateien) als auch in Echtzeit-Audiostreams betrieben werden, was sie für Audioeditoren, digitale Instrumente und Klanganalyse-Tools geeignet macht. Mit Unterstützung für Tonhöhenerkennung, Beat-Tracking, Onset-Erkennung, MFCC-Extraktion und Echtzeit-Signalverarbeitung bietet sie Entwicklern die Werkzeuge, die zum Erstellen fortschrittlicher Audioanwendungen nötig sind.
Erste Schritte mit Aubio
Der einfachste Weg, Aubio zu installieren, ist die Verwendung des Python Package Index (PyPI). Bitte verwenden Sie den folgenden Befehl für die vollständige Installation.
Installation mit Aubio
pip install aubio Aubio von GitHub installieren
go get -u github.com/aubio/aubio.git Onset-Erkennung mit Python
Eines der nützlichsten Merkmale der Aubio-Bibliothek ist die Onset-Erkennung, die erkennt, wann ein musikalischer Ton oder ein Soundereignis beginnt. Die Onset-Erkennung findet den genauen Moment, an dem ein neuer Klang oder musikalischer Ton beginnt. In der Musik ist ein \"Onset\" der Anschlag eines Tons — der Augenblick, in dem eine Trommel geschlagen, eine Gitarre gezupft oder eine Stimme eine Silbe beginnt. Aubio enthält mehrere Onset-Erkennungsalgorithmen für verschiedene Anwendungsfälle. Das folgende Beispiel zeigt, wie man Onsets in einer Audiodatei mit Python-Code erkennt.
Wie erkennt man Anfänge in einer Audiodatei mit einer Python-Bibliothek?
import aubio
import numpy as np
# Configuration
filename = "audio_sample.wav"
win_s = 512 # FFT window size
hop_s = 256 # Hop size (frames between analysis windows)
# Open the audio source
src = aubio.source(filename, hop_size=hop_s)
samplerate = src.samplerate
# Create the onset detector (using 'complex' method)
onset = aubio.onset("complex", win_s, hop_s, samplerate)
# Set detection threshold (0.0 to 1.0 — lower = more sensitive)
onset.set_threshold(0.3)
onsets = []
# Process audio frame by frame
while True:
samples, read = src() # Read one hop of audio
if onset(samples): # Returns True when onset detected
print(f"Onset at: {onset.get_last_s():.3f} seconds")
onsets.append(onset.get_last_s())
if read < hop_s: # End of file
break
print(f"\nTotal onsets detected: {len(onsets)}")
Unterstützung für Tonhöhen-Erkennung
Die Tonhöhenbestimmung ist eine weitere wichtige Fähigkeit der Open-Source-Aubio-Bibliothek. Die Tonhöhenbestimmung ermittelt die Grundfrequenz (F0) eines Klangs — im Wesentlichen \"welcher musikalische Ton ist das?\". Sie ist das Kernstück jedes Stimmgeräts, Melodie-Extraktors oder Stimm-Analysetools. Aubio unterstützt mehrere Tonhöhenbestimmungs‑Algorithmen wie yin, yinfft, mcomb, fcomb und so weiter. Hier ist ein einfaches Beispiel, das zeigt, wie man in Python‑Anwendungen eine Echtzeit‑Tonhöhenbestimmung durchführt.
Wie führt man Echtzeit-Pitch-Erkennung mit Python durch?
import aubio
import numpy as np
samplerate = 44100
win_s = 1024
hop_s = 512
pitch_o = aubio.pitch("yin", win_s, hop_s, samplerate)
pitch_o.set_unit("Hz")
pitch_o.set_silence(-40)
samples = np.random.rand(hop_s).astype(np.float32)
pitch = pitch_o(samples)
print("Detected pitch:", pitch)
Tempoverfolgung und Beat-Erkennung mit Python
Die Open-Source-Bibliothek Aubio kann rhythmische Muster analysieren und Beats sowie das Tempo in Musik innerhalb von Python-Anwendungen erkennen. Aubio kann Audio hören und mitklopfen – das Tempo in BPM (Beats per Minute) erfassen und einzelne Beat‑Zeitstempel bestimmen. Das ist unverzichtbar für alles von DJ-Software bis hin zur Musiksynchronisation. Die Bibliothek ermittelt Beat‑Positionen, indem sie spektrale Veränderungen und rhythmische Muster im Audiosignal analysiert.
Einlesen und Schreiben von Audiodateien mit Python
Die Python-Bibliothek Aubio kapselt die Audio‑Datei‑Ein‑/Ausgabe über ihre Source‑ und Sink‑Objekte, unterstützt mehrere Formate (WAV, FLAC, OGG, MP3 über libav oder ffmpeg) und übernimmt die Sample‑Rate‑Konvertierung automatisch. Hier ist ein einfaches Beispiel, das zeigt, wie Softwareentwickler das Lesen, Verarbeiten und Schreiben von Audiodateien mit Python‑Befehlen durchführen können.
Wie liest, verarbeitet und schreibt man Audiodateien mit Python?
import aubio
import numpy as np
input_file = "input.wav"
output_file = "output.wav"
target_samplerate = 22050 # Downsample to 22.05 kHz
hop_s = 512
# Open source — resamples automatically to target samplerate
src = aubio.source(input_file, samplerate=target_samplerate, hop_size=hop_s)
actual_sr = src.samplerate
num_channels = src.channels
# Open sink for writing
sink = aubio.sink(output_file, actual_sr, channels=1)
while True:
samples, read = src()
# Write mono (sink expects 1D array for mono output)
if num_channels > 1:
mono = samples.reshape(num_channels, -1).mean(axis=0)
else:
mono = samples
sink(mono[:read], read)
if read < hop_s:
break
del sink # Flushes and closes file
print(f"Written {output_file} at {actual_sr} Hz")