Tekoäly tunnistaa pumpun ongelmat äänen perusteella – testin tulokset yllättivät

Tekoäly tunnistaa pumpun äänestä poikkeaman

Asiakas otti yhteyttä ja kysyi, voisimmeko kehittää menetelmän, jolla voitaisiin tunnistaa pumpun mahdolliset vikaantumiset ilman uusia antureita tai mittalaitteita. He halusivat selvittää, onko mahdollista havaita poikkeamia pelkästään pumpun äänen perusteella.

Tavoitteena oli rakentaa koneoppimiseen perustuva tunnistusmenetelmä, joka kuuntelee ääntä, oppii normaalin toiminnan ominaisuudet ja tunnistaa poikkeamat. Ratkaisu päädyttiin toteuttamaan autoencoder-neuroverkon avulla, joka soveltuu erityisesti epänormaalin käytöksen havaitsemiseen ilman erikseen merkittyjä vikatietoja.

Tämä artikkeli kuvaa testin vaiheet ja havainnot, sekä antaa kuvia ja koodiesimerkkejä äänidata-analyysista.

Teollisuudessa pumpun ääni voi paljastaa paljon koneen kunnosta. Tässä projektissa testasin, voiko konvoluutioneuroverkko (CNN) havaita poikkeamia pumpun äänestä ilman fyysisiä antureita. Rakensin siihen perustuvan autoencoder-neuroverkon ja toteutin testit Pythonilla, TensorFlow’lla ja librosalla.

Äänidatan keruu ja esikäsittely

Äänitykset tehtiin iPhonen AVR PRO -tallenninsovelluksella tuotantotilanteessa. Nauhoitukset kattoivat pumppujen käynnistyksiä tuotannon eri vaiheissa.

Jälkikäsittely tehtiin Pythonissa Jupyter Notebookilla:

  • Audiodatan analyysiin käytiettiin librosa-kirjastoa 
  • Äänet muunnettiin mel-spektrogrammeiksi
  • Kuvamuodossa data syötettiin CNN-neuroverkolle

1. Äänidatan keruu ja esikäsittely

  • Pumpun äänet nauhoitettiin iPhonen sovelluksella ja ne tallenettiin .wav-muotoon.
  • Lataus tehtiin librosa.load, jossa sample rate pakotettiin 16 kHz:iin.

 

y, sr = librosa.load(”pump3_1.wav”, sr=16000)

MFCC-koeffisientit (13 kpl) laskettiin ja visualisoitiin:

mfccs = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=13)
librosa.display.specshow(mfccs, x_axis=’time’)

 

Kuva, joka sisältää kohteen teksti, kuvakaappaus, Tontti, viiva

Tekoälyllä luotu sisältö voi olla virheellistä.

Kuva 1: MFCC-koeffisientit pumpun äänestä

  • Mel-spektrogrammi laskettiin ja muunnettiin dB-asteikolle:

mel_spec = librosa.feature.melspectrogram(y=y, sr=sr, n_mels=128)
mel_spec_db = librosa.power_to_db(mel_spec, ref=np.max)
librosa.display.specshow(mel_spec_db, sr=sr, x_axis=”time”, y_axis=”mel”)

Kuva, joka sisältää kohteen kuvakaappaus, Värikkyys, viiva

Tekoälyllä luotu sisältö voi olla virheellistä.

Kuva 2: Mel-spektrogrammi pumpun äänestä

STFT-spektri tehtiin vertailevaksi näkymäksi:

stft = np.abs(librosa.stft(y, n_fft=2048, hop_length=512))
stft_db = librosa.amplitude_to_db(stft, ref=np.max)
librosa.display.specshow(stft_db, sr=sr, x_axis=”time”, y_axis=”log”)

 

Kuva, joka sisältää kohteen kuvakaappaus, teksti, Värikkyys, viiva

Tekoälyllä luotu sisältö voi olla virheellistä.

Kuva 3: STFT-spektri pumpun äänestä


Scroll to Top