🚀 当社のシリーズ作品の紹介
当社の音楽音声事前学習(m - a - p)モデルファミリーの開発ログ:
- 2023年6月2日:arXivの事前印刷版と学習用のコードが公開されました。
- 2023年3月17日:新しいパラダイムとデータセットで学習された2つの高度な音楽理解モデル、[MERT - v1 - 95M](https://huggingface.co/m - a - p/MERT - v1 - 95M)と[MERT - v1 - 330M](https://huggingface.co/m - a - p/MERT - v1 - 330M)を公開しました。これらのモデルは以前のモデルを上回り、より多くのタスクに対して良好な汎化性能を示します。
- 2023年3月14日:オープンソースの音楽データセットでMERT - v0モデルを再学習し、[MERT - v0 - public](https://huggingface.co/m - a - p/MERT - v0 - public)を公開しました。
- 2022年12月29日:MLMパラダイムで学習された音楽理解モデル[MERT - v0](https://huggingface.co/m - a - p/MERT - v0)を公開しました。このモデルは下流タスクで良好な性能を示します。
- 2022年10月29日:BYOLパラダイムで学習された事前学習済みのMIRモデル[music2vec](https://huggingface.co/m - a - p/music2vec - v1)を公開しました。
以下はモデルをすぐに選択するための表です。
名前 |
事前学習パラダイム |
学習データ(時間) |
事前学習コンテキスト(秒) |
モデルサイズ |
トランスフォーマーレイヤー - 次元 |
特徴レート |
サンプルレート |
公開日 |
[MERT - v1 - 330M](https://huggingface.co/m - a - p/MERT - v1 - 330M) |
MLM |
160K |
5 |
330M |
24 - 1024 |
75 Hz |
24K Hz |
2023年3月17日 |
[MERT - v1 - 95M](https://huggingface.co/m - a - p/MERT - v1 - 95M) |
MLM |
20K |
5 |
95M |
12 - 768 |
75 Hz |
24K Hz |
2023年3月17日 |
[MERT - v0 - public](https://huggingface.co/m - a - p/MERT - v0 - public) |
MLM |
900 |
5 |
95M |
12 - 768 |
50 Hz |
16K Hz |
2023年3月14日 |
[MERT - v0](https://huggingface.co/m - a - p/MERT - v0) |
MLM |
1000 |
5 |
95 M |
12 - 768 |
50 Hz |
16K Hz |
2022年12月29日 |
[music2vec - v1](https://huggingface.co/m - a - p/music2vec - v1) |
BYOL |
1000 |
30 |
95 M |
12 - 768 |
50 Hz |
16K Hz |
2022年10月30日 |
解説
m - a - pモデルは類似したモデルアーキテクチャを共有しており、最も顕著な違いは事前学習で使用されるパラダイムです。それ以外にも、使用する前に知っておくべきいくつかの微妙な技術的な設定があります。
- モデルサイズ:メモリにロードされるパラメータの数です。ハードウェアに適したサイズを選択してください。
- トランスフォーマーレイヤー - 次元:トランスフォーマーレイヤーの数と、当社のモデルから出力される対応する特徴次元です。異なるレイヤーで抽出された特徴は、タスクによって様々な性能を示す可能性があるため、これを明示しています。
- 特徴レート:1秒の音声入力に対して、モデルが出力する特徴の数です。
- サンプルレート:モデルが学習に使用した音声の周波数です。
MERT - v1の紹介
MERT - v0と比較して、MERT - v1の事前学習ではいくつかの新機能を導入しています。
- encodecの8つのコードブックに疑似ラベルを変更しました。これにより、潜在的により高品質なデータが得られ、音楽生成をサポートする能力が向上します。
- バッチ内のノイズ混合を用いたMLM予測を行います。
- より高い音声周波数(24K Hz)で学習します。
- より多くの音声データ(最大16万時間)で学習します。
- より多くのモデルサイズ(95Mと330M)が利用可能です。
詳細は近日公開予定の論文に記載されます。
💻 使用例
基本的な使用法
from transformers import Wav2Vec2FeatureExtractor
from transformers import AutoModel
import torch
from torch import nn
import torchaudio.transforms as T
from datasets import load_dataset
model = AutoModel.from_pretrained("m-a-p/MERT-v1-330M", trust_remote_code=True)
processor = Wav2Vec2FeatureExtractor.from_pretrained("m-a-p/MERT-v1-330M",trust_remote_code=True)
dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
dataset = dataset.sort("id")
sampling_rate = dataset.features["audio"].sampling_rate
resample_rate = processor.sampling_rate
if resample_rate != sampling_rate:
print(f'setting rate from {sampling_rate} to {resample_rate}')
resampler = T.Resample(sampling_rate, resample_rate)
else:
resampler = None
if resampler is None:
input_audio = dataset[0]["audio"]["array"]
else:
input_audio = resampler(torch.from_numpy(dataset[0]["audio"]["array"]))
inputs = processor(input_audio, sampling_rate=resample_rate, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs, output_hidden_states=True)
all_layer_hidden_states = torch.stack(outputs.hidden_states).squeeze()
print(all_layer_hidden_states.shape)
time_reduced_hidden_states = all_layer_hidden_states.mean(-2)
print(time_reduced_hidden_states.shape)
aggregator = nn.Conv1d(in_channels=25, out_channels=1, kernel_size=1)
weighted_avg_hidden_states = aggregator(time_reduced_hidden_states.unsqueeze(0)).squeeze()
print(weighted_avg_hidden_states.shape)
引用
@misc{li2023mert,
title={MERT: Acoustic Music Understanding Model with Large-Scale Self-supervised Training},
author={Yizhi Li and Ruibin Yuan and Ge Zhang and Yinghao Ma and Xingran Chen and Hanzhi Yin and Chenghua Lin and Anton Ragni and Emmanouil Benetos and Norbert Gyenge and Roger Dannenberg and Ruibo Liu and Wenhu Chen and Gus Xia and Yemin Shi and Wenhao Huang and Yike Guo and Jie Fu},
year={2023},
eprint={2306.00107},
archivePrefix={arXiv},
primaryClass={cs.SD}
}
📄 ライセンス
このプロジェクトはCC BY - NC 4.0ライセンスの下で公開されています。