AudioCraft:利用人工智能技术生成音乐与音效

新知榜官方账号

2023-11-01 08:42:27

AudioCraft:利用人工智能技术生成音乐与音效

近年来,包括语言模型在内的生成式人工智能模型取得了巨大进步,特别是ChatGPT的发布,让大家看到了大语言模型的魅力。无论是计算机视觉,还是nlp领域的文本描述生成各种图像和视频,到执行机器翻译,文本生成等等大模型上,其都取得了令人意想不到的发展。但音乐与音频上似乎总是有点落后。是否可以使用人工智能技术来合成不同的音乐或者音效?

AudioCraft包含三个模型:MusicGen、AudioGen和EnCodec。MusicGen:使用Meta拥有且专门授权的音乐进行训练,根据用户输入的文本生成音乐。AudioGen使用公共音效进行训练,根据用户输入的文本生成音频音效。EnCodec解码器,它可以用更少的音损生成更高质量的音乐,类似音频压缩技术。EnCodec是一种有损神经编解码器,经过专门训练,可以压缩任何类型的音频并以高保真度重建原始信号。AudioCraft系列模型能够产生具有长期一致性的高质量音频,并且可以通过UI界面轻松交互。

通过AudioCraft,简化了音频生成模型的整体设计,我们可以直接利用开源代码进行音乐的生成。

%cd/content!gitclonehttps://github.com/facebookresearch/audiocraft%cd/content/audiocraft!pipinstall-rrequirements.txt!python-mdemos.musicgen_app--share

我们可以直接使用以上代码生成一个可视化的UI界面,我们只需要在输入框中,输入相应的文本,就可以利用模型生成音乐了。为了方便开发者使用AudioCraft,模型已经开源,且我们可以直接使用开源的代码进行音乐的合成。

!python3-mpipinstall-Ugit+https://github.com/facebookresearch/audiocraft#egg=audiocraftfromaudiocraft.modelsimportmusicgenfromaudiocraft.utils.notebookimportdisplay_audioimporttorchmodel=musicgen.MusicGen.get_pretrained('medium',device='cuda')model.set_generation_params(duration=8)res=model.generate(['crazyEDM,heavybang','classicreggaetrackwithanelectronicguitarsolo','lofislowbpmelectrochillwithorganicsamples','rockwithsaturatedguitars,aheavybasslineandcrazydrumbreakandfills.','earthytones,environmentallyconscious,ukulele-infused,harmonic,breezy,easygoing,organicinstrumentation,gentlegrooves',],progress=True)display_audio(res,32000)

模型下载完成后,我们就可以使用model.generate函数来生成音乐了,这里可以一次输入多个文本,模型会自动根据输入的文本,生成多个音频文件,最后,我们可以display或者下载生成好的音乐文件。

当然此模型已经发布在huggingface的transformers库中,我们也可以直接使用transformers库来运行此代码。

pipinstallgit+https://github.com/huggingface/transformers.gitfromtransformersimportAutoProcessor,MusicgenForConditionalGenerationprocessor=AutoProcessor.from_pretrained("facebook/musicgen-small")model=MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small")inputs=processor(text=["80spoptrackwithbassydrumsandsynth","90srocksongwithloudguitarsandheavydrums"],padding=True,return_tensors="pt",)audio_values=model.generate(**inputs,max_new_tokens=256)

当然,这里我们不需要安装AudioCraft,而是安装transformers库,然后从transformers库中导入相关的AudioCraft应用。然后也是加载相关的模型文件,并输入需要生成的音乐文本,最后就可以使用model.generate函数来生成音乐文件了。

fromIPython.displayimportAudiosampling_rate=model.config.audio_encoder.sampling_rateAudio(audio_values[0].numpy(),rate=sampling_rate)importscipysampling_rate=model.config.audio_encoder.sampling_ratescipy.io.wavfile.write("musicgen_out.wav",rate=sampling_rate,data=audio_values[0,0].numpy())

生成好的音乐文件,我们可以使用以上函数进行播放或者进行存储,方便后期进行处理操作。当然以上的代码都是MusicGen音乐生成的代码实现,其他AudioGen和EnCodec的代码实现过程,可以参考GitHub源码。

https://github.com/facebookresearch/audiocraft

本页网址:https://www.xinzhibang.net/article_detail-18481.html

寻求报道,请 点击这里 微信扫码咨询

关键词

音乐生成 音效生成 EnCodec ChatGPT 人工智能

分享至微信: 微信扫码阅读

相关工具

相关文章

相关快讯