電影《滿江紅》上映之后,國師的一段采訪視頻火了,被無數段子手惡搞做成鬼畜視頻,誠然,國師的這段采訪文本相當經典,他生動地描述了一個牛逼吹完,大家都信了,結果發現自己沒辦法完成最后放棄,隨后瘋狂往回找補的程序,
最離譜的是,他這段采訪用極其豐富的細節描述了一個沒有發生且沒有任何意義的事情,堪比單口相聲,形成了一種荒誕的美感,毫無疑問,《滿江紅》最大的貢獻就是這個采訪素材了,
往這個文本里套內容并沒有什么難度,小學生也可以,但配音是一個瓶頸,也就是說,普通人想染指鬼畜視頻還是有一定門檻的,這個領域往往是專業配音演員的天下,但今時非比往日,人工智能AI技術可以讓我們基于PaddleSpeech克隆出精致細膩的國師原聲,普通人也可以玩轉搞笑配音,
資料集準備和清洗
我們的目的是克隆國師的聲音,那么就必須要有國師的聲音樣本,這里的聲音樣本和使用so-vits-svc4.0克隆歌聲一樣,需要相對“干凈”的素材,所謂干凈,即沒有背景雜音和空白片段的音頻素材,也可以使用國師采訪的原視頻音軌,
需要注意的是,原視頻中女記者的提問音軌需要洗掉掉,否則會影響模型的推理效果,
隨后,將訓練集資料進行切分,主要是為了防止爆顯存問題,可以手動切為長度在5秒到15秒的音軌切片,也可以使用三方庫進行切分:
git clone https://github.com/openvpi/audio-slicer.git
隨后撰寫腳本:
import librosa # Optional. Use any library you like to read audio files.
import soundfile # Optional. Use any library you like to write audio files.
from slicer2 import Slicer
audio, sr = librosa.load('國師采訪.wav', sr=None, mono=False) # Load an audio file with librosa.
slicer = Slicer(
sr=sr,
threshold=-40,
min_length=5000,
min_interval=300,
hop_size=10,
max_sil_kept=500
)
chunks = slicer.slice(audio)
for i, chunk in enumerate(chunks):
if len(chunk.shape) > 1:
chunk = chunk.T # Swap axes if the audio is stereo.
soundfile.write(f'master_voice/{i}.wav', chunk, sr) # Save sliced audio files with soundfile.
注意這里min_length的單位是毫秒,
由于原始視頻并未有背景音樂,所以分拆之前我們不用拆分前景音和背景音,如果你的素材有背景音樂,可以考慮使用spleeter來進行分離,具體請參照:人工智能AI庫Spleeter免費人聲和背景音樂分離實踐(Python3.10),這里不再贅述,
如果對原視頻的存在的雜音不太滿意,可以通過noisereduce庫進行降噪處理:
from scipy.io import wavfile
import noisereduce as nr
# load data
rate, data = https://www.cnblogs.com/v3ucn/archive/2023/06/14/wavfile.read("1.wav")
# perform noise reduction
reduced_noise = nr.reduce_noise(y=data, sr=rate)
wavfile.write("1_reduced_noise.wav", rate, reduced_noise)
訓練集數量最好不要低于20個,雖然音頻訓練更適合小樣本,但數量不夠也會影響模型質量,
最后我們就得到了一組資料集:
D:\work\speech\master_voice>dir
驅動器 D 中的卷是 新加卷
卷的序列號是 9824-5798
D:\work\speech\master_voice 的目錄
2023/06/13 17:05 <DIR> .
2023/06/13 20:42 <DIR> ..
2023/06/13 16:42 909,880 01.wav
2023/06/13 16:43 2,125,880 02.wav
2023/06/13 16:44 1,908,280 03.wav
2023/06/13 16:45 2,113,080 04.wav
2023/06/13 16:47 2,714,680 05.wav
2023/06/13 16:48 1,857,080 06.wav
2023/06/13 16:49 1,729,080 07.wav
2023/06/13 16:50 2,241,080 08.wav
2023/06/13 16:50 1,959,480 09.wav
2023/06/13 16:51 1,921,080 10.wav
2023/06/13 16:52 1,921,080 11.wav
2023/06/13 16:52 1,677,880 12.wav
2023/06/13 17:00 1,754,680 13.wav
2023/06/13 17:01 2,202,680 14.wav
2023/06/13 17:01 2,023,480 15.wav
2023/06/13 17:02 1,793,080 16.wav
2023/06/13 17:03 2,586,680 17.wav
2023/06/13 17:04 2,189,880 18.wav
2023/06/13 17:04 2,573,880 19.wav
2023/06/13 17:05 2,010,680 20.wav
20 個檔案 40,213,600 位元組
2 個目錄 399,953,739,776 可用位元組
當然,如果懶得準備訓練集,也可以下載我切分好的,大家豐儉由己,各取所需:
鏈接:https://pan.baidu.com/s/1t5hE1LLktIPoyF70_GsH0Q?pwd=3dc6
提取碼:3dc6
至此,資料集就準備好了,
云端訓練和推理
資料集準備好了,我們就可以進行訓練了,在此之前,需要配置PaddlePaddle框架,但這一次,我們選擇在云端直接進行訓練,如果想要本地部署,請移步:聲音好聽,顏值能打,基于PaddleGAN給人工智能AI語音模型配上動態畫面(Python3.10),
首先進入Paddle的云端專案地址:
https://aistudio.baidu.com/aistudio/projectdetail/6384839
隨后點擊啟動環境,注意這里盡量選擇顯存大一點的算力環境:

這里的機器有點類似Google的colab,原則上免費,通過消耗算力卡來進行使用,
成功啟動環境之后,需要安裝依賴:
# 安裝實驗所需環境
!bash env.sh
!pip install typeguard==2.13
由于機器是共享的,一旦環境關閉,再次進入還需要再次進行安裝操作,
安裝好paddle依賴后,在左側找到檔案 untitled.streamlit.py ,雙擊檔案開啟,隨后點擊web按鈕,進入web頁面,
接著在web頁面中,點擊Browse files按鈕,將之前切分好的資料集上傳到服務器內部,
接著點擊檢驗資料按鈕,進行資料集的校驗,
最后輸入模型的名稱以及訓練輪數,然后點擊訓練即可:

以TeslaV100為例子,20個檔案的資料集200輪訓練大概只需要五分鐘就可以訓練完畢,
模型默認保存在專案的checkpoints目錄中,檔案名稱為master,
點擊匯出模型即可覆寫老的模型:

最后就是線上推理:

這里預制了三種聲碼器【PWGan】【WaveRnn】【HifiGan】, 三種聲碼器效果和生成時間有比較大的差距,這里推薦折中的PWGan聲碼器,因為畢竟是線上環境,每停留一個小時都會消耗算力點數,
合成完畢后,就可以拿到國師的克隆語音了,
結語
線上環境配置起來相對簡單,但要記住,完成克隆語音任務后,需要及時關倍訓境,防止算力點數的非必要消耗,最后奉上國師的音色克隆模型,與君共觴:
鏈接:https://pan.baidu.com/s/1nKOPlI7P_u_a5UGdHX76fA?pwd=ygqp
提取碼:ygqp
克隆音色版本的國師鬼畜視頻已經上傳到Youtube(B站),歡迎諸君品鑒和臻賞,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/555208.html
標籤:其他
上一篇:萬物云原生下的服務進化
下一篇:返回列表
