LoginSignup
0
0

More than 1 year has passed since last update.

スピーカー特性の測定方法・・・2-1)サイン波形の作成&再生

Last updated at Posted at 2021-12-25

第1回解説 にてWAVファイルの読み込み方法を説明しました。

次にオーディオ評価用の音源の作成を行います。

Sin波形の作成&保存

では、基本ということでSin波形の作成手順を示していきます。

create_wav.py
import wave
import numpy as np
import pyaudio

nchannels = 1
freq = 100 #作成するサイン波形の周波数
framerate = 44100
sampwidth = 2 #16bit
total_secs = 2.0

file_name = 'sin.wav'

data_num = int(total_secs * framerate)

t = np.linspace(0, total_secs, data_num)
wav = 32767 * (np.sin(np.pi*freq*t))

if nchannels == 2:
    wav = np.array([wav,wav]).transpose()
data = wav.astype(np.int16)

out_wave = wave.Wave_write(file_name)
out_wave.setnchannels(nchannels)
out_wave.setsampwidth(sampwidth)
out_wave.setframerate(framerate)
out_wave.writeframes(data)

out_wave.close()

再生(読み込み&再生)

#保存した音声ファイルを再生する
wf = wave.open(file_name, "r")
# ストリームを開く
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                    channels=wf.getnchannels(),
                    rate=wf.getframerate(),
                    output=True)

    # 音声を再生
chunk = 1024
data = wf.readframes(chunk)
while data != b'':
        stream.write(data)
        data = wf.readframes(chunk)
stream.close()
p.terminate()

以上で、簡易な波形ジェネレータが作成できました。
パラメータ:freqを下げたり上げたりすると音の高低が調整できます。

今後の解説では、再生した音声を
マイクで録音し周波数特性の解析をするまで行います。
その前に、矩形波の作成方法を説明します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0