size_categories:1K<n<10K language:en license:cc-by-sa-4.0 music region:us
---
license: cc-by-sa-4.0
language:
- en
tags:
- music
size_categories:
- 1K<n<10K
---
# Google/Music-Capsの音声データをスペクトログラム化したデータ。

* Music Cpasとは：https://huggingface.co/datasets/google/MusicCaps
* GrayScaleじゃないほうもあるから見てね(⋈◍＞◡＜◍)。✧♡（<a href="https://huggingface.co/datasets/mickylan2367/ColorSpectrogram">これ</a>）

## 基本情報
* sampling_rate: int = 44100
* 20秒のwavファイル -> 1600×800のpngファイルへ変換
* librosaの規格により、画像の縦軸：(0-10000?Hz), 画像の横軸：(0-40秒)
* 詳しくはlibrosa.specshow() -> https://librosa.org/doc/main/auto_examples/plot_display.html

## 使い方
### 0: データセットをダウンロード
```py
from datasets import load_dataset
data = load_dataset("mickylan2367/spectrogram")
data = data["train"]
```

### 1: データローダーへ
* こんな感じの関数で、データローダーにできます。
```py
from torchvision import transforms
from torch.utils.data import DataLoader
BATCH_SIZE = ??? # 自分で設定
IMAGE_SIZE = ???
TRAIN_SIZE = ??? # 訓練に使用したいデータセット数
TEST_SIZE = ??? # テストに使用したいデータセット数

def load_datasets():
    data_transforms = [
        transforms.Resize((IMG_SIZE, IMG_SIZE)),
        transforms.ToTensor(), # Scales data into [0,1]
        transforms.Lambda(lambda t: (t * 2) - 1) # Scale between [-1, 1]
    ]
    data_transform = transforms.Compose(data_transforms)
    
    data = load_dataset("mickylan2367/spectrogram")
    data = data["train"]
    train = data[slice(0, TRAIN_SIZE, None)]
    test = data[slice(TRAIN_SIZE, TRAIN_SIZE + TEST_SIZE, 0)]
    
    for idx in range(len(train["image"])):
        train["image"][idx] = data_transform(train["image"][idx])
        test["image"][idx] = data_transform(test["image"][idx])
    
    train = Dataset.from_dict(train)
    train = train.with_format("torch") # リスト型回避
    test = Dataset.from_dict(train)
    test = test.with_format("torch") # リスト型回避

    # or
    train_loader = DataLoader(train, batch_size=BATCH_SIZE, shuffle=True, drop_last=True)
    test_loader = DataLoader(test, batch_size=BATCH_SIZE, shuffle=True, drop_last=True)
    return train_loader, test_loader

```

## 参考資料とメモ
* (memo)ぶっちゃけグレースケールもカラーバージョンをtorchvision.transformのグレースケール変換すればいいだけかも？
* ダウンロードに使ったコードは<a href="https://colab.research.google.com/drive/1HmDorbxD5g6C2WDjLierUqbhecTdRvgA?usp=sharing">こちら</a>
    * 参考：https://www.kaggle.com/code/osanseviero/musiccaps-explorer
    * 仕組み：Kaggleの参考コードでwavファイルをダウンロードする->スペクトログラムつくりながらmetadata.jsonlに
      ```
      {"filename":"spectrogram_*.png", "caption":"This is beautiful music"}
      ```
      をなどと言ったjson列を書き込み、これをアップロードした
* Huggingfaceのデータビューアが動かなくなったら、一度GoogleColabでそのデータセットをダウンロードしてみることもおすすめ
  意外とHuggingfaceがバグっているだけかも（実話(´;ω;｀)）