ジェネレーターを使用してサウンドウェーブグラフィックを作成するにはどうすればよいですか?
Pythonを使用してこれを行う方法は次のとおりです。サウンド生成と画像作成のためにライブラリを活用します。
1。サウンドウェーブデータを生成します:
この部分は、音波を表す数値データを作成します。数値計算には「numpy」、さまざまな波形を生成するために「scipy」を使用します。
`` python
npとしてnumpyをインポートします
pltとしてmatplotlib.pyplotをインポートします
scipy.io.wavfileをwavとしてインポートします
Scipy.Signal Import Sawtooth、Squareから
パラメーター
頻度=440#Hz(A4ノート)
持続時間=2#秒
sample_rate =44100#hz(標準オーディオレート)
振幅=0.8#クリッピングを避けるために1未満に保ちます
時間ベクトル
t =np.linspace(0、持続時間、int(sample_rate * duration)、endpoint =false)
波形(Sine、Square、Sawtoothなど)を選択します
#waveform =np.sin(2 * np.pi *頻度 * t) *振幅#sine wave
#waveform =square(2 * np.pi *頻度 * t) *振幅#正方形波
波形=sawtooth(2 * np.pi *頻度 * t) *振幅#sawtooth wave
#optional:ノイズを追加します
ノイズ=np.random.normal(0、0.1、len(波形))
波形 +=ノイズ
クリッピングを避けるために正規化(オーディオ出力にとって重要)
波形=波形 / np.max(np.abs(波形))
#optional:WAVファイルとして保存します
wav.write( "output.wav"、sample_rate、waveform.astype(np.float32)))
`` `
2。グラフィックを作成:
この部分は、生成されたサウンドウェーブデータを取得し、「Matplotlib」を使用してプロットします。
`` python
波形をプロット
plt.figure(figsize =(10、4))
plt.plot(t、波形)
plt.xlabel( "time(s)")
plt.ylabel( "amplitude")
plt.title( "sound waveform")
plt.grid(true)
plt.savefig( "sound_wave.png")#save as png
plt.show()
`` `
完全なコード:
`` python
npとしてnumpyをインポートします
pltとしてmatplotlib.pyplotをインポートします
scipy.io.wavfileをwavとしてインポートします
Scipy.Signal Import Sawtooth、Squareから
パラメーター
頻度=440#Hz(A4ノート)
持続時間=2#秒
sample_rate =44100#hz(標準オーディオレート)
振幅=0.8#クリッピングを避けるために1未満に保ちます
時間ベクトル
t =np.linspace(0、持続時間、int(sample_rate * duration)、endpoint =false)
波形
を選択します波形=sawtooth(2 * np.pi *頻度 * t) *振幅
#optional:ノイズを追加します
ノイズ=np.random.normal(0、0.1、len(波形))
波形 +=ノイズ
クリッピングを避けるために正規化
波形=波形 / np.max(np.abs(波形))
#optional:WAVファイルとして保存します
wav.write( "output.wav"、sample_rate、waveform.astype(np.float32)))
波形をプロット
plt.figure(figsize =(10、4))
plt.plot(t、波形)
plt.xlabel( "time(s)")
plt.ylabel( "amplitude")
plt.title( "sound waveform")
plt.grid(true)
plt.savefig( "sound_wave.png")
plt.show()
`` `
このコードは次のとおりです。
1.鋸歯状の波を生成します(これを「Scipy.signal」関数を使用して、サイン、スクエア、または他の波形に簡単に変更できます)。
2.オプションでノイズを追加して、より現実的にします。
3.波形を正規化して、クリッピングを防ぎます。
4.オプションで、WAVファイルとして保存します。
5.時間の経過とともに、音波の振幅のPNG画像を作成して保存します。
必要なライブラリを忘れずにインストールすることを忘れないでください:「numpy」、「matplotlib」、および「scipy」。 PIPを使用してインストールできます: `PIPインストールnumpymatplotlib scipy`