Hogyan hozhatok létre egy hanghullám -grafikát a generátor használatával?
Így lehet ezt megtenni a Python használatával, a könyvtárak kihasználásával a hanggeneráláshoz és a kép létrehozásához:
1. Generálja a hanghullám adatait:
Ez a rész létrehozza a hanghullámot képviselő numerikus adatokat. A „numpy” -et a numerikus számításhoz és a „SCIPY” -hez különféle hullámformák előállításához használjuk.
`` `Python
Import Numpy mint NP
Importálja a matplotlib.pyplot -ot PLT -ként
Import scipy.io.wavfile mint wav
A SCIPY.Signal Import Sawtooth -tól, Square
Paraméterek
Frekvencia =440 # Hz (A4 megjegyzés)
időtartam =2 # másodperc
Same_rate =44100 # Hz (standard audio sebesség)
amplitúdó =0,8 # tartsa 1 alatt a vágás elkerülése érdekében
idővektor
t =np.linspace (0, időtartam, int (minta_rate * időtartam), endpoint =hamis)
Válasszon egy hullámformát (szinusz, négyzet, fűrészfog stb.)
#waveform =np.sin (2 * np.pi * frekvencia * t) * amplitúdó # szinuszhullám
#waveform =négyzet (2 * np.pi * frekvencia * t) * amplitúdó # négyzethullám
hullámforma =fűrészfog (2 * np.pi * frekvencia * t) * amplitúdó # fűrésztooth hullám
#Optional:Adj hozzá némi zajt
Zaj =np.random.normal (0, 0,1, len (hullámforma))
hullámforma +=zaj
normalizálja, hogy elkerülje a vágást (fontos az audio kimenethez)
hullámforma =hullámforma / np.max (np.abs (hullámforma))
#Optional:mentés wav fájlként
wav.write ("output.wav", sampe_rate, waveform.astype (np.float32))
`` `
2. Hozzon létre a grafikát:
Ez a rész átveszi a generált hanghullám -adatokat, és a „matplotlib” használatával ábrázolja.
`` `Python
ábrázolja a hullámformát
PLT.figure (FigSize =(10, 4))
Plt.plot (t, hullámforma)
PLT.XLABEL ("Idő (k)")
PLT.YLABEL ("amplitúdó")
Plt.Title ("Sound Waveform")
Plt.grid (igaz)
Plt.Savefig ("sound_wave.png") #save mint png
pult.show ()
`` `
Teljes kód:
`` `Python
Import Numpy mint NP
Importálja a matplotlib.pyplot -ot PLT -ként
Import scipy.io.wavfile mint wav
A SCIPY.Signal Import Sawtooth -tól, Square
Paraméterek
Frekvencia =440 # Hz (A4 megjegyzés)
időtartam =2 # másodperc
Same_rate =44100 # Hz (standard audio sebesség)
amplitúdó =0,8 # tartsa 1 alatt a vágás elkerülése érdekében
idővektor
t =np.linspace (0, időtartam, int (minta_rate * időtartam), endpoint =hamis)
Válasszon egy hullámformát
hullámforma =fűrészfog (2 * np.pi * frekvencia * t) * amplitúdó
#Optional:Adj hozzá némi zajt
Zaj =np.random.normal (0, 0,1, len (hullámforma))
hullámforma +=zaj
normalizálja a vágás elkerülését
hullámforma =hullámforma / np.max (np.abs (hullámforma))
#Optional:mentés wav fájlként
wav.write ("output.wav", sampe_rate, waveform.astype (np.float32))
ábrázolja a hullámformát
PLT.figure (FigSize =(10, 4))
Plt.plot (t, hullámforma)
PLT.XLABEL ("Idő (k)")
PLT.YLABEL ("amplitúdó")
Plt.Title ("Sound Waveform")
Plt.grid (igaz)
Plt.Savefig ("sound_wave.png")
pult.show ()
`` `
Ez a kód:
1. Készítsen egy fűrésztooth -hullámot (ezt könnyedén megváltoztathatja szinuszos, négyzet- vagy más hullámformákra a „scipy.signal” funkciókkal).
2. Opcionálisan adjon hozzá zajt, hogy realisztikusabbá váljon.
3. Normalizálja a hullámformát a vágás megakadályozása érdekében.
4. Opcionálisan mentse el WAV fájlként.
5. Hozzon létre és mentse el a hanghullám amplitúdójának PNG képét az idő múlásával.
Ne felejtse el telepíteni a szükséges könyvtárakat:`numpy`,` matplotlib` és `scipy`. Telepítheti őket a PIP segítségével:`PIP telepítse a numpy matplotlib scipy -t