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
関連記事、関連資料
- 関連記事 – librosaで音声/音楽データを読み込むlibrosa.load【Python】
- 関連記事 – SciPyで音声/音楽データを読み込むscipy.io.wavfile.read【Python】
- 関連記事 – PyTorchで音声/音楽データを読み込むtorchaudio.load
- GitHubコード
python-sampler/Python-audio-load/PySoundFile-read/soundfile-read.ipynb at main · take-tech-09/python-sampler
Contribute to take-tech-09/python-sampler development by creating an account on GitHub.
コメント