🚀 EnCodec モデルカード
Meta AIによって開発された最先端のリアルタイムオーディオコーデックであるEnCodec 32kHzに関する詳細情報を提供します。このEnCodecチェックポイントは、MusicGenプロジェクトの一部として特別にトレーニングされており、MusicGenモデルと組み合わせて使用することを想定しています。

🚀 クイックスタート
下記のコードを使用して、LibriSpeechデータセットのダミーサンプル(約9MB)を用いてEnCodecモデルを始めることができます。まず、必要なPythonパッケージをインストールします。
pip install --upgrade pip
pip install --upgrade transformers datasets[audio]
次に、オーディオサンプルをロードし、モデルの順伝播を実行します。
from datasets import load_dataset, Audio
from transformers import EncodecModel, AutoProcessor
librispeech_dummy = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
model = EncodecModel.from_pretrained("facebook/encodec_48khz")
processor = AutoProcessor.from_pretrained("facebook/encodec_48khz")
librispeech_dummy = librispeech_dummy.cast_column("audio", Audio(sampling_rate=processor.sampling_rate))
audio_sample = librispeech_dummy[0]["audio"]["array"]
inputs = processor(raw_audio=audio_sample, sampling_rate=processor.sampling_rate, return_tensors="pt")
encoder_outputs = model.encode(inputs["input_values"], inputs["padding_mask"])
audio_values = model.decode(encoder_outputs.audio_codes, encoder_outputs.audio_scales, inputs["padding_mask"])[0]
audio_values = model(inputs["input_values"], inputs["padding_mask"]).audio_values
✨ 主な機能
モデル概要
EnCodecは、ニューラルネットワークを活用した高忠実度のオーディオコーデックです。量子化された潜在空間を持つストリーミングエンコーダー・デコーダーアーキテクチャを導入し、エンドツーエンドでトレーニングされています。このモデルは、単一のマルチスケールスペクトログラム敵対者を使用してトレーニングを簡素化し高速化し、アーティファクトを効率的に削減し、高品質なサンプルを生成します。また、損失の典型的なスケールからハイパーパラメータの選択を切り離すことでトレーニングを安定させる新しい損失バランサーメカニズムも含まれています。さらに、軽量なTransformerモデルを使用して、リアルタイム性能を維持しながら得られた表現をさらに圧縮します。このEnCodecのバリアントは、10Kの高品質な音楽トラックの内部データセットと、ShutterStockおよびPond5の音楽データセットから構成される20kの音楽データでトレーニングされています。
- 開発元: Meta AI
- モデルタイプ: オーディオコーデック
モデルソース
📦 インストール
pip install --upgrade pip
pip install --upgrade transformers datasets[audio]
💻 使用例
基本的な使用法
from datasets import load_dataset, Audio
from transformers import EncodecModel, AutoProcessor
librispeech_dummy = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
model = EncodecModel.from_pretrained("facebook/encodec_48khz")
processor = AutoProcessor.from_pretrained("facebook/encodec_48khz")
librispeech_dummy = librispeech_dummy.cast_column("audio", Audio(sampling_rate=processor.sampling_rate))
audio_sample = librispeech_dummy[0]["audio"]["array"]
inputs = processor(raw_audio=audio_sample, sampling_rate=processor.sampling_rate, return_tensors="pt")
encoder_outputs = model.encode(inputs["input_values"], inputs["padding_mask"])
audio_values = model.decode(encoder_outputs.audio_codes, encoder_outputs.audio_scales, inputs["padding_mask"])[0]
audio_values = model(inputs["input_values"], inputs["padding_mask"]).audio_values
📚 ドキュメント
直接利用
EnCodecは、オーディオ信号のリアルタイム圧縮と伸張のためのオーディオコーデックとして直接使用できます。高品質なオーディオ圧縮と効率的なデコードを提供します。このモデルは、様々なバンド幅でトレーニングされており、エンコード(圧縮)およびデコード(伸張)時に指定できます。EnCodecには2つの異なる設定があります。
- 非ストリーマブル: 入力オーディオは1秒のチャンクに分割され、10msのオーバーラップがあり、それらがエンコードされます。
- ストリーマブル: 畳み込み層に重み正規化が使用され、入力はチャンクに分割されず、左側にパディングされます。
下流利用
このEnCodecのバリアントは、公式のMusicGenチェックポイントと組み合わせて使用するように設計されています。ただし、オーディオファイルをエンコードするために単独で使用することもできます。
評価
評価結果については、MusicGen評価スコアを参照してください。
概要
EnCodecは、様々なサンプルレートとバンド幅で高忠実度のオーディオサンプルを生成する最先端のリアルタイムニューラルオーディオ圧縮モデルです。このモデルの性能は、24kHzモノラルで1.5kbpsから48kHzステレオまでのさまざまな設定で評価され、主観的および客観的な結果を示しています。特に、EnCodecは新しいスペクトログラムのみの敵対的損失を組み込んでおり、アーティファクトを効果的に削減し、サンプル品質を向上させています。トレーニングの安定性と解釈可能性は、損失重みの勾配バランサーの導入によってさらに向上しました。さらに、研究では、低遅延が重要でないアプリケーション(例:音楽ストリーミング)では、コンパクトなTransformerモデルを使用して、品質を損なうことなく最大40%の追加のバンド幅削減を達成できることが示されています。
📄 ライセンス
引用
BibTeX:
@misc{copet2023simple,
title={Simple and Controllable Music Generation},
author={Jade Copet and Felix Kreuk and Itai Gat and Tal Remez and David Kant and Gabriel Synnaeve and Yossi Adi and Alexandre Défossez},
year={2023},
eprint={2306.05284},
archivePrefix={arXiv},
primaryClass={cs.SD}
}