近年来,包括语言模型在内的生成式AI模型取得了长足的进步,尤其是ChatGPT的发布,让大家看到了大型语言模型的魅力。 无论是计算机视觉,还是文本描述领域中生成各种图像和**,进行机器翻译、文本生成等大型模型,都取得了意想不到的发展。 但是**与音频似乎总是有点落后。 是否可以使用人工智能技术来合成不同的**或声音效果?
Audiocraft 由三种型号组成:Musicgen、Audiogen 和 Encodec。
MusicGen:使用 Meta 拥有且获得专门许可的文本进行训练,这些文本由用户输入的文本生成。
AudioGen 在公共声音上进行训练,根据用户的文本输入生成音频声音。
编码解码器,可以产生更高的质量**和更少的伪影,类似于音频压缩技术。 编码器是一种有损神经编解码器,经过专门训练,可以压缩任何类型的音频并以高保真度重建原始信号。
Audiocraft 系列型号能够产生具有长期一致性的高质量音频,并且可以通过 UI 界面轻松交互。 有了audiocraft,就简化了音频生成模型的整体设计,我们可以直接使用开源的**进行生成**。
cd /content!git clone /content/audiocraft!pip install -r requirements.txt!python -m demos.musicgen_app --share
我们可以直接使用上面的**来生成一个可视化的UI界面,我们只需要在输入框中输入对应的文本,就可以使用模型来生成**。
为了让开发者更容易使用audiocraft,模型已经开源了,我们可以直接使用开源的**进行合成**。
python3 -m pip install -u git+ audiocraft.models import musicgenfrom audiocraft.utils.notebook import display_audioimport torchmodel = musicgen.musicgen.get_pretrained('medium', device='cuda')model.set_generation_params(duration=8)
首先,我们需要使用 pip 安装 audiocraft,并从 audiocraft 的模型中导入 musicgen 生成功能。
在这里,我们使用musicgenmusicgen.进行预训练以加载模型的预训练模型,函数运行到此步骤后,会自动搜索项目文件夹中是否有模型并自动执行。
downloading state_dict.bin: 100% 3.68g/3.68g [03:42<00:00, 19.4mb/s]downloading (…ve/main/spiece.model: 100% 792k/792k [00:00<00:00, 10.5mb/s]downloading (…lve/main/config.json: 100% 1.21k/1.21k [00:00<00:00, 45.8kb/s]downloading model.safetensors: 100% 892m/892m [00:10<00:00, 46.2mb/s]downloading (…ssion_state_dict.bin: 100% 236m/236m [03:45<00:00, 1.05mb/s]res = model.generate([ 'crazy edm, he**y bang', 'classic reggae track with an electronic guitar solo', 'lofi slow bpm electro chill with organic samples', 'rock with saturated guitars, a he**y bass line and crazy drum break and fills.', 'earthy tones, environmentally conscious, ukulele-infused, harmonic, breezy, easygoing, organic instrumentation, gentle grooves',],progress=true)display_audio(res, 32000)
模型完成后,我们可以使用该模型生成函数,在这里你可以一次输入多个文本,模型会根据输入的文本自动生成多个音频文件,最后,我们可以显示或生成一个好的文件。
text prompt: pop dance track with catchy melodies, tropical percussions, and upbeat rhythms, perfect for the beach
当然,这个模型已经发表在 Hugging Face 的 transformers 库中了,我们也可以使用 transformers 库直接运行这个。
pip install git+ transformers import autoprocessor, musicgenforconditionalgenerationprocessor = autoprocessor.from_pretrained("facebook/musicgen-small")model = musicgenforconditionalgeneration.from_pretrained("facebook/musicgen-small")inputs = processor( text=["80s pop track with bassy drums and synth", "90s rock song with loud guitars and he**y drums"], padding=true, return_tensors="pt",)audio_values = model.generate(**inputs, max_new_tokens=256)
当然,这里我们不需要安装 audiocraft,而是安装了 transformers 库,然后从 transformers 库中导入相关的 audiocraft 应用。 然后加载相关的模型文件,并输入需要生成的**文本,最后就可以使用模型了generate 函数生成一个 ** 文件。
from ipython.display import audiosampling_rate = model.config.audio_encoder.sampling_rateaudio(audio_values[0].numpy(),rate=sampling_rate)import scipysampling_rate = model.config.audio_encoder.sampling_ratescipy.io.w**file.write("musicgen_out.w**", rate=sampling_rate, data=audio_values[0, 0].numpy())
生成**文件后,我们可以使用上面的函数对**进行**或存储,方便后期的处理操作。 当然,以上都是 MusicGen 生成的实现,其他 Audiogen 和 Encodec 的实现过程可以参考 github 源码。