自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python進(jìn)行AI聲音克隆的端到端指南

人工智能
人工智能語(yǔ)音克隆是一種捕捉聲音的獨(dú)特特征,然后準(zhǔn)確性復(fù)制它的技術(shù)。這種技術(shù)不僅可以讓我們復(fù)制現(xiàn)有的聲音,還可以創(chuàng)造全新的聲音。它是一種徹底改變內(nèi)容創(chuàng)作的工具,從個(gè)性化歌曲到自定義畫外音,開(kāi)辟了一個(gè)超越語(yǔ)言和文化障礙的創(chuàng)意世界。

人工智能語(yǔ)音克隆是一種捕捉聲音的獨(dú)特特征,然后準(zhǔn)確性復(fù)制它的技術(shù)。這種技術(shù)不僅可以讓我們復(fù)制現(xiàn)有的聲音,還可以創(chuàng)造全新的聲音。它是一種徹底改變內(nèi)容創(chuàng)作的工具,從個(gè)性化歌曲到自定義畫外音,開(kāi)辟了一個(gè)超越語(yǔ)言和文化障礙的創(chuàng)意世界。

本文的將提供利用AI語(yǔ)音克隆技術(shù)-通過(guò)訓(xùn)練自定義模型將任何音頻轉(zhuǎn)換為選定藝術(shù)家的音調(diào)甚至自己的聲音的端到端解決方案。

技術(shù)背景

我們將在本文中使用的技術(shù)稱為歌唱聲音轉(zhuǎn)換(Singing Voice Conversion ),特別是一個(gè)稱為SO-VITS-SVC的系統(tǒng),它代表“SoftVC VITS Singing Voice Conversion”。

SO-VITS-SVC系統(tǒng)代表了使用深度學(xué)習(xí)技術(shù)的聲音轉(zhuǎn)換(SVC)的復(fù)雜實(shí)現(xiàn)。理解這個(gè)系統(tǒng)需要了解它所使用的特定機(jī)器學(xué)習(xí)架構(gòu)和算法。

1、變分推理和生成對(duì)抗網(wǎng)絡(luò)

SO-VITS-SVC的核心是文本到語(yǔ)音的變分推理(VITS)架構(gòu)。該系統(tǒng)巧妙地結(jié)合了變分自編碼器(VAEs)和生成對(duì)抗網(wǎng)絡(luò)(GANs)。在SVC中,mel譜圖是音頻信號(hào)的重要表征,利用VAE對(duì)mel譜圖的分布進(jìn)行建模,有助于捕捉語(yǔ)音的潛在變量。

VAE損失函數(shù)按下式表示。式中,x為輸入mel譜圖,z為潛變量,KL為Kullback-Leibler散度。

上面公式封裝了VAE損失函數(shù),通過(guò)Kullback-Leibler散度平衡了mel譜圖的重建和潛空間的正則化。

GAN則增強(qiáng)了合成音頻的真實(shí)感。GAN中的鑒別器對(duì)生成器的輸出進(jìn)行判別,提高了生成器的精度。GAN損失函數(shù)為:

GAN損失函數(shù)展示了對(duì)抗訓(xùn)練動(dòng)態(tài),驅(qū)動(dòng)生成模型產(chǎn)生難以區(qū)分的歌聲。

如果想全面了解了解變分自編碼器(VAEs)和生成對(duì)抗網(wǎng)絡(luò)(gan),以下是原始論文:

VAEs: Kingma, D. P., and Welling, M. “Auto-Encoding Variational Bayes.” arXiv:1312.6114, 2013.

GANs: Goodfellow, I. J., et al. “Generative Adversarial Nets.” arXiv:1406.2661, 2014.

2、淺擴(kuò)散過(guò)程

如附所示,淺擴(kuò)散過(guò)程從噪聲樣本開(kāi)始,通過(guò)一系列變換逐步細(xì)化為結(jié)構(gòu)化梅爾譜圖。

上圖展示了SO-VITS-SVC合成流程,從淺擴(kuò)散模型的初始噪聲生成到mel譜圖的細(xì)化和最終可聽(tīng)聲音輸出的語(yǔ)音編碼。

初始噪聲樣本:噪聲的視覺(jué)表示,作為擴(kuò)散過(guò)程的起點(diǎn)。

