Hogyan hozhatok létre egy hullámformát az audio -ból?
1. Egyszerű módszer (könyvtárak használata):
Ez a megközelítés a legegyszerűbb, és nem igényel mélyreható audiofeldolgozási ismereteket. Kihasználja a könyvtárakat, amelyek kezelik az Ön számára nehéz emelést. Így tenné ezt a Python használatával a „librosa” és a „matplotlib” könyvtárakkal:
`` `Python
Librosa importálása
Import librosa.display
Importálja a matplotlib.pyplot -ot PLT -ként
Töltse be az audio fájlt
audio_file ="your_audio_file.wav" # Cserélje ki az audio fájl elérési útját
y, sr =librosa.load (audio_file)
jelenítse meg a hullámformát
PLT.figure (FigSize =(14, 5))
librosa.display.waveshow (y, sr =sr)
Plt.Title ("hullámforma")
PLT.XLABEL ("Idő (k)")
PLT.YLABEL ("amplitúdó")
pult.show ()
`` `
A kód futtatása előtt:
* Telepítse a szükséges könyvtárakat: `PIP Install Librosa matplotlib"
* Cserélje ki a "" your_audio_file.wav "`: az audio fájl tényleges elérési útjával. A fájlnak WAV fájlnak kell lennie a legjobb kompatibilitás érdekében. A Librosa képes más formátumokat kezelni, de a WAV -t általában előnyben részesítik ehhez a feladathoz.
2. Közbenső módszer (kézi feldolgozás):
Ez nagyobb irányítást biztosít, de megköveteli az audio alapok megértését. Közvetlenül az audio adatokkal fog működni:
`` `Python
importhullám
Import Numpy mint NP
Importálja a matplotlib.pyplot -ot PLT -ként
Nyissa meg a WAV fájlt
a wave.open -rel ("your_audio_file.wav", "rb") wf:
num_channels =wf.getNchannels ()
Same_width =wf.getSampWidth ()
Frame_rate =wf.getFramerate ()
num_frames =wf.getNfames ()
Data =wf.ReadFames (NUM_FRAMES)
konvertálja az adatokat Numpy tömbre
data =np.frombuffer (adatok, dtype =np.int16) # Állítsa be a dtype -t, ha a minta_width különbözik
Ha sztereó, konvertáljon monó (átlagos csatornák)
-reHa num_channels ==2:
Data =np.mean (data.Reshape (-1, 2), tengely =1)
normalizálja az adatokat
Data =Data / NP.Max (NP.ABS (Data))
idővektor
idő =np.arange (0, num_frames) / Frame_rate
ábrázolja a hullámformát
PLT.figure (FigSize =(14, 5))
Plt.plot (idő, adatok)
Plt.Title ("hullámforma")
PLT.XLABEL ("Idő (k)")
PLT.YLABEL ("amplitúdó")
pult.show ()
`` `
Ez a kód:
* Megnyitja a WAV fájlt a „Wave” modul segítségével.
* Olvassa el a nyers audio adatokat.
* A könnyebb manipuláció érdekében átalakítja egy numpy tömbré.
* A sztereo audio -t úgy kezeli, hogy a csatornákat átlagolja a mono hullámforma létrehozásához.
* A jobb megjelenítés érdekében normalizálja az adatokat -1 és 1 közötti tartományra.
* Létrehoz egy idővektorot a ábrázoláshoz.
* A hullámformát ábrázolja a „matplotlib” használatával.
3. Fejlett módszerek (FFT, spektrogramok):
A részletesebb elemzéshez a Fast Fourier Transform (FFT) segítségével elemezheti az audio jel frekvenciakomponenseit, spektrogramok létrehozásához. Az olyan könyvtárak, mint a „librosa” és a „SCIPY”, hatékony FFT megvalósításokat biztosítanak. Ez túlmutat egy egyszerű magyarázat keretein, de magában foglalja az időtartomány jelének átalakítását a frekvenciatartományba a frekvenciák időbeli megjelenítéséhez. A Librosa `librosa.feature.mel_spectrogram` nagyszerű kiindulási pont ehhez.
A megfelelő módszer kiválasztása:
* Egyszerű módszer: A legjobb a gyors hullámforma vizualizációhoz anélkül, hogy mély audio megértésre lenne szükség.
* Közép módszer: További irányítást és betekintést nyújt a nyers audio adatokba.
* Fejlett módszer: Szükség van a részletes frekvenciaanalízishez és megjelenítéshez (spektrogramok).
Ne felejtse el telepíteni a szükséges könyvtárakat ezen kódok bármelyikének futtatása előtt. Válassza ki azt a módszert, amely a legjobban megfelel az Ön igényeinek és a megértés szintjének. A fenti példák a Python -ot használják, de hasonló funkcionalitás érhető el más programozási nyelveken, például a JavaScript (könyvtárakkal, például webes API -vel) vagy C ++ (olyan könyvtárak használata, mint az SDL).