热门搜素: 电商 教育 视频 健康
新知榜公众号 随时随地查看资讯 手机访问更加便捷
首页 > 行业观察 > AudioCraft:利用人工智能技术生成音乐与音效
AudioCraft:利用人工智能技术生成音乐与音效
新知榜官方账号
2023-11-01 08:42:27
近年来,包括语言模型在内的生成式人工智能模型取得了巨大进步,特别是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源码。
相关工具
相关文章
相关快讯
短视频知识人物影响力榜
新知榜独家 {{faTime.effecttime}}发布
总榜
人物 领域 粉丝数 影响力指数
{{item.manIndex}}
{{item.nickname}} {{item.field}}
{{item.fs}}
{{item.effect}}