香橙派 AIpro 根据心情生成专属音乐

香橙派 AIpro 根据心情生成专属音乐

      • 一、OrangePi AI pro 开发版参数介绍
        • 1.1 接口简介
        • 1.2 OrangePi AI pro 的Linux系统功能适配情况
        • 1.3 开发板开机
        • 1.4 远程连接到 OrangePi AIpro
      • 二、开发环境搭建
        • 2.1 创建环境、代码部署文件夹
        • 2.2 安装 miniconda
        • 2.3 为 miniconda 更新国内源
        • 2.4 创建一个 python 3.9 版本的开发环境
      • 三、基于MindNLP + MusicGen生成自己的个性化音乐
        • 3.1 模型介绍
        • 3.2 下载模型
        • 3.3 生成音乐
        • 3.4 无提示生成
        • 3.5 文本提示生成
        • 3.6 音频提示生成
      • 四、总结

这篇博客 用 OrangePi AIpro 实现了根据文字、音频、生成音乐

一、OrangePi AI pro 开发版参数介绍

首先必须要提的一点是 OrangePi AI pro 是 业界首款基于昇腾深度研发的AI开发板,采用昇腾AI技术路线,集成图形处理器,拥有16GB LPDDR4X,最大可支持外接 256GB eMMC 模块,支持双 4K 高清输出,8/20 TOPS AI算力。

1.1 接口简介

Orange Pi AIpro 有着强大的可拓展性。包括两个HDMI输出、GPIO接口、Type-C电源接口、支持SATA/NVMe SSD 2280的M.2插槽、TF插槽、千兆网口、两个USB3.0、一个USB Type-C 3.0、一个Micro USB、两个MIPI摄像头、一个MIPI屏等,一个预留电池接口。
在这里插入图片描述

1.2 OrangePi AI pro 的Linux系统功能适配情况
功能是否能测试Linux 内核驱动
HDMI0 1080p 显示OKOK
HDMI0 4K 显示NONO
HDMI0 音频OKNO
HDMI1 显示OKNO
HDMI1 音频OKNO
耳机播放OKNO
耳机 MIC 录音OKNO
Type-C USB3.0(无 USB2.0)OKOK
USB3.0 Host x 2OKOK
千兆网口OKOK
千兆网口灯OKOK
WIFIOKOK
蓝牙OKOK
Micro USB 调试串口OKOK
复位按键OKOK
关机按键(无开机功能)OKOK
烧录按键OKOK
MIPI 摄像头 0OKNO
MIPI 摄像头 1OKNO
MIPI LCD 显示OKNO
电源指示灯OKOK
软件可控的 LED 灯OKOK
风扇接口OKOK
电池接口OKOK
TF 卡启动OKOK
TF 卡启动识别 eMMCOKOK
TF 卡启动识别 NVMe SSDOKOK
TF 卡启动识别 SATA SSDOKOK
eMMC 启动OKOK
SATA SSD 启动OKOK
NVMe SSD 启动OKOK
2 个拨码开关OKOK
40 pin-GPIOOKOK
40 pin-UARTOKOK
40 pin-SPIOKOK
40 pin-I2COKOK
40 pin-PWMOKNO
1.3 开发板开机

这里之所以要拿出来单独说一下,就是因为我本人开了两三次没打开,以为是板子坏了,自己还满心愤懑,后来发现是自己操作不对(确实没看说明书)为了避免大家有同样的错误!!!这里重点介绍!

首先 将烧好系统的 TF 卡查到对应位置上,将两个启动方式拨码开关都向右拨(图示为两个启动方式拨码开关都拨向左)
在这里插入图片描述
之后将电源插入电源插口
在这里插入图片描述

1.4 远程连接到 OrangePi AIpro

默认的用户名:root
默认的密码:Mind@123

在这里插入图片描述

二、开发环境搭建

2.1 创建环境、代码部署文件夹
# 创建环境目录
mkdir ~/env# 创建代码目录
mkdir ~/workshop
2.2 安装 miniconda