轉(zhuǎn)換步驟:噪聲在擴(kuò)散模型中經(jīng)歷一系列步驟,從無(wú)序狀態(tài)過(guò)渡到結(jié)構(gòu)化的mel譜圖。其中xt是步驟t的數(shù)據(jù),而ε表示高斯噪聲。

上面公式說(shuō)明了擴(kuò)散過(guò)程中的逐漸轉(zhuǎn)變,將隨機(jī)噪聲轉(zhuǎn)化為結(jié)構(gòu)化數(shù)據(jù),捕捉目標(biāo)歌聲的細(xì)微差別。在SO-VITS-SVC的背景下,“淺”意味著更少的層或步驟,在計(jì)算效率和音頻質(zhì)量之間取得平衡。

mel譜圖優(yōu)化:這個(gè)過(guò)程的結(jié)果是一個(gè)mel譜圖,它封裝了歌唱聲音的音頻內(nèi)容,為下一個(gè)合成階段做好準(zhǔn)備。

聲音編碼:最后的聲音編碼步驟將mel譜圖轉(zhuǎn)換成聲音波形,即可聽(tīng)到的歌聲。

如果想深入探索擴(kuò)散模型,請(qǐng)看一下的資料:

Sohl-Dickstein, J., et al. “Deep Unsupervised Learning using Nonequilibrium Thermodynamics.” arXiv:1503.03585, 2015.

Ho, J., et al. “Denoising Diffusion Probabilistic Models.” arXiv:2006.11239, 2020.

3、完整流程與SVC系統(tǒng)的整合

在淺層擴(kuò)散模型將噪音結(jié)構(gòu)化成更連貫的形式之后,如前面提到的圖表所示,生成的mel譜圖捕捉了歌唱聲音的微妙音頻內(nèi)容。這個(gè)mel譜圖作為原始、非結(jié)構(gòu)化數(shù)據(jù)與最終聲音輸出之間的關(guān)鍵橋梁。

然后使用聲碼器將優(yōu)化后的mel譜圖轉(zhuǎn)換為音頻波形。在這一步中,將從視覺(jué)數(shù)據(jù)轉(zhuǎn)換為可聽(tīng)的歌唱聲音。聲碼器的作用是合成mel譜圖中捕捉到的音高、音色和節(jié)奏的細(xì)微差別,從而產(chǎn)生最終的歌唱聲音輸出。

為了實(shí)現(xiàn)高保真度的合成,SO-VITS-SVC系統(tǒng)會(huì)經(jīng)過(guò)重新的訓(xùn)練和優(yōu)化。訓(xùn)練包括優(yōu)化結(jié)合了VAE、GAN和擴(kuò)散模型組件貢獻(xiàn)的損失函數(shù)。這種優(yōu)化使用諸如隨機(jī)梯度下降或Adam等算法進(jìn)行,其最終目標(biāo)是最小化總體損失。這個(gè)過(guò)程確保最終輸出在音色、音高和節(jié)奏方面與目標(biāo)歌唱聲音非常相似。

這個(gè)過(guò)程的最終結(jié)果是一個(gè)與目標(biāo)歌唱聲音非常相似的合成聲音。在保持源聲音的音樂(lè)性和表現(xiàn)力細(xì)微差別的能力的同時(shí),采用目標(biāo)的音色特質(zhì),這是SO-VITS-SVC系統(tǒng)復(fù)雜性的體現(xiàn)。

4、使用的python庫(kù)

GitHub上的SO-VITS-SVC Fork是一個(gè)專門設(shè)計(jì)用于實(shí)時(shí)歌聲轉(zhuǎn)換的專業(yè)工具。它是提供了增強(qiáng)功能的原始SO-VITS-SVC項(xiàng)目的分支:如使用CREPE更準(zhǔn)確的音高估計(jì)、圖形用戶界面(GUI)、更快的訓(xùn)練時(shí)間以及使用pip安裝工具的便利性。

它還集成了QuickVC并修復(fù)了原始存儲(chǔ)庫(kù)中存在的一些問(wèn)題。并且支持實(shí)時(shí)語(yǔ)音轉(zhuǎn)換,下面我們來(lái)演示如何使用它。

AI聲音克隆

聲音克隆就是我們一般所說(shuō)的推理階段,是指神經(jīng)網(wǎng)絡(luò)模型在數(shù)據(jù)集上接受訓(xùn)練以理解特定聲音后,用所學(xué)到的聲音生成新內(nèi)容的過(guò)程。

