【Python】波形を音声として書き出す

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:パラメータ
のつもり。

タイトルとURLをコピーしました