下载 miniconda 到 ~/env 目录,这里需要注意的是 OrangePi AIpro 是 arm 架构的在这里插入图片描述

bash ~/env/Miniconda3-py312_24.3.0-0-Linux-aarch64.sh

conda 安装完成如如图所示:
在这里插入图片描述

2.3 为 miniconda 更新国内源

更新 miniconda 的源,如果有梯子的话这一步可以不做,但是如果梯子的网速感人的话,还是建议将源更新为清华源

# 修改 .condarc 文件
vi ~/.condarc

.condarc 文件修改如下

channels:- defaults
show_channel_urls: true
default_channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudmsys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudbioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudmenpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudpytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudpytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudsimpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/clouddeepmodeling: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/

清理之前预留的缓存

conda clean -i
2.4 创建一个 python 3.9 版本的开发环境

通过 conda 创建一个 python 3.9 的开发环境,并安装 mindspore 框架,以及一些其他必要的库函数

# 创建一个 python 3.9 的环境
conda create -n py39 python=3.9# 激活环境
conda activate py39

安装 mindspore 框架,版本必须选择 2.3.0rc2

conda install mindspore=2.3.0rc2 -c mindspore -c conda-forge# 安装 mindnlp 包
pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindnlp==0.2.4 jieba

三、基于MindNLP + MusicGen生成自己的个性化音乐

3.1 模型介绍

这里简单介绍一下 MusicGen 模型。MusicGen 是基于单个语言模型(LM)的音乐生成模型,能够根据文本描述或音频提示生成高质量的音乐样本,相关研究成果参考论文《Simple and Controllable Music Generation》。

MusicGen 模型基于Transformer结构,可以分解为三个不同的阶段:

  1. 用户输入的文本描述作为输入传递给一个固定的文本编码器模型,以获得一系列隐形状态表示。
  2. 训练 MusicGen 解码器来预测离散的隐形状态音频 token
  3. 对这些音频 token 使用音频压缩模型(如 EnCodec)进行解码,以恢复音频波形。

MusicGen 直接使用谷歌的 t5-base 及其权重作为文本编码器模型,并使用EnCodec 32kHz及其权重作为音频压缩模型。MusicGen 解码器是一个语言模型架构,针对音乐生成任务从零开始进行训练。

MusicGen取消了多层级的多个模型结构,例如分层或上采样,这使得MusicGen 能够生成单声道和立体声的高质量音乐样本,同时提供更好的生成输出控制。因此,MusicGen 不仅能够生成符合文本描述的音乐,还能够通过旋律条件控制生成的音调结构。

请添加图片描述

Figure 1: MusicGen使用的码本延迟模式,来源于 MusicGen paper.

3.2 下载模型

MusicGen提供了small、medium和big三种规格的 预训练权重文件,本次指南默认使用 small 规格的权重,生成的音频质量较低,但是生成的速度是最快的(我的板子内存只有 8G大家可以选择 16G 的板子):

from mindnlp.transformers import MusicgenForConditionalGeneration# 下载并导入模型
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small")
3.3 生成音乐

MusicGen 支持两种生成模式:贪心(greedy)和采样(sampling)。在实际执行过程中,采样模式得到的结果要显著优于贪心模式。因此我们默认启用采样模式,并且可以在调用 MusicgenForConditionalGeneration.generate 时设置 do_sample=True 来显式指定使用采样模式。

3.4 无提示生成

我们可以通过方法 MusicgenForConditionalGeneration.get_unconditional_inputs 获得网络的随机输入,然后使用 .generate 方法进行自回归生成,指定 do_sample=True 来启用采样模式:

unconditional_inputs = model.get_unconditional_inputs(num_samples=1)audio_values = model.generate(**unconditional_inputs, do_sample=True, max_new_tokens=256)

音频输出是格式是: a Torch tensor of shape (batch_size,num_channels,sequence_length)

使用第三方库scipy 将输出的音频保存为 musicgen_out.wav 文件。

