忽如一夜春風(fēng)來(lái),亞洲天后孫燕姿獨(dú)特而柔美的音色再度響徹華語(yǔ)樂(lè)壇,只不過(guò)這一次,不是因?yàn)樗隽诵聦]?,而是人工智能AI技術(shù)對(duì)于孫燕姿音色的完美復(fù)刻,以大江灌浪之勢(shì)對(duì)華語(yǔ)歌壇諸多經(jīng)典作品進(jìn)行了翻唱,還原度令人咋舌,如何做到的?
本次我們借助基于Python3.10的開(kāi)源庫(kù)so-vits-svc,讓亞洲天后孫燕姿幫我們免費(fèi)演唱喜歡的歌曲,實(shí)現(xiàn)點(diǎn)歌自由。
so-vits-svc是基于VITS的開(kāi)源項(xiàng)目,VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)是一種結(jié)合變分推理(variational inference)、標(biāo)準(zhǔn)化流(normalizing flows)和對(duì)抗訓(xùn)練的高表現(xiàn)力語(yǔ)音合成模型。
VITS通過(guò)隱變量而非頻譜串聯(lián)起來(lái)語(yǔ)音合成中的聲學(xué)模型和聲碼器,在隱變量上進(jìn)行隨機(jī)建模并利用隨機(jī)時(shí)長(zhǎng)預(yù)測(cè)器,提高了合成語(yǔ)音的多樣性,輸入同樣的文本,能夠合成不同聲調(diào)和韻律的語(yǔ)音。
環(huán)境配置
首先確保本機(jī)已經(jīng)安裝好Python3.10的開(kāi)發(fā)環(huán)境,隨后使用Git命令克隆項(xiàng)目:
git clone https://github.com/svc-develop-team/so-vits-svc.git
隨后進(jìn)入項(xiàng)目的目錄:
cd so-vits-svc
接著安裝依賴,如果是Linux或者M(jìn)ac系統(tǒng),運(yùn)行命令:
pip install -r requirements.txt
如果是Windows用戶,需要使用Win系統(tǒng)專用的依賴文件:
pip install -r requirements_win.txt
依賴庫(kù)安裝成功之后,在項(xiàng)目的根目錄運(yùn)行命令,啟動(dòng)服務(wù):
python webUI.py
程序返回:
PS D:\so-vits-svc> python .\webUI.py
DEBUG:charset_normalizer:Encoding detection: ascii is most likely the one.
C:\Users\zcxey\AppData\Roaming\Python\Python310\site-packages\gradio\deprecation.py:43: UserWarning: You have unused kwarg parameters in UploadButton, please remove them: {'variant': 'primary'}
warnings.warn(
DEBUG:asyncio:Using proactor: IocpProactor
Running on local URL: http://127.0.0.1:7860
To create a public link, set `share=True` in `launch()`.
說(shuō)明服務(wù)已經(jīng)正常啟動(dòng)了,這里so-vits-svc會(huì)在后臺(tái)運(yùn)行一個(gè)基于Flask框架的web服務(wù),端口號(hào)是7860,此時(shí)訪問(wèn)本地的網(wǎng)址:127.0.0.1:7860:
此時(shí),我們就可以加載模型,模型訓(xùn)練先按下不表,這里先使用已經(jīng)訓(xùn)練好的孫燕姿音色模型:
鏈接:https://pan.baidu.com/s/1RwgRe6s4HCA2eNI5sxHZ9A?pwd=7b4a
提取碼:7b4a
下載模型文件之后,將模型文件放入logs/44k目錄:
D:\so-vits-svc\logs\44k>dir
驅(qū)動(dòng)器 D 中的卷是 新加卷
卷的序列號(hào)是 9824-5798
D:\so-vits-svc\logs\44k 的目錄
2023/05/10 12:31 <DIR> .
2023/05/10 11:49 <DIR> ..
2023/04/08 15:22 542,178,141 G_27200.pth
2023/04/08 15:54 15,433,721 kmeans_10000.pt
2023/05/10 11:49 0 put_pretrained_model_here
3 個(gè)文件 557,611,862 字節(jié)
2 個(gè)目錄 475,872,493,568 可用字節(jié)
D:\so-vits-svc\logs\44k>
接著將模型的配置文件config.js放入configs目錄:
D:\so-vits-svc\configs>dir
驅(qū)動(dòng)器 D 中的卷是 新加卷
卷的序列號(hào)是 9824-5798
D:\so-vits-svc\configs 的目錄
2023/05/10 11:49 <DIR> .
2023/05/10 12:23 <DIR> ..
2023/04/08 12:33 2,118 config.json
1 個(gè)文件 2,118 字節(jié)
2 個(gè)目錄 475,872,493,568 可用字節(jié)
D:\so-vits-svc\configs>
隨后,在頁(yè)面中點(diǎn)擊加載模型即可,這里環(huán)境就配置好了。
原始歌曲處理(人聲和伴奏分離)
如果想要使用孫燕姿的模型進(jìn)行推理,讓孫燕姿同學(xué)唱?jiǎng)e的歌手的歌,首先需要一段已經(jīng)準(zhǔn)備好的聲音范本,然后使用模型把原來(lái)的音色換成孫燕姿模型訓(xùn)練好的音色,有些類似Stable-Diffusion的圖像風(fēng)格遷移,只不過(guò)是將繪畫(huà)風(fēng)格替換為音色和音準(zhǔn)。
這里我們使用晴子的《遙遠(yuǎn)的歌》,這首歌曲調(diào)悠揚(yáng),如訴如泣,和孫燕姿婉轉(zhuǎn)的音色正好匹配。好吧,其實(shí)是因?yàn)檫@首歌比較簡(jiǎn)單,方便新手練習(xí)。
需要注意的是,模型推理過(guò)程中,需要的歌曲樣本不應(yīng)該包含伴奏,因?yàn)榘樽鄬儆凇霸胍簟?,?huì)影響模型的推理效果,因?yàn)槲覀兲鎿Q的是歌手的“聲音”,并非伴奏。
這里我們選擇使用開(kāi)源庫(kù)Spleeter來(lái)對(duì)原歌曲進(jìn)行人聲和伴奏分離,首先安裝spleeter:
pip3 install spleeter --user
接著運(yùn)行命令,對(duì)《遙遠(yuǎn)的歌》進(jìn)行分離操作:
spleeter separate -o d:/output/ -p spleeter:2stems d:/遙遠(yuǎn)的歌.mp3
這里-o代表輸出目錄,-p代表選擇的分離模型,最后是要分離的素材。
首次運(yùn)行會(huì)比較慢,因?yàn)閟pleeter會(huì)下載預(yù)訓(xùn)練模型,體積在1.73g左右,運(yùn)行完畢后,會(huì)在輸出目錄生成分離后的音軌文件:
C:\Users\zcxey\Downloads\test>dir
驅(qū)動(dòng)器 C 中的卷是 Windows
卷的序列號(hào)是 5607-6354
C:\Users\zcxey\Downloads\test 的目錄
2023/05/09 13:17 <DIR> .
2023/05/10 20:57 <DIR> ..
2023/05/09 13:17 26,989,322 accompaniment.wav
2023/05/09 13:17 26,989,322 vocals.wav
2 個(gè)文件 53,978,644 字節(jié)
2 個(gè)目錄 182,549,413,888 可用字節(jié)
其中vocals.wav為晴子的清唱聲音,而accompaniment.wav則為伴奏。
關(guān)于spleeter更多的操作,請(qǐng)移步至:人工智能AI庫(kù)Spleeter免費(fèi)人聲和背景音樂(lè)分離實(shí)踐(Python3.10) , 這里不再贅述。
至此,原始歌曲就處理好了。
歌曲推理
此時(shí),將晴子的清唱聲音vocals.wav文件添加到頁(yè)面中:
接著就是參數(shù)的調(diào)整:
這里推理歌曲會(huì)有兩個(gè)問(wèn)題,就是聲音沙啞和跑調(diào),二者必居其一。
F0均值濾波(池化)參數(shù)開(kāi)啟后可以有效改善沙啞問(wèn)題,但有概率導(dǎo)致跑調(diào),而降低該值則可以減少跑調(diào)的概率,但又會(huì)出現(xiàn)聲音沙啞的問(wèn)題。
基本上,推理過(guò)程就是在這兩個(gè)參數(shù)之間不斷地調(diào)整。
所以每一次推理都需要認(rèn)真的聽(tīng)一下歌曲有什么問(wèn)題,然后調(diào)整參數(shù)的值,這里我最終的參數(shù)調(diào)整結(jié)果如上圖所示。
推理出來(lái)的歌曲同樣也是wav格式,此時(shí)我們將推理的清唱聲音和之前分離出來(lái)的伴奏音樂(lè)accompaniment.wav進(jìn)行合并即可,這里推薦使用FFMPEG:
ffmpeg -f concat -i <( for f in *.wav; do echo "file '$(pwd)/$f'"; done ) output.wav
該命令可以把推理的人聲wav和背景音樂(lè)wav合并為一個(gè)output.wav歌曲,也就是我們最終的作品。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-438552.html
結(jié)語(yǔ)
藉此,我們就完成了自由點(diǎn)歌讓天后演唱的任務(wù),如果后期配上畫(huà)面和歌詞的字幕,不失為一個(gè)精美的AI藝術(shù)品,在Youtube(B站)搜索關(guān)鍵字:劉悅的技術(shù)博客,即可欣賞最終的成品歌曲,歡迎諸君品鑒。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-438552.html
到了這里,關(guān)于AI天后,在線飆歌,人工智能AI孫燕姿模型應(yīng)用實(shí)踐,復(fù)刻《遙遠(yuǎn)的歌》,原唱晴子(Python3.10)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!