背景音乐代码mp3(当GAN生成图像可以卡音效,这个Python包只需几行代码)

机器心脏报告

编辑:恶魔

Lucid Sonic Dreams包可以实现GAN生成图像的“音画同步”效果,并支持定制。

我们熟悉甘创造的奇异的图像。如果它们也能有音效呢?最近有人创造了一个Python包——Lucid Sonic Dreams,只用几行代码就可以实现AI生成的绘画和音乐的同步。

  • GitHub地址:https://github.com/mikaelalafriz/lucid-sonic-dreams
  • Colab教程地址:https://colab.research.google.com/drive/1Y5I50XSF IUN 3V4MD 8tb 30 _ goatt S7Rqd?usp =共享
  • 在本项目提供的演示视频中,伴随着Saje的歌曲《覆盆子》,GAN生成的图像不断变化,并呈现出相应的节奏。



    工作原理

    生成艺术品通常由GAN网络完成。Lucid Sonic Dreams包默认使用StyleGAN2-ADA架构,但GAN架构也可以定制。这些模型在特定“风格”的图像数据集上被训练,使得它们可以输出与训练图像风格一致的无限数量的图像。此外,《清醒的声波梦》使用贾斯汀·平克尼在库中创建了StyleGAN2预训练模型(地址:https://github.com/Justin·平克尼/awesome-pre-trained-stylegan2)。

    那么这些图像是如何产生的呢?

    输入被馈入StyleGAN2模型(输入是一个512位的向量),输入决定了模型的输出图像,所以输入向量的微小变化也会给输出图像带来微小变化。

    背景音乐代码

    现在,有趣的部分来了:如果我们从音乐中获得声波,从声波中提取数值(比如振幅)并将其添加到输入向量中,会发生什么?

    Lucisonic dreams在视频的每一帧上执行这些操作,生成与《pulse》和《transformation》中的音乐一致的图像。

    具体来说,使用清醒的声波梦包,音乐控制三个主要的视觉组件:脉冲,运动和类:

  • 指脉搏视觉画面随着音乐的打击乐节奏“跳动”。数学上,“脉冲”是在输入矢量上临时加上声波振幅的结果(即该矢量在下一帧仍是初始矢量);
  • 指运动视觉画面转换的速度。数学上是对输入向量进行累加幅度(即累加的幅度后面不会清零);
  • 类别是指生成的图像中对象的标签。比如167类(包括梵高、达芬奇、抽象等。)在基于WikiArt图像训练的风格中。这些由音高控制,具体来说,12个音高对应于12个不同的类别。这些音高的幅度会影响传输到第二个输入向量(类别向量)的数字,这是由模型生成的对象决定的。
  • 该项目作者表示,这个想法是受马特·西格尔曼(Matt Siegelman)的深度音乐可视化项目的启发。目前网上也有一些类似的项目,但是Lucid Sonic Dreams的独特之处在于它是用Python包实现的,并且允许定制。

    你可以用清醒声波梦套装来做到这一点

    清醒的声波梦是非常容易使用和灵活的。用户可以使用pip来安装:

    然后只需输入几行Python代码:

    从lucidsonicdreams导入LucidSonicDream L = LucidSonicDream(song = & # 39;chemical _ love.mp3 & # 39,style = & # 39抽象照片& # 39;) L .幻觉(file _ name = & # 39chemical _ love.mp4 & # 39)改变风格

    运行下面的代码,我们可以检查默认可用的样式:

    从Lucid SonicStreams导入show _ styles show _ styles(),这样您就可以获得一组样式名称,这些名称来自Justin Pinkney创建的库。也可以输入自己的风格GAN权重,或者使用其他GAN架构。

    调整参数

    Lucid Sonic Dreams包的默认设置非常有用,但它实际上有很多参数——超过30个,但这些参数是可以调整的(参数详见Colab教程)。

    哪些参数最重要?让我们看看整个视频生成流程:

    首先,对输入向量进行初始化和插值,作为视频的“基本运动”。参数speed_fpm控制运动的速度,fpm代表“每分钟帧数”,即每分钟初始化的矢量个数。对于每个后续帧,参数pulse _ react、motion _ react和class _ react控制音频操纵每个相应组件的程度。

    在模型基于这些向量生成图像后,图像通过一系列特效(也对音乐做出反应)进行传输。Lucid Sonic Dreams包默认有“对比”和“闪光”的特效,可以和音频的打击乐节奏同步。可以通过设置contrast_strength和flash_strength参数进行调整。用户还可以创建自定义效果。

    以下代码显示了参数调整过程:

    l = LucidSonicDream(& # 39;pancake _ foots . MP3 & # 39;,style = & # 39现代艺术& # 39;) L .幻觉(file _ name = & # 39pancake _ foots . MP4 & # 39;, speed _ fpm = 0, motion _ react = 0.8, contrast _ strength = 0.5, flash _ strength = 0.7) 使用自己的风格GAN weight [/S2]

    如果您自己已经训练了StyleGAN或者在线获得了一些模型权重,那么您可以选择将文件路径作为样式参数的值传递给这些权重。

    比如文章开头的视频,用的就是杰里米·托曼训练出来的模型。用于生成视频的代码如下:

    l = LucidSonicDream(song = & # 39;raspberry.mp3 & # 39,style = & # 39VisionaryArt.pkl & # 39) L .幻觉(file _ name = & # 39raspberry.mp4 & # 39, pulse _ react = 1.2, motion _ react = 0.7, contrast _ strength = 0.5, flash _ strength = 0.5) 使用单独的轨迹[/S2]

    这个包也可以用作音乐可视化工具,用户可以上传个人音轨来控制脉冲,运动,类别,对比度和闪光。如果你想将这些可视化组件与特定的乐器同步,使用这个包是个不错的选择。您也可以使用这些单独的轨道自定义特殊效果。

    以下是示例代码:

    l = LucidSonicDream(song = & # 39;lucidsonicdreams _ main.mp3 & # 39, pulse _ audio = & # 39;lucidsonicdreams _ pulse . MP3 & # 39;, class _ audio = & # 39;lucidsonicdreams _ class . MP3 & # 39;, style = & # 39;维基百科& # 39;) L .产生幻觉(& # 39;lucidsonicdreams.mp4 & # 39, pulse_react = 0.25, motion_react = 0, classes = [1,5,9,16,23,27,28,30,50,68,71,89], dominant _ classes _ first = True, class _ shuffle _ seconds = 8, class _ smooth _ seconds = 4, class _ pitch _ react = 0.2,

    除了内置的“对比”和“闪光”特效,Lucid Sonic Dreams包还允许用户定制和创建特效。用户只需要创建一个至少有以下三个参数的函数:array,代表应用特效的图像;力度,决定了对音乐反应的强度;振幅表示任何给定时间点的音量。然后,自定义函数被传输到EffectsGenerator对象。

    作者试验了以下代码,这些代码使用了scikit-image的漩涡特效:

    从skimage.transform导入numpy作为NP 从lucidsonicdreams导入漩涡 导入效果生成器 def swirl _ func(array,strength,amplitude): swidled _ image = swirl(array, rotation = 0, strength = 100 * strength * amplitude, radius=650) astype(NP . uint 8) swirl _ effect = effects generator(swirl _ func, audio = & # 39;unfaith.mp3 & # 39, 强度= 0.2, 敲击=假) L = LucidSonicDream(& # 39;unfaith.mp3 & # 39, style = & # 39;纹理& # 39;) L .产生幻觉(& # 39;不公平. & # 39、 motion_react = 0.15、 speed_fpm = 2、 pulse_react = 1.5、 contrast_strength = 1、 flash_strength = 1、 custom _ effects =[swirl _ effect]) files . download(& # 34;不公平. & # 34)使用其他GAN架构

    也可以使用其他GAN架构。只需定义一个函数,它以一组噪声向量和类别向量(NumPy数组)作为输入,输出一组枕头图像。其实这个函数甚至不需要用GAN,可以是任何能把输入向量转换成图像的函数。

    以下代码使用BigGAN的PyTorch实现再现了深度音乐可视化工具:

    from pytorch_pretrained_biggan import BigGAN, convert_to_images import torch biggan = BigGAN.from_pretrained('biggan-deep-512') biggan.to('cuda:0') def biggan_func(noise_batch, class_batch): noise_tensor = torch.from_numpy(noise_batch).cuda() class_tensor = torch.from_numpy(class_batch).cuda() with torch.no_grad(): output_tensor = biggan(noise_tensor.float(), class_tensor.float(), truncation = 1) return convert_to_images(output_tensor.cpu()) L = LucidSonicDream('sea_of_voices_inst.mp3', style = biggan_func, input_shape = 128, num_possible_classes = 1000) L.hallucinate('sea_of_voices.mp4', output_audio = 'sea_of_voices.mp3', speed_fpm = 3, classes = [13, 14, 22, 24, 301, 84, 99, 100, 134, 143, 393, 394], class_shuffle_seconds = 10, class_shuffle_strength = 0.1, class_complexity = 0.5, class_smooth_seconds = 4, motion_react = 0.35, flash_strength = 1, contrast_strength = 1)

    您可以还会对下面的文章感兴趣

    使用微信扫描二维码后

    点击右上角发送给好友