始める無料で始める

バイト列を整数に変換する

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[:____])
コードを編集して実行