Você não pode criar um gráfico * True * Sound Wave diretamente usando uma função de um único gerador da maneira que você pode pensar (como uma única função Python gerando um PNG). As ondas sonoras são dados inerentemente temporais (mudanças de pressão ao longo do tempo). Um gráfico é uma representação espacial. Você precisa *gerar os dados da onda sonora *, então *processar esses dados para criar uma representação visual *.
Veja como você pode fazer isso usando Python, alavancando bibliotecas para geração de som e criação de imagens:
1. Gerar os dados da onda sonora: Esta parte cria os dados numéricos que representam a onda sonora. Usaremos o `Numpy` para computação numérica e` scipy` para gerar diferentes formas de onda.
`` `Python
importar numpy como np
importar matplotlib.pyplot como pLT
importar scipy.io.wavfile como wav
de Scipy.Signal Import Sawtooth, quadrado
parâmetros
Frequência =440 # Hz (nota A4)
duração =2 # segundos
sample_rate =44100 # hz (taxa de áudio padrão)
Amplitude =0,8 # mantenha -o abaixo de 1 para evitar o recorte
Vetor de tempo
t =np.linspace (0, duração, int (sample_rate * duração), endpoint =false)
Escolha uma forma de onda (seno, quadrado, dente de serra, etc.)
#waveform =np.sin (2 * np.pi * frequência * t) * amplitude # onda senoidal
#waveform =quadrado (2 * np.pi * frequência * t) * amplitude # onda quadrada
Waveform =Sawtooth (2 * np.pi * frequência * t) * Amplitude # Wave deto de sopa de serra
#Optional:adicione um pouco de ruído
ruído =np.random.normal (0, 0.1, len (forma de onda))
Waveform +=ruído
Normalize para evitar o recorte (importante para saída de áudio)
WaveForm =Waveform / np.max (np.abs (Waveform))
#Optional:salve como arquivo WAV
wav.write ("output.wav", sample_rate, waveform.astype (np.float32)))
`` `
2. Crie o gráfico: Esta parte pega os dados de ondas sonoras geradas e plota usando `Matplotlib`.
`` `Python
Plote a forma de onda
plt.figure (figSize =(10, 4))
PLT.Plot (T, forma de onda)
plt.xlabel ("Hora (s)")
plt.ylabel ("amplitude")
plt.title ("Som Waveform")
plt.grid (true)
plt.savefig ("Sound_wave.png") #Save como PNG
plt.show ()
`` `
Código completo: `` `Python
importar numpy como np
importar matplotlib.pyplot como pLT
importar scipy.io.wavfile como wav
de Scipy.Signal Import Sawtooth, quadrado
parâmetros
Frequência =440 # Hz (nota A4)
duração =2 # segundos
sample_rate =44100 # hz (taxa de áudio padrão)
Amplitude =0,8 # mantenha -o abaixo de 1 para evitar o recorte
Vetor de tempo
t =np.linspace (0, duração, int (sample_rate * duração), endpoint =false)
Escolha uma forma de onda
Waveform =Sawtooth (2 * np.pi * frequência * t) * amplitude
#Optional:adicione um pouco de ruído
ruído =np.random.normal (0, 0.1, len (forma de onda))
Waveform +=ruído
Normalize para evitar recorte
WaveForm =Waveform / np.max (np.abs (Waveform))
#Optional:salve como arquivo WAV
wav.write ("output.wav", sample_rate, waveform.astype (np.float32)))
Plote a forma de onda
plt.figure (figSize =(10, 4))
PLT.Plot (T, forma de onda)
plt.xlabel ("Hora (s)")
plt.ylabel ("amplitude")
plt.title ("Som Waveform")
plt.grid (true)
PLT.SAVEFIG ("SOLWAVE.PNG")
plt.show ()
`` `
Este código será:
1. Gere uma onda de dente de serra (você pode alterar facilmente isso para formas de onda senoidal, quadrado ou de onda usando funções `scipy.signal`).
2. Opcionalmente, adicione ruído para torná -lo mais realista.
3. Normalize a forma de onda para evitar o recorte.
4. Opcionalmente, salve -o como um arquivo WAV.
5. Crie e salve uma imagem PNG da amplitude da onda sonora ao longo do tempo.
Lembre -se de instalar as bibliotecas necessárias:`Numpy`,` matplotlib` e `scipy`. Você pode instalá -los usando Pip:`Pip Install Numpy Matplotlib Scipy`