在這個(gè)階段,我們可以通過(guò)向預(yù)訓(xùn)練的模型提供新的輸入(原始的聲音音頻)來(lái)讓AI“唱歌”,然后該模型會(huì)在原始聲音音頻上產(chǎn)生模仿藝術(shù)家歌唱風(fēng)格的輸出。

1、設(shè)置環(huán)境

為簡(jiǎn)單起見(jiàn),我們將創(chuàng)建一個(gè)心的虛擬環(huán)境,然后使用它

conda create -n sovits-svc 
conda activate sovits-svc

安裝必要的庫(kù)。

 !python -m pip install -U pip wheel
 %pip install -U ipython
 %pip install -U so-vits-svc-fork

如果你運(yùn)行svc命令報(bào)錯(cuò),例如下圖

則需要使用pip uninstall Torchaudio卸載Torchaudio,然后使用pip install Torchaudio重新安裝。這可能是因?yàn)橐恍┮蕾嚊](méi)有完整的安裝,所以卸載后重裝就可以了。

2、預(yù)訓(xùn)練模型

entrepreneurdly在Huggingface上提供了很多預(yù)訓(xùn)練模型

我們直接下載使用:

 from huggingface_hub import hf_hub_download
 import os
 
 # Set the repository ID and local directory, we'll use Drake's Model
 repo_id = 'Entreprenerdly/drake-so-vits-svc'
 local_directory = '.'
 
 # Download the config.json file
 config_file = hf_hub_download(
    repo_id=repo_id,
    filename='config.json',
    local_dir=local_directory,
    local_dir_use_symlinks=False
 )
 
 # Construct the path to the config file in the current directory
 local_config_path = os.path.join(local_directory, 'config.json')
 print(f"Downloaded config file: {local_config_path}")
 
 # Download the model file
 model_file = hf_hub_download(
    repo_id=repo_id,
    filename='G_106000.pth',
    local_dir=local_directory,
    local_dir_use_symlinks=False
 )
 
 # Construct the path to the model file in the current directory
 local_model_path = os.path.join(local_directory, 'G_83000.pth')
 print(f"Downloaded model file: {local_model_path}")

3、選擇一個(gè)干凈的音頻文件

下面就是要復(fù)制音頻,但是這里需要音頻是一個(gè)只有人聲的干凈的音頻文件,如果音頻里面的噪聲比較多,我們需要手動(dòng)進(jìn)行預(yù)處理。因?yàn)樵匆纛l的質(zhì)量會(huì)顯著影響語(yǔ)音轉(zhuǎn)換的保真度,因此始終建議使用高質(zhì)量、干凈的錄音。

 import requests
 
 vocals_url = 'https://drive.google.com/uc?id=154awrw0VxIZKQ2jQpHQQSt__cOUdM__y'
 response = requests.get(vocals_url)
 with open('vocals.wav', "wb") as file:
    file.write(response.content)
 
 display(Audio('vocals.wav', autoplay=True))

4、運(yùn)行推理

 from IPython.display import Audio, display
 import os
 
 # Filenames
 audio_filename = 'vocals.wav'
 model_filename = 'G_106000.pth'
 config_filename = 'config.json'
 
 # Construct the full local paths
 audio_file = f"\"{os.path.join('.', audio_filename)}\""
 model_path = f"\"{os.path.join('.', model_filename)}\""
 config_path = f"\"{os.path.join('.', config_filename)}\""
 
 # Running the inference command
 !svc infer {audio_file} -m {model_path} -c {config_path}

5、顯示輸出

可以直接在Jupyter筆記本或任何IPython界面中顯示輸出音頻:

 from IPython.display import Audio, display
 
 # Path for the output audio file
 output_audio_path = "vocals.out.wav"
 
 # Display the output audio
 display(Audio(output_audio_path, autoplay=True))

使用GUI

SO-VITS-SVC系統(tǒng)提供了一個(gè)可選的GUI來(lái)執(zhí)行語(yǔ)音轉(zhuǎn)換。可以使用以下命令啟動(dòng)它

svcg

訓(xùn)練自己的AI模型

上面我們演示了使用預(yù)訓(xùn)練模型的推理過(guò)程,下面我們來(lái)介紹如何訓(xùn)練自己的模型。

