香橙派 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.pswp.cn/diannao/41095.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41095.shtml
英文地址,請注明出處:http://en.pswp.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打印內容吸引了! 老板看見后,說我這東西有意思,花里胡哨的,他喜歡! 但是隨即又問我,這么花里胡哨的東西,上生產會影響性能吧?我自信的說:不會,代碼內有判斷的,只有開發環境會…

后端工作之一:CrapApi —— API接口管理系統部署

一個API接口的網絡請求都有這些基本元素構成: API接口大多數是由后端編寫,前端開發人員進行請求調用 就是一個網絡請求的流程。 API(Application Programming Interface)接口是現代軟件開發中不可或缺的一部分。它們提供了一種…

14270-02G 同軸連接器

型號簡介 14270-02G是Southwest Microwave的2.4 mm 同軸連接器。這款連接器連接器采用不銹鋼、鈹銅合金、黃銅合金和 ULTEM 1000 等高質量材料,可能具有更好的耐腐蝕性、導電性和機械強度。金鍍層可以提供更低的接觸電阻和更好的耐腐蝕性。 型號特點 電纜的中心導體…

過擬合和欠擬合的概念

過擬合和欠擬合的概念 過擬合(Overfitting)是指機器學習模型在訓練數據上表現得非常好,但在新數據(測試集或實際應用中的數據)上卻表現不佳的現象。這種情況通常發生在模型復雜度過高,導致它過度適應了訓練…

健康課程知識培訓小程序網站如何學員教務管理

醫學專業學生或是從業醫生、護士等都需要不斷學習鞏固自己的技術和拓寬知識面,除了主要學習來源外,培訓機構課程需求也是提升自身實力的方法,市場中也存在不少醫藥健康內容培訓機構或是醫院內部員工培訓等。 運用雨科平臺搭建醫藥健康內容培…

前端八股文 說一下盒模型

網頁中任何一個元素都可以視為一個盒子,由里到外,盒模型包括外邊界(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莫屬。…