import scipysampling_rate = model.config.audio_encoder.sampling_rate
scipy.io.wavfile.write("musicgen_out.wav", rate=sampling_rate, data=audio_values[0, 0].asnumpy())
3.5 文本提示生成

首先基于文本提示,通过 AutoProcessor 对输入进行预处理。然后将预处理后的输入传递给 .generate 方法以生成文本条件音频样本。同样,我们通过设置 do_sample=True 来启用采样模式。

其中,guidance_scale 用于无分类器指导(CFG),设置条件对数之间的权重(从文本提示中预测)和无条件对数(从无条件或空文本中预测)。guidance_scale 越高表示生成的模型与输入的文本更加紧密。通过设置guidance_scale > 1 来启用 CFG。为获得最佳效果,使用guidance_scale=3(默认值)生成文本提示音频。

from mindnlp.transformers import AutoProcessorprocessor = AutoProcessor.from_pretrained("facebook/musicgen-small")inputs = processor(text=["80s pop track with bassy drums and synth", "90s rock song with loud guitars and heavy drums"],padding=True,return_tensors="ms",
)audio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=256)scipy.io.wavfile.write("musicgen_out_text.wav", rate=sampling_rate, data=audio_values[0, 0].asnumpy())# from IPython.display import Audio
# # 要收听生成的音频样本,可以使用 Audio 进行播放
# Audio(audio_values[0].asnumpy(), rate=sampling_rate)
3.6 音频提示生成

AutoProcessor同样可以对用于音频预测的音频提示进行预处理。在以下示例中,我们首先加载音频文件,然后进行预处理,并将输入给到网络模型来进行音频生成。最后,我们将生成出来的音频文件保存为musicgen_out_audio.wav

from datasets import load_datasetdataset = load_dataset("sanchit-gandhi/gtzan", split="train", streaming=True)
sample = next(iter(dataset))["audio"]# take the first half of the audio sample
sample["array"] = sample["array"][: len(sample["array"]) // 2]# 使用音视频提示生成,耗时较久processor = AutoProcessor.from_pretrained("facebook/musicgen-small")inputs = processor(audio=sample["array"],sampling_rate=sample["sampling_rate"],text=["80s blues track with groovy saxophone"],padding=True,return_tensors="ms",
)audio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=256)scipy.io.wavfile.write("musicgen_out_audio.wav", rate=sampling_rate, data=audio_values[0, 0].asnumpy())# from IPython.display import Audio
# # 要收听生成的音频样本,可以使用 Audio 进行播放
# Audio(audio_values[0].asnumpy(), rate=sampling_rate)

在这里插入图片描述

四、总结

总体使用下来我将从 用户友好程度、开发文档支持程度、性能三个方面 对 Orange Pi AI Pro 进行总结:

  1. 用户友好程度:烧录好的系统和日常经常使用 Unbutu 系统体验上并无任何不同,更为绚丽的界面、精简的系统、完整的开发资料都极大的有助于新手快速玩转开发板。我做的是一个音频生成的模型,模型参数超过了 2G,在 c 上可以顺利的运行、并生成相应风格的音乐。此外,OrangePi AIpro 系统的烧录和启动都很为新手着想(我就是新手),可以选择TF卡、eMMC 或 SSD 作为启动介质,每种方式都有详细的官方指南,系统玩出问题了,恢复起来也很简单。
  2. 开发文档支持:作为新手,其实我们最担心的问题就是文档全不全、教程多不多、教程详细不详细!很幸运,OrangePi AIpro 有着详尽的教程;用户手册内容详实,从硬件参数到软件配置,乃至进阶功能均有详细解说(收集到的一些教程我也会附在后面,方便大家查阅)。每个模块都有单独的说明,比较丰富的应用示例,一站式找到所有文档的服务极大的降低了新手在开发中走弯路的可能。
  3. 性能:Orange Pi AI Pro 主打一个性价比!搭载的华为昇腾AI处理器,以 8TOPS 的INT8 算力和 4 TFLOPS FP16 的浮点运算能力,为复杂AI模型提供了强大的计算支撑。我在 8G 版本的 Orange Pi AI Pro 上 成功的运行了 MusicGen模型,其模型参数大小为 2.2G 这对于 8G 版本的 Orange Pi AI Pro 来说,无疑是一个极大的挑战。板子在运行时内存使用超 90%,但是散热真的很好,风扇噪音较小,整块处理器的问题摸起来并不烫手,即使在满载的情况下运行半小时左右,处理器的温度略高于手指温度。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生态系统NPP及碳源、碳汇模拟技术教程

