facebook文本生成音乐项目-audiocraft 安装教程

文章目录

  • 所需环境
  • 安装ffmpeg
  • 克隆项目仓库
  • 安装相关依赖库
  • 运行项目
  • 模型下载
    • 自动下载模型失败
      • MusicGen 模型下载地址

所需环境

  • ffmpeg
  • python>=3.9
  • git
  • cuda118(torch>=2.0)

安装ffmpeg

下载地址
在这里插入图片描述
下载后解压,然后将解压后的目录配置到系统PATH环境变量中
在这里插入图片描述
在这里插入图片描述
打开cmd,运行命令ffmpeg -version查看是否安装成功
在这里插入图片描述

克隆项目仓库

git clone https://github.com/facebookresearch/audiocraft.git

安装相关依赖库

# 进入到项目所在目录下,创建python虚拟环境
PS D:\AI\audio\audiocraft> python -m venv venv

# 激活python虚拟环境
PS D:\AI\audio\audiocraft> .\venv\Scripts\activate

# 安装torch
(venv) PS D:\AI\audio\audiocraft> pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

# 安装 requirements.txt 中的依赖
(venv) PS D:\AI\audio\audiocraft> pip install -e .

# 卸载默认安装的 xformers
(venv) PS D:\AI\audio\audiocraft> pip uninstall -y xformers
 pip uninstall -y xformers
Found existing installation: xformers 0.0.20
Uninstalling xformers-0.0.20:
  Successfully uninstalled xformers-0.0.20
  
# 安装符合torch版本的 xformers
(venv) PS D:\AI\audio\audiocraft> pip install xformers

运行项目

(venv) PS D:\AI\audio\audiocraft> python .\app.py
A matching Triton is not available, some optimizations will not be enabled.
Error caught was: No module named 'triton'
Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.

在浏览器中输入以上cmd打印的地址http://127.0.0.1:7860
在这里插入图片描述
至此安装完成!

模型下载

在使用文本生成音乐的时,我们可以到界面上有四个模型的选项,代表了支持的四种模型,模型越大,对显卡显存要求就越大(官方建议显存VRAM 16G以上)。这四种模型分别为:

  • small (300M), text to music, # see: https://huggingface.co/facebook/musicgen-small
  • medium (1.5B), text to music, # see: https://huggingface.co/facebook/musicgen-medium
  • melody (1.5B) text to music and text+melody to music, # see: https://huggingface.co/facebook/musicgen-melody
  • large (3.3B), text to music, # see: https://huggingface.co/facebook/musicgen-large

当点击相应模型去生成音乐时会去huggingface上下载对应的模型,且模型会默认缓存到 C:\Users\.cache\huggingface\hub中,这对于C盘空间占用不太友好,为此我们更改当前项目的模型缓存目录(可参考huggingface的文档),在系统变量中添加:
变量名:HUGGINGFACE_HUB_CACHE或者HF_HOME
变量值:自定义的模型缓存目录
在这里插入图片描述
查看原本的huggingface模型缓存目录

(venv) PS D:\AI\audio\audiocraft> huggingface-cli.exe scan-cache
REPO ID                       REPO TYPE SIZE ON DISK NB FILES LAST_ACCESSED LAST_MODIFIED REFS LOCAL PATH

----------------------------- --------- ------------ -------- ------------- ------------- ---- ----------------------------------------------------------------------------
openai/clip-vit-large-patch14 model             1.7G        6 24 hours ago  1 week ago    main C:\Users\yuan1\.cache\huggingface\hub\models--openai--clip-vit-large-patch14

重新进入到当前项目的python虚拟环境查看huggingface模型缓存目录是否更新

(venv) PS D:\AI\audio\audiocraft> huggingface-cli.exe scan-cache
REPO ID REPO TYPE SIZE ON DISK NB FILES LAST_ACCESSED LAST_MODIFIED REFS LOCAL PATH
------- --------- ------------ -------- ------------- ------------- ---- ----------

Done in 0.0s. Scanned 0 repo(s) for a total of 0.0.

自动下载模型失败