我們將展示使用SO-VITS-SVC系統(tǒng)訓(xùn)練自定義歌聲轉(zhuǎn)換模型所需的步驟。從準(zhǔn)備數(shù)據(jù)集開(kāi)始,進(jìn)行環(huán)境設(shè)置和模型訓(xùn)練,最后通過(guò)從現(xiàn)有音頻剪輯生成歌聲來(lái)進(jìn)行生成。

這個(gè)任務(wù)需要大量計(jì)算資源,需要一臺(tái)配備高端GPU和大量VRAM的系統(tǒng)——通常超過(guò)10GB。對(duì)于那些個(gè)人硬件可能不符合這些要求的人來(lái)說(shuō),Google Colab提供了一個(gè)可行的替代方案,提供了訪問(wèn)強(qiáng)大GPU和足夠的內(nèi)存——一塊T4 GPU就足夠了。

1、數(shù)據(jù)準(zhǔn)備

可以在Hugging Face上找到許多適用于訓(xùn)練自定義so-vits-svc模型的語(yǔ)音數(shù)據(jù)集。但是要個(gè)性化自己的模型以反映獨(dú)特的聲音特征,則需要錄制自己的聲音。

聲音樣本要求:

  • 樣本長(zhǎng)度:最好每段10秒。這個(gè)長(zhǎng)度對(duì)于捕捉聲音細(xì)微差別而言是最理想的,同時(shí)也不會(huì)對(duì)處理過(guò)程提出太高的要求。
  • 樣本數(shù)量:數(shù)據(jù)越多,效果越好。需要至少200個(gè)聲音樣本。如果需要唱歌,則需要50個(gè)歌唱樣本和150個(gè)說(shuō)話樣本,類似這樣比例。
  • 總音頻長(zhǎng)度:至少五分鐘的總音頻時(shí)常。這為模型提供了一個(gè)學(xué)習(xí)的堅(jiān)實(shí)基礎(chǔ)。
  • 多樣化內(nèi)容:通過(guò)朗讀語(yǔ)音質(zhì)量平衡的句子來(lái)覆蓋各種音素。例如IEEE推薦的語(yǔ)音質(zhì)量測(cè)量實(shí)踐提供了一個(gè)這樣的句子列表,這些句子可以為一個(gè)全面的數(shù)據(jù)集做出貢獻(xiàn)。
  • 錄制工具:Audacity是一個(gè)免費(fèi)、開(kāi)源的軟件,非常適合錄制您的樣本。它可以輕松錄制、編輯和導(dǎo)出WAV文件,還可以對(duì)音頻進(jìn)行處理,所以推薦使用

聲音樣本的預(yù)處理

我們需要從音頻軌道中去除背景噪音。Spleeter庫(kù)可以實(shí)現(xiàn)這個(gè)功能

 !pip install spleeter
 
 from spleeter.separator import Separator
 
 # Initialize the separator with the desired configuration.
 # Here, 'spleeter:2stems' means we want to separate the audio into two stems: vocals and accompaniment.
 separator = Separator('spleeter:2stems')
 
 # Use the separator on the audio file.
 # This function will separate the audio file into two files: one containing the vocals, and one containing the background music.
 separator.separate_to_file('audiofile.wav', './')

將音頻軌道分割為片段:我們可以使用AudioSlicer將大量的音頻文件分割成適合訓(xùn)練模型的10至15秒的片段。

 from audioslicer import slice_audio
 
 # Path to the input audio file
 input_audio_path = 'long_audio_file.wav'
 
 # Path to the output directory where snippets will be saved
 output_directory = 'output/snippets/'
 
 # Length of each audio snippet in seconds
 snippet_length = 15  
 
 # Slice the audio file into snippets
 slice_audio(input_audio_path, output_directory, snippet_length)

在當(dāng)目錄下創(chuàng)建了dataset_raw文件夾,并且錄音存儲(chǔ)在dataset_raw/{speaker_id}目錄中,如下面的文件夾結(jié)構(gòu)所示

 .
 ├── dataset_raw
 │   └── {speaker_id}
 │       └── {wav_file}.wav

我們處理后的音頻以這種形式保存即可

然后需要運(yùn)行,進(jìn)行svc的自動(dòng)預(yù)處理

 !svc pre-resample
 !svc pre-config
 !svc pre-hubert

2、訓(xùn)練配置

