Kako lahko ustvarim grafiko zvočnega vala s pomočjo generatorja?
Takole lahko to storite s pomočjo Pythona, ki uporablja knjižnice za ustvarjanje zvoka in ustvarjanje slik:
1. Ustvari podatke zvočnega vala:
Ta del ustvarja numerične podatke, ki predstavljajo zvočni val. Za numerično računanje bomo uporabili `numpy` in` scipy` za ustvarjanje različnih valovnih oblik.
`` `Python
uvozi numpy kot np
uvozite matplotlib.pyplot kot plt
uvoz scipy.io.wavfile kot wav
iz Scipy.signal uvoza žaga, kvadrat
parametri
frekvenca =440 # Hz (A4 opomba)
trajanje =2 # sekund
vzorca_rate =44100 # Hz (standardna hitrost zvoka)
amplituda =0,8 # naj bo pod 1, da se izognete odrezanju
Časovni vektor
t =np.Linspace (0, trajanje, int (vzorca_rate * trajanje), končna točka =false)
izberite valovno obliko (sinus, kvadrat, žago itd.)
#waveform =np.sin (2 * np.pi * frekvenca * t) * amplituda # sinus val
#waveform =kvadrat (2 * np.pi * frekvenca * t) * amplituda # kvadratni val
Waveform =sawtooth (2 * np.pi * frekvenca * t) * amplituda # Sawtooth val
#Optional:dodajte nekaj hrupa
hrup =np.random.Normal (0, 0,1, len (valovna oblika))
valovna oblika +=hrup
normalizirajte, da se izognete izrezu (pomembno za zvočni izhod)
Waveform =Waveform / np.max (np.abs (valovna oblika))
#Optional:Shrani kot wav datoteka
wav.write ("output.wav", vzorca_rate, valform.astype (np.float32)))
`` `
2. Ustvari grafiko:
Ta del vzame ustvarjene podatke o zvočnem valu in ga nariše s pomočjo "matplotlib".
`` `Python
Narišite valovno obliko
plt.Figure (slsize =(10, 4))
plt.plot (t, valovna oblika)
PLT.XLABEL ("Čas (s)")
plt.ylabel ("amplituda")
plt.title ("zvočni valovni obliki")
Plt.Grid (res)
Plt.Savefig ("Sound_wave.png") #Save kot png
plt.show ()
`` `
Popolna koda:
`` `Python
uvozi numpy kot np
uvozite matplotlib.pyplot kot plt
uvoz scipy.io.wavfile kot wav
iz Scipy.signal uvoza žaga, kvadrat
parametri
frekvenca =440 # Hz (A4 opomba)
trajanje =2 # sekund
vzorca_rate =44100 # Hz (standardna hitrost zvoka)
amplituda =0,8 # naj bo pod 1, da se izognete odrezanju
Časovni vektor
t =np.Linspace (0, trajanje, int (vzorca_rate * trajanje), končna točka =false)
Izberite valovno obliko
Waveform =žaga (2 * np.pi * frekvenca * t) * amplituda
#Optional:dodajte nekaj hrupa
hrup =np.random.Normal (0, 0,1, len (valovna oblika))
valovna oblika +=hrup
normalizirajte, da se izognete odrezanju
Waveform =Waveform / np.max (np.abs (valovna oblika))
#Optional:Shrani kot wav datoteka
wav.write ("output.wav", vzorca_rate, valform.astype (np.float32)))
Narišite valovno obliko
plt.Figure (slsize =(10, 4))
plt.plot (t, valovna oblika)
PLT.XLABEL ("Čas (s)")
plt.ylabel ("amplituda")
plt.title ("zvočni valovni obliki")
Plt.Grid (res)
Plt.Savefig ("Sound_wave.png")
plt.show ()
`` `
Ta koda bo:
1. Ustvari žago vala (to lahko preprosto spremenite v sinusne, kvadratne ali druge valovne oblike s funkcijami `scipy.signal`).
2. Neobvezno dodajte hrup, da bo bolj realen.
3. Normalizirajte valovno obliko, da preprečite striženje.
4. Neobvezno ga shranite kot datoteko WAV.
5. Ustvarite in shranite sliko PNG v amplitudi zvočnega vala.
Ne pozabite namestiti potrebnih knjižnic:`numpy`,` matplotlib` in `scipy`. Jih lahko namestite s pomočjo:`pip namestite numpy matplotlib scipy`