幾句話就能寫歌,一招搞定文本生成音頻
相較于AI在生成圖像、視頻、文本的應(yīng)用,AI生成音樂領(lǐng)域的發(fā)展相對落后。這是由于生成高質(zhì)量的音頻需要對不同類型的信號、模塊進行不同層級的建模,加上該領(lǐng)域開源的代碼較少,可以說是AI生成內(nèi)容中最具挑戰(zhàn)性的領(lǐng)域。近日Meta 開源了一個能夠生成各種音頻的 PyTorch 庫 ——AudioCraft
與Llama一樣,AudioCraft也是以開源的形式進行發(fā)布,目的也是為了能夠讓“研究人員和從業(yè)人員能夠使用自己的數(shù)據(jù)集訓(xùn)練自己的模型,減少由于訓(xùn)練數(shù)據(jù)的局限性帶來的偏誤,推動AI生成音樂或音頻的發(fā)展。
Audiocraft 是一個PyTorch庫,用于音頻生成的深度學(xué)習(xí)研究,包括AudioGen、EnCodec(改進版)和MusicGen三個部件。其中,MusicGen 使用 Meta 具有版權(quán)的音樂數(shù)據(jù)進行訓(xùn)練,基于用戶輸入的文本生成音樂;AudioGen 使用公共音效數(shù)據(jù)進行訓(xùn)練,基于用戶輸入的文本生成音頻;EnCodec 用于壓縮音頻并以高保真度重建原始信號,保證生成的音樂是高質(zhì)量的.
然后是MusicGen模型,一共包含300M、1.5B、3.3B三個不同參數(shù)量的自回歸Transformer。

最后是EnCodec神經(jīng)音頻編解碼器(neural audio codec)。編碼器能從要壓縮的音頻信號中學(xué)習(xí)離散的音頻token;隨后,基于一個自回歸語言模型,將音頻信號壓縮到目標(biāo)大??;最后,基于解碼器,就能將壓縮的信號高保真重建回音頻?;谶@種壓縮效果,音頻能被壓縮到比MP3格式還要小10倍。

安裝使用
需要Python 3.9,PyTorch 2.0.0,至少16 GB內(nèi)存的GPU
環(huán)境搭建
conda create -n musicgen python=3.9
pip install 'torch>=2.0'
# Then proceed to one of the following
pip install -U audiocraft # stable release
pip install -U git+https://git@github.com/facebookresearch/audiocraft#egg=audiocraft # bleeding edge
pip install -e . # or if you cloned the repo locally
使用api生成音樂
import torchaudio
from audiocraft.models import MusicGen
from audiocraft.data.audio import audio_write
model = MusicGen.get_pretrained('melody')
model.set_generation_params(duration=8) # generate 8 seconds.
wav = model.generate_unconditional(4) # generates 4 unconditional audio samples
descriptions = ['happy rock', 'energetic EDM', 'sad jazz']
wav = model.generate(descriptions) # generates 3 samples.
melody, sr = torchaudio.load('./assets/bach.mp3')
# generates using the melody from the given audio and the provided descriptions.
wav = model.generate_with_chroma(descriptions, melody[None].expand(3, -1, -1), sr)
for idx, one_wav in enumerate(wav):
# Will save under {idx}.wav, with loudness normalization at -14 db LUFS.
audio_write(f'{idx}', one_wav.cpu(), model.sample_rate, strategy="loudness", loudness_compressor=True)