Python
初心者
音声合成
Python3

音声符号化について考えてみる」実践編その3です。

目的

マイク録音操作をマスターする。

環境

  • python 3.6.3
  • scipy 1.0.0
  • sounddevice 0.3.10

コード解説

record.py
import sounddevice as sd
from lib import *
from scipy.io import wavfile as sciio


data = np.array(())  # 最終的に保存するデータ。ここでは空の1次元配列として初期化

def main():
    """
    メイン処理
    ---------
    """

    filepath = 'say.wav'
    samplerate = 48000
    channels = 1
    global data

    with sd.InputStream(samplerate=samplerate, channels=channels, callback=callback):
        # エンターキーが押されたら処理終了へ
        input()

        # データをint16型にしてファイル書き出し
        data = [x * 32767 for x in data]
        data = np.asarray(data, dtype='int16')
        sciio.write(filepath, samplerate, data)


def callback(indata, frames, time, status):
    """
    1収音単位ごとに呼ばれるコールバック関数
    -------------------------------------
    :param indata: 収音データ
    :param frames: 収音フレーム数
    :param time:   収音時間インスタンス
    :param status: 収音ステータス?
    """

    if status:
        print(status, file=sys.stderr)

    # データを結合していく
    global data
    indata = indata[:, 0]
    data = np.r_[data, indata]


if __name__ == '__main__':
    main()

今回はなんと、解説なし!
前回、前々回のコードの組み合わせですからねー。
収音の度に音声データを作成しておいて、エンターキーが押されたらwav形式に整形して書き出します。

おわりに

おわり。