?
一、前言
今天玩兒點(diǎn)兒特別的,AI大行其道的今天,還沒玩過AI模型的程序員絕對(duì)不是個(gè)好廚子。我本人比較喜歡音樂,但是一直沒有出道,很是遺憾。那么今天,我就使用AI模型親手打造一個(gè)堪比真人的歌手,讓她C位霸氣出道。
首先,讓這位女歌手露一嗓子:點(diǎn)我試聽
唱的還不錯(cuò)吧,接下來咱們來分析這位歌手是如何打造出來的。
二、技術(shù)
飛槳(PaddlePaddle)以百度多年的深度學(xué)習(xí)技術(shù)研究和業(yè)務(wù)應(yīng)用為基礎(chǔ),集深度學(xué)習(xí)核心框架、基礎(chǔ)模型庫、端到端開發(fā)套件、工具組件和服務(wù)平臺(tái)于一體,2016 年正式開源,是全面開源開放、技術(shù)領(lǐng)先、功能完備的產(chǎn)業(yè)級(jí)深度學(xué)習(xí)平臺(tái)。
上面的介紹是不是很唬人?從百度飛槳官網(wǎng)貼過來的。顯然,本文使用的技術(shù)是基于百度飛槳框架打造,當(dāng)然了,你要讓我從零開始搞AI......那我還是選擇當(dāng)廚子。
飛槳Hub(PaddleHub)是基于PaddlePaddle生態(tài)下的預(yù)訓(xùn)練模型,旨在為開發(fā)者提供豐富的、高質(zhì)量的、直接可用的預(yù)訓(xùn)練模型。
說白了,這個(gè)飛槳Hub是模型集中營(yíng),提供了很多已經(jīng)訓(xùn)練好的模型,用戶可以拿來直接使用,而不需要再耗費(fèi)過多的精力、資源去自己訓(xùn)練模型。
Python,飛槳平臺(tái)基于Python語言實(shí)現(xiàn),不必多說了,畢竟,Python是世界上最好的語言.java。
Anaconda,是一個(gè)常用的python包管理程序,可以方便的管理我們的多個(gè)Python環(huán)境。比如你的A軟件需要基于Python3.7,B軟件需要基于Python3.8,用Anaconda可以方便的對(duì)不同的環(huán)境進(jìn)行管理和切換。
?
三、環(huán)境搭建
1、安裝Anaconda
到官網(wǎng)https://www.anaconda.com/或者h(yuǎn)ttps://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下載一個(gè)較新的版本即可。
安裝過程很簡(jiǎn)單,猛點(diǎn)下一步即可,建議你安裝到C盤之外的盤。
即便你裝在了D盤,但是創(chuàng)建環(huán)境的時(shí)候,環(huán)境信息默認(rèn)還是會(huì)被創(chuàng)建到C盤,所以還應(yīng)該做如下操作:
編輯C:\Users\你的用戶名\.condarc文件(如果沒有此文件請(qǐng)手動(dòng)創(chuàng)建),文件內(nèi)容如下:
?
channels:
- defaults
envs_dirs: [D:\anaconda3\envs]
pkgs_dirs: [D:\anaconda3\pkgs]
這樣環(huán)境信息就會(huì)被保存在D盤了。
2、創(chuàng)建Python環(huán)境
找到剛剛安裝的anaconda,打開Anaconda Prompt命令行工具,執(zhí)行如下語句:
conda create --name paddle_env python=3.8 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
以上代碼表示,創(chuàng)建一個(gè)Python3.8的環(huán)境,環(huán)境名稱為paddle_env,軟件源從https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ 地址下載。
3、安裝百度飛槳環(huán)境
輸入如下命令,表示接下來的所有操作,我要在剛才創(chuàng)建的那個(gè)名為paddle_env的環(huán)境中進(jìn)行:
?
conda activate paddle_env
輸入如下命令,表示安裝百度飛槳基礎(chǔ)環(huán)境:
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
輸入如下命令,表示安裝百度飛槳Hub:
pip install paddlehub -i https://mirror.baidu.com/pypi/simple
最后,我們?cè)傩陆ㄒ粋€(gè)環(huán)境變量HUB_HOME。因?yàn)閜addlehub的模型下載安裝時(shí),會(huì)默認(rèn)裝在c盤。我們將HUB_HOME指到其他的磁盤即可。
四、安裝模型
上面將基礎(chǔ)環(huán)境搭建好了,接下來我們安裝語音合成模型Diffsinger。
DiffSinger,一個(gè)基于擴(kuò)散概率模型的 SVS 聲學(xué)模型。DiffSinger 是一個(gè)參數(shù)化的馬爾科夫鏈,它可以根據(jù)樂譜的條件,迭代地將噪聲轉(zhuǎn)換為旋律譜。通過隱式優(yōu)化變異約束,DiffSinger 可以被穩(wěn)定地訓(xùn)練并產(chǎn)生真實(shí)的輸出。
上面在說什么,我也看不太懂。但通俗的說,這個(gè)模型可以將樂譜轉(zhuǎn)換為旋律譜。
首先,這個(gè)模型依賴如onnxruntime包,我們通過如下命令進(jìn)行安裝:
pip install onnxruntime -i https://mirror.baidu.com/pypi/simple
然后,我們安裝Diffsinger模型:
hub install diffsinger==1.0.0
五、創(chuàng)造歌手
目前萬事俱備,我們開始創(chuàng)造歌手。
首先我們看這個(gè)模型的調(diào)用參數(shù)是怎樣的:
inputs (Dict[str, str]): 輸入數(shù)據(jù)格式如下;
{
'text': '小酒窩長(zhǎng)睫毛AP是你最美的記號(hào)',
'notes': 'C#4/Db4 | F#4/Gb4 | G#4/Ab4 | A#4/Bb4 F#4/Gb4 | F#4/Gb4 C#4/Db4 | C#4/Db4 | rest | C#4/Db4 | A#4/Bb4 | G#4/Ab4 | A#4/Bb4 | G#4/Ab4 | F4 | C#4/Db4',
'notes_duration': '0.407140 | 0.376190 | 0.242180 | 0.509550 0.183420 | 0.315400 0.235020 | 0.361660 | 0.223070 | 0.377270 | 0.340550 | 0.299620 | 0.344510 | 0.283770 | 0.323390 | 0.360340',
'input_type': 'word'
}
sample_num (int): 生成音頻的數(shù)量;
save_audio (bool): 是否保存音頻文件;
save_dir (str): 保存處理結(jié)果的文件目錄。
其中需要以下說明:
text:就是指要唱的歌曲歌詞;
notes:表示歌詞對(duì)應(yīng)的曲譜;
notes_duration:表示歌詞中每個(gè)字要唱的時(shí)長(zhǎng);
接下來,我們準(zhǔn)備以下Python代碼:
import paddlehub as hub
module = hub.Module(name="diffsinger")
results = module.singing_voice_synthesis(
inputs={
'text': '小酒窩長(zhǎng)睫毛AP是你最美的記號(hào)',
'notes': 'C#4/Db4 | F#4/Gb4 | G#4/Ab4 | A#4/Bb4 F#4/Gb4 | F#4/Gb4 C#4/Db4 | C#4/Db4 | rest | C#4/Db4 | A#4/Bb4 | G#4/Ab4 | A#4/Bb4 | G#4/Ab4 | F4 | C#4/Db4',
'notes_duration': '0.407140 | 0.376190 | 0.242180 | 0.509550 0.183420 | 0.315400 0.235020 | 0.361660 | 0.223070 | 0.377270 | 0.340550 | 0.299620 | 0.344510 | 0.283770 | 0.323390 | 0.360340',
'input_type': 'word'
},
sample_num=1,
save_audio=True,
save_dir='./outputs'
)
我們執(zhí)行以上腳本:
python test.py
最終生成了開頭貼出的唱段。
上面生成的是翻唱歌曲。接下來,我們?cè)贋楦枋謱懸皇自瓌?chuàng)主打歌曲,鄙人不才作詞如下哈哈:
雙手敲下黑白鍵盤,這首音樂你是否會(huì)喜歡
作曲可難倒我了,我打算找AI來幫忙,找百度文心一言生成以下曲譜:
C#4/Db4 | F#4/Gb4 | G#4/Ab4 | A#4/Bb4 | F#4/Gb4 | F4/G4 | C#4/Db4 | C#4/Db4 | rest | C#4/Db4 | A#4/Bb4 | G#4/Ab4 | F#4/Gb4 | C#4/Db4 | G#4/Ab4 | A#4/Bb4 | G#4/Ab4 | F#4 | C#4/Db4
每個(gè)字的持續(xù)時(shí)間瞎編一下:
0.407140 | 0.376190 | 0.242180 | 0.509550 | 0.183420 | 0.315400 0.235020 | 0.361660 | 0.223070 | 0.377270 | 0.340550 | 0.299620 | 0.344510 | 0.283770 | 0.323390 | 0.360340 | 0.509550 | 0.183420 | 0.315400 0.235020 | 0.661660
?
?重新執(zhí)行Python腳本,主打歌生成了:點(diǎn)我試聽
?
六、結(jié)語
AI大時(shí)代,AI技術(shù)每個(gè)人都可以觸手可及,程序員群體更是近水樓臺(tái),最起碼可以起到自我娛樂的效果。
我們可以將以上技術(shù)部署到服務(wù)器,做成網(wǎng)站、小程序、APP等,借助AI平臺(tái)的能力,實(shí)現(xiàn)自動(dòng)生成歌詞,自動(dòng)生成曲譜,自動(dòng)生成唱段等,實(shí)現(xiàn)全民娛樂。
作為一個(gè)程序員,云服務(wù)器現(xiàn)在應(yīng)該是標(biāo)配了,學(xué)生可以用來學(xué)習(xí),菜鳥可以用來練手,老鳥玩點(diǎn)有趣的東西偶爾賺點(diǎn)小錢。你如果想買一臺(tái)云服務(wù)器來玩兒,下面是直達(dá)騰訊云優(yōu)惠專區(qū)的鏈接:文章來源:http://www.zghlxwxcb.cn/news/detail-711375.html
https://cloud.tencent.com/act/cps/redirect?redirect=5186&cps_key=814b8b5d55ef58acc94a1b6bf43d5a2b&from=console文章來源地址http://www.zghlxwxcb.cn/news/detail-711375.html
到了這里,關(guān)于用AI打造一個(gè)屬于自己的歌手,讓她C位霸氣出道的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!