スポンサーリンク

PySoundFileで音声/音楽データを読み込むsoundfile.read【Python】

Sound

PySoundFileで音声/音楽データを読み込むには、soundfile.readを使う。

今回用いるサンプル音源を、以下コードを実行して、_sample_dataフォルダにダウンロードする。

import os
import requests

_SAMPLE_DIR = "_sample_data"
SAMPLE_WAV_URL = "https://pytorch-tutorial-assets.s3.amazonaws.com/steam-train-whistle-daniel_simon.wav"
SAMPLE_WAV_PATH = os.path.join(_SAMPLE_DIR, "steam.wav")

os.makedirs(_SAMPLE_DIR, exist_ok=True)

with open(SAMPLE_WAV_PATH, 'wb') as f:
    f.write(requests.get(SAMPLE_WAV_URL).content)

soundfile.readの使い方

第一引数fileにファイルパスとファイル名を指定する。返り値は、サンプリング周波数と、信号の値で、’numpy.ndarray’で読み込まれる。

import soundfile as sf

data, samplerate = sf.read(file=SAMPLE_WAV_PATH)

print(data.shape)
# (109368, 2)
print(type(data))
# <class 'numpy.ndarray'>
print(samplerate)
# 44100

第二引数のframesで、読み込む音源のサンプル長を指定することができる。以下コードでは、40000にしているため、音源の先頭から40000サンプルが読み込まれている。

data, samplerate = sf.read(file=SAMPLE_WAV_PATH, frames=40000)

print(data.shape)
# (40000, 2)

第三引数のstartは、読み込み開始サンプルを指定することができる。以下コードでは、5000を指定しているため、音源の5000サンプル目から読み込みが開始されている。また第二引数framesで40000を指定しているため、読み込まれた音源の長さは40000サンプルになっている。

data, samplerate = sf.read(file=SAMPLE_WAV_PATH, frames=40000, start=5000)

print(data.shape)
# (40000, 2)

soundfile.readで読み込み可能なファイル形式

WAV, FLAC, OGGやMATなど幅広いファイル形式が読み込み可能である。以下リンク先に読み込み可能なファイルがまとめられているので参照ください。

libsndfile
The libsndfile Home Page

関連記事、関連資料

  • GitHubコード
python-sampler/soundfile-read.ipynb at main · take-tech-09/python-sampler
Contribute to take-tech-09/python-sampler development by creating an account on GitHub.

コメント