Pythonのwaveモジュールを用いて、波形の音声をwavファイルとして書き出す。
import numpy as np
import matplotlib.pyplot as plt
import wave
import struct
filename = "440Hz.wav"
a = 0.1
f0 = 440
fs = 44100
sec = 3
n = np.arange(fs * sec)
s = a * np.sin(2.0 * np.pi * f0 * n / fs)
plt.plot(s[:int(fs/f0)])
plt.show()
s = [int(x * 32767.0) for x in s]
bin = struct.pack('h' * len(s), *s)
w = wave.Wave_write(filename)
p = (1, 2, fs, len(bin), 'NONE', 'not compressed')
w.setparams(p)
w.writeframes(bin)
w.close()
今回の場合、正弦波のラ(440Hz)の音がwavファイルとして書き出される。
440Hz.wav
☆Tips
変数については、
a:振幅 fs:サンプリング周波数 f0:基本周波数 sec:秒数
n:サンプリング点 s:サンプリング結果
bin:バイナリ w:waveファイル p:パラメータ
のつもり。