1. Məhsullar
  2.   Audio
  3.   Python
  4.   Aubio
 
  

Pulsuz Python kitabxanası vasitəsilə real‑zamanlı səs və musiqi təhlili

Aubio, proqram inkişafçıları tərəfindən pitch aşkarlanması, beat izlənməsi, MFCC çıxarışı və real‑zamanlı səs emalı üçün istifadə olunan açıq mənbəli Python səs emalı kitabxanasıdır.

Aubio nədir?

Müasir audio tətbiqləri—məsələn, musiqi istehsalı alətləri, audio analiz platformaları və real‑time səs emalı sistemləri—səs siqnallarını analiz etmək üçün səmərəli yollar tələb edir. Bu məqsəd üçün məşhur açıq mənbə həlli Aubio‑dur, səs siqnallarından mənalı məlumatları çıxarmaq üçün hazırlanmış yüngül, lakin güclü kitabxana. Aubio, səs siqnallarından annotasiyalar və musiqi xüsusiyyətlərini çıxarmaq üçün hazırlanmış açıq mənbə kitabxanadır. O, audio axınlarını təhlil edir və not onsetləri, ton, beat‑lər və tempo kimi hadisələri müəyyən edir. Əsasən C dilində yazılmışdır, yüksək performans üçün və Linux, macOS və Windows platformalarında işləyir.

Kitabxana çox asan idarə olunur və real‑zaman audio emalını dəstəkləyir. Kitabxana barabanın vurulması, musiqi notunun tezliyi və bir trekın tempi və ya ritmi kimi musiqi hadisələrini aşkar edə bilir. O, həm offline (audio faylları) həm də real‑zaman audio axınlarında işləyə bilər, bu da onu audio redaktorları, rəqəmsal alətlər və səs analiz alətləri üçün uyğun edir. Ton aşkar etmə, beat izləmə, başlanğıc aşkar etmə, MFCC çıxarışı və real‑zaman siqnal emalı dəstəyi ilə, inkişaf etdiricilərə qabaqcıl audio tətbiqləri yaratmaq üçün lazım olan alətləri təqdim edir.

Previous Next

Aubio ilə Başlamaq

Aubio‑nu quraşdırmanın ən asan yolu Python Package Index (PyPI) istifadə etməkdir. Tam quraşdırma üçün aşağıdakı əmri istifadə edin.

Aubio istifadə edərək quraşdırın

pip install aubio 

Aubio'yu GitHub-dan quraşdırın

go get -u github.com/aubio/aubio.git 

Python vasitəsilə Onset Aşkarlanması

Aubio kitabxanasının ən faydalı xüsusiyyətlərindən biri onset aşkardır, bu, musiqi notunun və ya səs hadisəsinin nə vaxt başladığını müəyyən edir. Onset aşkarlama yeni bir səsin və ya musiqi notunun dəqiq anını tapır. Musiqidə "onset" notun hücumudur — bir barabanın vurulduğu, bir gitarın çarpıldığı və ya səsin heca başladığı an. Aubio müxtəlif istifadə halları üçün bir neçə onset aşkarlama alqoritmləri ehtiva edir. Aşağıdakı nümunə Python kodundan istifadə edərək audio faylda Onset-ləri necə aşkarlamaq lazım olduğunu göstərir.

Python Kitabxanası vasitəsilə Audio Faylında Onsetləri Necə Aşkar Etmək Olar?


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)}")

Ton Aşkarlanması Dəstəyi

Ton aşkarlama, açıq mənbəli Aubio kitabxanasının başqa bir vacib qabiliyyətidir. Ton aşkarlama bir səsin əsas tezliyini (F0) müəyyən edir — əsasən, "bu hansı musiqi notudur?" Bu, hər hansı bir tənzimləyici, melodiya çıxarıcısı və ya vokal analiz alətinin əsasını təşkil edir. Aubio yin, yinfft, mcomb, fcomb və s. kimi bir neçə ton aşkarlama alqoritmlərini dəstəkləyir. Burada Python tətbiqlərində real‑zamanlı Ton aşkarlamasını necə həyata keçirmək lazım olduğunu göstərən sadə bir nümunə var.

Python vasitəsilə Real-Time Ton Aşkar Etməyi Necə Yerinə Yetirmək Olar?


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)

Python vasitəsilə Tempo İzlənməsi və Beat Aşkarlanması

Açıq mənbəli Aubio kitabxanası Python tətbiqlərində musiqidə ritmik naxışları təhlil edə və döyüntüləri və tempi aşkar edə bilər. Aubio səsi dinləyə və ona uyğun tıqlaya bilər — BPM (dəqiqədəki döyüntülər) ilə tempi aşkar edir və fərdi döyüntü zaman damğalarını müəyyənləşdirir. Bu, DJ proqramlarından musiqi sinxronizasiyasına qədər hər şey üçün qiymətsizdir. Kitabxana səs siqnalındakı spektral dəyişiklikləri və ritmik naxışları təhlil edərək döyüntü yerlərini müəyyən edir.

Python vasitəsilə Səs Fayllarının Oxunması və Yazılması

Python kitabxanası Aubio audio fayl I/O‑nu öz source və sink obyektləri vasitəsilə bürüyür, bir neçə formatı (WAV, FLAC, OGG, libav və ya ffmpeg vasitəsilə MP3) dəstəkləyir və nümunə sürəti konvertasiyasını avtomatik idarə edir. Budur sadə bir nümunə, hansı ki, proqramçılara Python əmrləri ilə audio faylını oxumaq, emal etmək və yazmaq imkanını göstərir.

Python vasitəsilə Audio Faylları Necə Oxumaq, Emal Etmək və Yazmaq Olar?


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")

 Azəri