1. Tuotteet
  2.   Audio
  3.   Python
  4.   Aubio
 
  

Reaaliaikainen ääni- ja musiikkianalyysi ilmaisella Python-kirjastolla

Aubio on avoimen lähdekoodin Python-äänikäsittelykirjasto, jota ohjelmistokehittäjät käyttävät sävelkorkeuden tunnistukseen, rytmin seurantaan, MFCC:n poimintaan ja reaaliaikaiseen äänenkäsittelyyn.

Mikä on Aubio?

Modernit äänisovellukset—kuten musiikin tuotantotyökalut, äänen analysointialustat ja reaaliaikaiset äänikäsittelyjärjestelmät—vaativat tehokkaita tapoja analysoida äänisignaaleja. Yksi suosittu avoimen lähdekoodin ratkaisu tähän tarkoitukseen on Aubio, kevyt mutta tehokas kirjasto, joka on suunniteltu poimimaan merkityksellistä tietoa äänisignaaleista. Aubio on avoimen lähdekoodin kirjasto, joka on suunniteltu poimimaan merkintöjä ja musiikillisia ominaisuuksia äänisignaaleista. Se analysoi äänivirtoja ja tunnistaa tapahtumia, kuten nuottien aloituskohtia, sävelkorkeutta, iskuja ja tempoa. Se on kirjoitettu pääasiassa C-kielellä korkean suorituskyvyn saavuttamiseksi ja toimii Linux-, macOS- ja Windows-ympäristöissä.

Kirjasto on erittäin helppokäyttöinen ja tukee reaaliaikaista äänenkäsittelyä. Kirjasto voi havaita musiikkitapahtumia, kuten kun rumpuisku tapahtuu, musiikkisävelen taajuus ja kappaleen tempo tai rytmi. Se voi toimia sekä offline-tilassa (äänitiedostot) että reaaliaikaisissa äänivirroissa, mikä tekee siitä sopivan ääni-editorille, digitaalisille instrumenteille ja äänen analyysityökaluille. Tuenaan sävelkorkeuden tunnistusta, rytmin seurantaa, alkutapahtuman tunnistusta, MFCC:n poimintaa ja reaaliaikaista signaalinkäsittelyä, se tarjoaa kehittäjille työkalut kehittyneiden ääni‑sovellusten rakentamiseen.

Previous Next

Aubion käyttöönotto

Helpoin tapa asentaa Aubio on käyttää Python Package Indexiä (PyPI). Käytä seuraavaa komentoa täydelliseen asennukseen.

Asenna Aubion avulla

pip install aubio 

Asenna Aubio GitHubista

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

Alkutilanteen havaitseminen Pythonin avulla

Yksi Aubio‑kirjaston hyödyllisimmistä ominaisuuksista on aloitustunnistus, joka tunnistaa, milloin musiikkisävel tai äänitapahtuma alkaa. Aloitustunnistus löytää tarkan hetken, jolloin uusi ääni tai musiikkisävel alkaa. Musiikissa "aloitus" on sävelen isku — hetki, jolloin rumpu lyödään, kitara naputetaan tai ääni aloittaa tavun. Aubio sisältää useita aloitustunnistusalgoritmeja eri käyttötapauksiin. Seuraava esimerkki osoittaa, miten havaita aloituksia äänitiedostossa Python‑koodilla.

Kuinka havaita äänen aloituskohtia ääni­tiedostossa Python‑kirjaston avulla?


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

Sävelkorkeuden havaitsemisen tuki

Taajuustunnistus on toinen tärkeä ominaisuus avoimen lähdekoodin Aubio‑kirjastossa. Taajuustunnistus tunnistaa äänen perustaajuuden (F0) — käytännössä "mikä musiikkisävel tämä on?" Se on jokaisen virityslaitteen, melodian poimijan tai äänenanalyysityökalun ydin. Aubio tukee useita taajuustunnistusalgoritmeja, kuten yin, yinfft, mcomb, fcomb ja niin edelleen. Tässä on yksinkertainen esimerkki, joka osoittaa, miten suorittaa reaaliaikainen taajuustunnistus Python‑sovelluksissa.

Kuinka suorittaa reaaliaikainen sävelkorkeuden havaitseminen Pythonilla?


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)

Tempon seuranta ja rytmin havaitseminen Pythonin avulla

Avoimen lähdekoodin Aubio-kirjasto voi analysoida rytmisiä kuvioita ja havaita lyöntejä sekä tempoa musiikissa Python-sovelluksissa. Aubio voi kuunnella ääntä ja napauttaa mukana — havaitseminen tempo BPM (lyöntiä per minuutti) ja tarkkailla yksittäisiä lyöntien aikaleimoja. Tämä on korvaamatonta kaikessa DJ-ohjelmistosta musiikin synkronointiin. Kirjasto määrittää lyöntien sijainnit analysoimalla spektrimuutoksia ja rytmisiä kuvioita äänisignaalissa.

Äänitiedostojen lukeminen ja kirjoittaminen Pythonin avulla

Python-kirjasto Aubio käärii äänitiedostojen I/O:n lähde- ja kohdeobjektien kautta, tukien useita formaatteja (WAV, FLAC, OGG, MP3 libav:n tai ffmpeg:n kautta) ja hoitaen näytetaajuuden muunnoksen automaattisesti. Tässä on yksinkertainen esimerkki, joka näyttää, miten ohjelmistokehittäjät voivat lukea, käsitellä ja kirjoittaa äänitiedostoja Python-komentoja käyttäen.

Kuinka lukea, käsitellä ja kirjoittaa ääni­tiedostoja Pythonilla?


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

 Suomen