原文链接:生态系统NPP及碳源、碳汇模拟技术教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247608293&idx3&sn2604c5c4e061b4f15bb8aa81cf6dadd1&chksmfa826602cdf5ef145c4d170bed2e803cd71266626d6a6818c167e8af0da93557c1288da21a71&a…

【综合能源】计及碳捕集电厂低碳特性及需求响应的综合能源系统多时间尺度调度模型

目录 1 主要内容 2 部分程序 3 实现效果 4 下载链接 1 主要内容 本程序是对《计及碳捕集电厂低碳特性的含风电电力系统源-荷多时间尺度调度方法》方法复现,非完全复现,只做了日前日内部分,并在上述基础上改进升级为电热综合电源微网系统&…

vue+openlayers之几何图形交互绘制基础与实践

文章目录 1.实现效果2.实现步骤3.示例页面代码3.基本几何图形绘制的关键代码 1.实现效果 绘制点、线、多边形、圆、正方形、长方形 2.实现步骤 引用openlayers开发库。加载天地图wmts瓦片地图。在页面上添加几何图形绘制的功能按钮,使用下拉列表(sel…

基于JavaScript、puppeteer的爬虫

前期准备: npm puppeteer import puppeteer from puppeteer; puppeteer文档 第一步:启动浏览器,跳转到需要爬取的页面 const browser await puppeteer.launch({ headless: false });const page await browser.newPage();await page.goto(url, { w…

【目标检测实验系列】YOLOv5模型改进:引入轻量化多维动态卷积ODConv,减少计算量的同时保持精度稳定或略微上涨!(内含源代码,超详细改进代码流程)

1. 文章主要内容 本篇博客主要涉及轻量化多维动态卷积ODConv,融合到YOLOv5模型中,减少计算量的同时保持精度稳定或略微上涨。(通读本篇博客需要7分钟左右的时间)。 2. 介绍 ODconv沿着空间、输入通道、输出通道以及卷积核空间的核…

领导被我的花式console.log吸引了!直接写入公司公共库!

背景简介 这几天代码评审,领导无意中看到了我本地代码的控制台,被我花里胡哨的console打印内容吸引了! 老板看见后,说我这东西有意思,花里胡哨的,他喜欢! 但是随即又问我,这么花里胡哨的东西,上生产会影响性能吧?我自信的说:不会,代码内有判断的,只有开发环境会…

14270-02G 同轴连接器

型号简介 14270-02G是Southwest Microwave的2.4 mm 同轴连接器。这款连接器连接器采用不锈钢、铍铜合金、黄铜合金和 ULTEM 1000 等高质量材料,可能具有更好的耐腐蚀性、导电性和机械强度。金镀层可以提供更低的接触电阻和更好的耐腐蚀性。 型号特点 电缆的中心导体…

健康课程知识培训小程序网站如何学员教务管理

医学专业学生或是从业医生、护士等都需要不断学习巩固自己的技术和拓宽知识面,除了主要学习来源外,培训机构课程需求也是提升自身实力的方法,市场中也存在不少医药健康内容培训机构或是医院内部员工培训等。 运用雨科平台搭建医药健康内容培…

前端八股文 说一下盒模型

网页中任何一个元素都可以视为一个盒子,由里到外,盒模型包括外边界(margin)、边框(border)、内边界(padding)和内容(content)。 盒模型基本分为3种&#xff1…

k8s离线安装安装skywalking9.4

目录 概述资源下载Skywalking功能介绍成果速览实践rbacoapoap-svcuiui-svc 结束 概述 k8s 离线安装安装 skywalking9.4 版本,环境:k8s版本为:1.27.x 、spring boot 2.7.x spring cloud :2021.0.5 、spring.cloud.alibab&#xff1…

智慧消防视频监控烟火识别方案,筑牢安全防线

一、方案背景 在现代化城市中,各类小型场所(简称“九小场所”)如小餐馆、小商店、小网吧等遍布大街小巷,为市民生活提供了极大的便利。然而,由于这些场所往往规模较小、人员流动性大、消防安全意识相对薄弱&#xff0…

vue配置sql规则

vue配置sql规则 实现效果组件完整代码父组件 前端页面实现动态配置sql条件,将JSON结构给到后端,后端进行sql组装。 这里涉及的分组后端在组装时用括号将这块规则括起来就行,分组的sql连接符(并且/或者)取组里的第一个。…

【Linux】Linux常用指令合集精讲,一篇让你彻底掌握(万字真言)

文章目录 一、文件与目录操作1.1 ls - 列出目录内容1.2 cd - 切换目录1.3 pwd - 显示当前目录1.4 mkdir - 创建目录1.5 rmdir - 删除空目录1.6 rm - 删除文件或目录1.7 cp - 复制文件或目录1.8 mv - 移动或重命名文件或目录1.9 touch - 创建空文件或更新文件时间戳 二、文件内容…

Vue 详情实战涉及从项目初始化到功能实现、测试及部署的整个过程

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

《操作系统真象还原》学习笔记:第2章——编写MBR主引导记录

2.1 计算机的启动过程 载入内存: (1) 程序被加载器(软件或硬件)加载到内存某个区域 (2)CPU 的 cs:ip 寄存器被指向这个程序的起始地址 2.2 软件接力第一棒,BIOS 2.2.1 实模式下的…

Jenkins 使用 Publish over SSH进行远程访问

Publish over SSH 是 Jenkins 的一个插件,可以让你通过 SSH 将构建产物分发到远程服务器。以下是如何开启 Publish over SSH 的步骤: 一、安装 Publish over SSH 插件 在 Jenkins 中,进入 "Manage Jenkins" > "Manage Plugins"。选择 "Availab…

怎么用AI合成PPT?这5款风靡全球的AIPPT软件一定要知道!

当下我们已进入信息过载的时代,每天有无数的信息试图争夺我们的注意力,与此同时,我们也需要向别人展示和呈现信息,这就要求我们能够以最低的成本,在短时间内引起对方的注意,这其中最常用到的工具非PPT莫属。…

简易电阻、电容和电感测量仪-FPGA

通过VHDL语言编写程序用于设计电阻、电容和电感测量仪,通过使用试验箱进行验证是否设计正确,资料获取到咸🐟:xy591215295250 \\\或者联系wechat 号:comprehensivable 设计并制作--台数字显示的电阻、电容和电感参数测试…

C++ 空间和时间高效的二项式系数(Space and time efficient Binomial Coefficient)

这里函数采用两个参数n和k,并返回二项式系数 C(n, k) 的值。 例子: 输入: n 4 和 k 2 输出: 6 解释: 4 C 2 等于 4!/(2!*2!) 6 输入: n 5 和 k 2 输出: 10 解释: 5 C …

海思SD3403/SS928V100开发(14)WIFI模块RTL8821驱动调试

1.前言 芯片平台: 海思SD3403/SS928V100 操作系统平台: Ubuntu20.04.05【自己移植】 WIFI模块: LB-LINK的RTL8821 2. 调试记录 参考供应商提供的操作手册 2.1 lsusb查看设备 2.2 编译供应商提供的驱动 2.2.1 修改Makefile 2.2.2 编译报错 解决办法: 将Makefile中arm…