バイト列を整数に変換する
Python の wave モジュールと readframes() メソッドを使って、オーディオファイルを読み込む方法を見てきました。しかし、その結果はバイト列の配列になります。
これらのバイト列をより扱いやすい形に変換するために、NumPy の frombuffer() メソッドを使います。
frombuffer() に音声波形のバイト列を渡し、dtype に 'int16' を指定すると、バイト列を整数に変換できます。整数のほうがバイト列より扱いやすいです。
Python の wave ライブラリはすでにインポート済みで、good_morning.wav audio file も用意されています。
この演習はコースの一部です
Pythonで学ぶ音声言語処理
演習の手順
numpyパッケージを一般的なエイリアスnpでインポートします。- good morning のオーディオファイルを開いて読み込みます。
signal_gmのバイト列をint16の整数に変換します。- 音声波形の先頭10個の値を表示します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
import ____ as ____
# Open good morning sound wave and read frames as bytes
good_morning = wave.open(____, 'r')
signal_gm = good_morning.readframes(-1)
# Convert good morning audio bytes to integers
soundwave_gm = np.frombuffer(____, dtype=_____)
# View the first 10 sound wave values
print(soundwave_gm[:____])