在点击对应模型去生成音乐时会自动去huggingface下载模型,但是由于网络问题,大概率会下载报错,为此,我们可以将四个选项按钮分别点一遍,这样虽然模型无法下载成功,但是会在在缓存文件夹自动生成各个模型的目录,然后我们自己去各个模型的huggingface地址将模型手动下载后导入到对应的自动生成的模型目录
在这里插入图片描述
比如small模型的下载地址,下载好的compression_state_dict.bin以及state_dict.bin移动到以上自动生成的models--facebook--musicgen-small\snapshots\项目版本hash文件夹目录下即可!
在这里插入图片描述
在这里插入图片描述
再次启动项目进行音乐生成时报错

    raise EnvironmentError(
OSError: Can't load tokenizer for 't5-base'. If you were trying to load it from 'https://huggingface.co/models', 
make sure you don't have a local directory with the same name. Otherwise, 
make sure 't5-base' is the correct path to a directory containing all relevant files for a T5Tokenizer tokenizer.

提示说要下载一个名叫t5-base的模型,其实回退到huggingface缓存跟目录可以看到已经自动生成了一个目录models-ts-base

在这里插入图片描述
于是我们打开huggingface的模型下载地址
在这里插入图片描述
这里下载文件pytorch_model.bin以及config.json
在这里插入图片描述
将下载好的文件放到models--t5-base目录下,然后重启项目再次生成音乐,会发现自动去下载所需的 model.safetensors模型,其实也就是我们以上搜索的t5-base中的一个模型

在这里插入图片描述
下载结果如下
在这里插入图片描述
等待下载进度完成后,我们发现cmd中也没有报错,并且界面上成功生成了音乐
在这里插入图片描述
在这里插入图片描述

MusicGen 模型下载地址

melody模型下载地址
large模型下载地址
medium模型下载地址
small模型下载地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/28714.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电影《天空之城》观后感

上周看了电影《天空之城》这部电影,这部电影是六一儿童节时上映的,本周也算是补票吧,童年时,看的都是免费的,早已经忘记是在哪里看到的,但当时对自己触动很大,算是启蒙电影,所以今天…

Tinker 组件修复,踩坑

1、You need to use a Theme.AppCompat theme (or descendant) with this activity. 复现步骤 补丁加载成功之后重启应用,再退出应用重进闪退 日志 TinkerUncaughtHandler catch exception:java.lang.IllegalStateException: You need to use a Theme.AppCompat th…

网络传输中的那些编码之-UTF8编码漫谈

编码为什么是一个重要的话题,因为我们和计算机交互的主要方式目前还是文字字符。作为一个程序员,相信大部分都都被字符和编码的问题折磨过,从键盘输入文字字符到编辑器 中,编辑器存储字符到硬盘,再到具体一个编程语言如…

Java 八股文-基础篇

Java 基础 一、Java 概述 1.什么是 Java? Java 是一门面向对象的编程语言,不仅吸收了 C语言的各种优点,还摒弃了 C里难以理解的多继承、指针等概念,因此 Java 语言具有功能强大和简单易用两个特征。Java 语言作为静态面向对象编…

NB-lot和LoRa真正的差别在哪里?

就像要把大象装冰箱一样,物联网,万物互联也是要分步骤的。 一、感知层(信息获取层),即利用各种传感器等设备随时随地获取物体的信息; 二、网络层(信息传输层),通过各种电信网络与互联网的融合,将物体的信息实时准确地…

Mybatis学习之插件

Mybatis学习之插件 Plugins Mybatis中的插件虽然名称叫插件,但实质上是通过动态代理实现的。和我们平时讲的插件概念不一样,但是本质上都是给外部提供接口进行扩展。 MyBatis 允许我们在映射语句执行过程中的某一点进行拦截调用。MyBatis允许我们使用…

浪潮 KaiwuDB x 大数据中心 | 数据驱动政府治理能力快速提升

业务背景 我国工业互联网大数据资源存在孤立、分散、封闭等问题,数据价值未能得到有效利用,数据主权和数据安全面临重大威胁。 发挥数据对工业经济的基础支撑和创新引擎作用,可促进工业互联网的创新发展,加速数据驱动政府治理能…

CVPR23 | 可编辑3D场景布局的文本引导多对象合成NeRF

来源:投稿 作者:橡皮 编辑:学姐 论文链接:https://arxiv.org/abs/2303.13843 0.背景: 最近,文本到图像生成通过将视觉-语言预训练模型与扩散模型相结合,取得了巨大的成功。这些突破也使得强大…

cortex A7核按键中断实验

cortex A7核按键中断实验 一、分析电路图 实验目的:完成板子三个按键操作 1.1 电路图IO口 KEY1------>PF9 KEY2------>PF7 KEY3------>PF8 1.2 工作原理 KEY1 ------> PF9 ------> 按键触发方式:下降沿触发 KEY2 ------> PF7 …

HarmonyOS元服务端云一体化开发快速入门(上)

一、前提条件 您已使用已实名认证的华为开发者帐号登录DevEco Studio。 请确保您的华为开发者帐号余额充足,账户欠费将导致云存储服务开通失败。 二、选择云开发模板 1.选择以下任一种方式,打开工程创建向导界面。 如果当前未打开任何工程&#xff0c…

Question Log

Question Log 提示:记录一下平常遇到的坑 Question Log(★ > ) Question LogⅠ、★ > 使用VsCode构建Unity开发环境1.环境配置2.遇到的相关问题★.The .NET Core SDK cannot be located: A valid dotnet installation …

JS + 浮动 + 递归实现图片瀑布流懒加载

思路 页面 pege 分成左浮动的数列 lineBox,每列中图片 sinImg 依次向下摆放每加载一张图片时,判断页面中哪列的高度最小,将当前图片放到最小的那列尾部监听当前图片 onload 事件,当前图片加载完成后,再加载下一张图片…

力扣题库刷题笔记5--最长回文子串

1、题目如下: 2、个人Python代码实现: 首先想到的是通过类似冒泡排序的方式进行切片,然后判断切片的子字符串是否为回文字符串,然后记录出最长的回文字符串,代码如下: 可以看到,通过切片的方式&…

剑指offer35 复杂链表的复制

复杂链表的复制 文章目录 复杂链表的复制方法一 回溯哈希表第二种解释 方法二:拼接拆分算法流程 参考文献 本题要求我们对一个复杂链表进行复制。在复杂链表中,每个节点除了有一个next指针指向下一个节点,还有一个random指针指向链表中的任意…

嵌入式容器源码解析

问题分析 不同于使用springmvc,在我们使用springboot时无需配置tomcat就可以直接使用,这就说明springboot已经在我们启动项目时将tomcat配置好了,接下来我们就来看看springboot底层是怎么实现的。 源码解析 ServletWebServerFactoryAutoConfiguratio…

Python 标准库 - 并发执行

Python 标准库 - 并发执行 1. 简单介绍2. 程序示例2.1 threading 编程示例2.2 multiprocessing 编程示例2.3 concurrent.futures 编程示例 1. 简单介绍 Python 标准库 非常庞大,所提供的组件涉及范围十分广泛,官方参考链接https://docs.python.org/zh-cn…

unity 3d实现下雨、雾气、萤火虫和火花四溅的粒子效果

文章目录 先看最终效果1. 下雨效果2. 雾气效果3. 萤火虫和火花四溅的效果 3d下雨粒子效果涟漪效果雨滴和涟漪效果结合水花效果雨滴涟漪水花结合问题雾气效果萤火虫火花效果萤火虫和火花效果结合完毕 先看最终效果 1. 下雨效果 2. 雾气效果 3. 萤火虫和火花四溅的效果 3d下雨粒…

函数栈帧的创建与销毁

函数栈帧的创建与销毁 前言认识相关寄存器认识相关汇编命令详解思路图 前言 函数栈帧的创建与销毁在不同编译器下,函数调用过程中栈帧的创建略有差异,具体细节取决于编译器的实现,但大体逻辑是一致的。(在使用编译器时&#xff0…

某游戏登录密码加密,webpack

注意:文章内容仅用于学习和技术交流,切勿做出违法的事情,如有侵权请联系我删除。 网址(今天的大冤种):aHR0cHM6Ly93d3cuZ205OS5jb20v 一,分析 从上面图片可以看到,他的密码是加密了…

桥接模式(十)

不管怎么样,都要继续充满着希望 上一章简单介绍了适配器模式(九), 如果没有看过, 请观看上一章 一. 桥接模式 引用 菜鸟教程里面的 桥接模式介绍: https://www.runoob.com/design-pattern/bridge-pattern.html 桥接(Bridge)是用于把抽象化…