訓(xùn)練之前還配置模型,需要在config/44k/目錄中創(chuàng)建的config.json文件。這個(gè)配置文件中的關(guān)鍵參數(shù)包括:log_interval、eval_interval、epochs、batch_size:

對(duì)于包含200個(gè)樣本和批量大小為20的數(shù)據(jù)集,每個(gè)訓(xùn)練輪次等于10步。如果要訓(xùn)練100輪,這就等于1,000個(gè)步。

默認(rèn)設(shè)置可能會(huì)建議10,000步,但根據(jù)您的硬件和數(shù)據(jù)集大小,可能需要調(diào)整這個(gè)設(shè)置。一個(gè)實(shí)際的方法可能是以20,000步(20000/10 約等于2000輪)為目標(biāo),然后評(píng)估性能再?zèng)Q定是否延長(zhǎng)訓(xùn)練。

3、開(kāi)始訓(xùn)練

使用svc train命令開(kāi)始實(shí)際的模型訓(xùn)練。

!svc train

4、模型推理

在對(duì)模型進(jìn)行了訓(xùn)練、微調(diào)和驗(yàn)證之后,下一步是運(yùn)行推理,將源音頻轉(zhuǎn)換為目標(biāo)語(yǔ)音

from IPython.display import Audio, display
 import os
 
 # Filenames
 audio_filename = 'vocals.wav' # vocals to applied trained model
 model_filename = 'model.pth' # model file created
 config_filename = 'config.json' # config file created 
 
 # Construct the full local paths
 audio_file = f"\"{os.path.join('.', audio_filename)}\""
 model_path = f"\"{os.path.join('.', model_filename)}\""
 config_path = f"\"{os.path.join('.', config_filename)}\""
 
 # Running the inference command
 !svc infer {audio_file} -m {model_path} -c {config_path}

然后就可以查看結(jié)果了

總結(jié)

SO-VITS-SVC(基于擴(kuò)散模型和變分自動(dòng)編碼器的歌聲轉(zhuǎn)換系統(tǒng))是一個(gè)強(qiáng)大的工具,用于實(shí)現(xiàn)實(shí)時(shí)歌聲轉(zhuǎn)換。通過(guò)結(jié)合了擴(kuò)散模型、變分自動(dòng)編碼器和生成對(duì)抗網(wǎng)絡(luò)等技術(shù),SO-VITS-SVC系統(tǒng)能夠捕捉歌聲的細(xì)微差別,并產(chǎn)生高質(zhì)量的合成歌聲。

SO-VITS-SVC系統(tǒng)是一個(gè)功能強(qiáng)大且靈活的歌聲轉(zhuǎn)換工具,可以應(yīng)用于多種場(chǎng)景,包括音樂(lè)制作、語(yǔ)音合成、語(yǔ)音轉(zhuǎn)換等領(lǐng)域,為用戶提供了實(shí)現(xiàn)個(gè)性化歌聲轉(zhuǎn)換的便利和可能。

so-vits-svc-fork地址:

https://github.com/voicepaw/so-vits-svc-fork

責(zé)任編輯:華軒 來(lái)源: DeepHub IMBA
相關(guān)推薦

2021-06-30 09:00:00

測(cè)試Web軟件

2023-03-16 14:29:48

Vue.js測(cè)試

2025-03-28 07:50:00

端到端測(cè)試Go語(yǔ)言

2025-03-20 07:01:40

2025-01-16 10:11:58

2019-08-22 11:16:41

云計(jì)算數(shù)據(jù)中心技術(shù)

2016-04-18 18:09:43

2022-11-08 15:11:17

GPU開(kāi)源

2021-03-19 17:59:30

深度學(xué)習(xí)音頻程序

2017-01-05 20:11:34

大數(shù)據(jù)技術(shù)審計(jì)系統(tǒng)

2021-03-29 10:56:51

人工智能深度學(xué)習(xí)

2020-10-26 13:51:11

Kafka數(shù)據(jù)端到端

2024-06-27 09:50:56

2023-02-27 17:54:55

2009-03-17 09:56:00

802.11n測(cè)試無(wú)線網(wǎng)絡(luò)

2024-02-21 09:14:32

端到端自動(dòng)駕駛

2019-04-11 09:22:31

AI 數(shù)據(jù)人工智能

2016-11-14 17:36:57

Angular 2應(yīng)用程序端對(duì)端

2022-10-19 09:27:39

2024-08-08 09:30:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)