AI 語音

不用再錄音了,透過 AI 語音來製作你的 Podcast 吧!

發布時間:2023-08-31  / 上次更新時間:2023-09-01

最近除了圖片生成外,像是聲音生成類型都需要一定的技術,而我最近剛好看到一個透過 VITS 技術來複製自己的聲音,過程簡單好上手,你也可以透過 AI 語音複製你的聲音!

More...

在正式教學前,先介紹一下為什麼我會想寫這篇文章,在寫這篇文章之前我就嘗試在找有沒有可以透過 AI 複製聲音的服務,但不是收費昂貴就是技術過程複雜。

但今天剛好看到這部影片與文章教學,發現有個超簡單的方法,而且無需好電腦或配備也可以做到,就讓我們開始吧,對了目前是以 Windows 作為測試環境,MacOS 不確定。

VITS 是什麼?

VITS 是一種聲學模型,透過將聲音特徵加入原本預先訓練好的語音模型,這篇教學會使用到的 VITS Fast Fine-tuning,透過你提供的語音資料來將特徵合成到語音當中。

過程中我們只需要準備好訓練資料,也就是目標聲音的語音檔,無須高階顯卡或電腦,會使用 Google Colab 來線上訓練,我們只要將訓練好的模型下載下來使用即可!

推薦文章:【So-VITS/VITS】炼丹速通指南-知乎

另外,So-VITS 與 VITS 的差別在於 So-VITS 是用於歌曲用的,而 VITS 是用於讀文本用的,最簡單的說法就是前者是將歌曲轉成你的聲音,後者可用於將文本轉為 Podcast。

上面提到的文章文末有一個 RVC,我自己也有試過,他算是相對簡單的快速的,如果是想將歌曲專為自已的聲音則可以嘗試看看!

實作前須知

在訓練前特別說一下,如果你要透過此模型來做 Podcast,我會建議在一開始輸入的訓練資料多放些心力,如果沒有好的音檔或是數量過少,可以特別去多錄一些高品質的音檔。

我自己是拿之前 Podcast 的音檔作為訓練資料,但其實當時錄音時有些口誤或是比較卡的部分,這些都會直接回饋在訓練完的語音中,所以特別拿出來說一下!

還有在使用 Google Colab 的訓練過程中會產出許多資料,如果你原本的雲端硬碟空間不到 5G,那我建議在訓練過程中要持續刪除垃圾桶中的舊資料。

因為過程中他會自動把舊檔案放到垃圾桶,不過垃圾桶裡面的檔案還是會佔空間,或是直接開一個新帳號來訓練也可以!

AI 語音訓練資料準備

資料來源:VITS Fast Fine-tuning 訓練資料格式

如果你有 Windows 系統的電腦,我覺得 Moo0 錄音專家 蠻好用的,可以設定錄音格式為 wav 或 mp3,同時還有快速命名、覆蓋等功能,算是效率很高的錄音工具。

此外,如果你沒有訓練資料,打算錄音卻不知道要錄什麼內容的話,可以使用 ChatGPT 來生成文本,除了不用當下腦筋急轉彎之外,也可以更清楚地唸出內容。

簡易版 Prompt 如下:“請扮演一個擅長科技的3C podcaster,請幫我生成長度為 5 到 10 分鐘內的文本,以科技為主題介紹當前主流電腦或3C相關”

你可以根據你想做的主題當訓練素材,同時也可以翻譯成英文版的,這樣語音模型在講英文時會更符合你的聲音,同時這個文本也可以在過程中校正使用,所以也記得留著!

訓練資料的格式與命名也有規定,且分別有短音檔、長音檔與影片,格式如下:

短音檔

  • 音檔格式必須為 .wav
  • 每個音檔的長度介於 2~10 秒內
  • 音檔的名稱須為數字如:0001.wav
  • 需要將這些音檔放到資料夾中,並且該資料夾名稱為角色名稱
  • 建立一個資料夾名稱為 samples,並將該角色名稱資料夾放入並壓縮成 .zip

長音檔

  • 音檔格式必須為 .wav
  • 每個音檔的長度須介於 3~20 分鐘
  • 音檔的名稱須為名稱與數字如:Geekaz_0001.wav
  • 音檔無需壓縮或放到同一個名稱的資料夾,只要音檔名稱正確即可

影片

  • 音檔格式必須為 .mp4
  • 每個影片檔的長度須介於 3~20 分鐘
  • 音檔的名稱須為名稱與數字如:Geekaz_0001.mp4
  • 音檔無需壓縮或放到同一個名稱的資料夾,只要音檔名稱正確即可
  • 附註:影片當會只保留聲音,且只能有一個人講話,背景音會自動去除

複製一份檔案到 Google Colab

可以到 Github 查看教學原文或是直接到 Google Colab 檔案區點擊檔案,複製一份到雲端硬碟就可以開始囉。

Colabs 訓練步驟 0

開始訓練語音模型

複製完一份之後你會獲得一模一樣的檔案,如果你之前沒用過 Google Colab 也沒關係,只要跟著步驟一步一步按下左上角的按鈕就可以開始囉。

第一步,查看 GPU 配置,這裡用的是雲端運算的設備,免費版 Google Colab 的規格也算是相對夠用了!

Colabs 訓練步驟 1

下一步是複製代碼庫,這步驟由於環境安裝的較多所以會花較多時間,他也有給出預計時間約為 6 分鐘!

Colabs 訓練步驟 2

這步驟是要選擇模型,根據你想訓練出的模型來選擇

Colabs 訓練步驟 3 選擇訓練模型

接著由於我們的訓練檔案是放在雲端硬碟,所以需要另外連上雲端的權限

Colabs 訓練步驟 4 使用雲端硬碟

預設的話他是沒有 /VITS/ 的,但我是建議在雲端新增一個資料夾,後續整理起來方便很多,另外這個名字可以自己取,反正新增的資料夾名稱跟這裡有對上就好。

下圖為短音檔的示範,短音檔需要在後方標注 .zip 的檔案名稱

Colabs 訓練步驟 5 修改雲端硬碟路徑

下圖則視為長音檔,相較短音檔因為不用壓縮所以只要有資料夾路徑即可

Colabs 訓練步驟 6

接下來這步驟會幫你自動處理音檔資料,並生成逐字稿

Colabs 訓練步驟 7

音檔處理完成且產生逐字稿後,可以點擊左側的資料夾找到 long_characrer_anno.txtshort_character_anno.txt,這兩個分別是長音檔與短音檔的逐字稿。

因為自動辨識的關係,可能不會 100% 精確,所以透過手動修正可以讓後續的模型更加準確,另外短音檔的識別準確度會比長音檔還來的低,所以特別需要去檢查!

雙擊之後直接在右側修改,或是下載下來把它修改完再上傳覆蓋都可以!

Colabs 訓練步驟 8

檔案點開後,呈現如下,左側為你音檔的角色名稱,右側則是自動辨識的文字,如果你是透過 ChatGPT 生成文本的,那麼在檢查方面速度就相對快很多!

Colabs 訓練步驟 9

當你修正完逐字稿後,可以開始來訓練模型,這裡我覺得輔助訓練數據不一定要開,如果樣本數真的很少的話可以考慮!

Colabs 訓練步驟 10

接著選擇 epochs 也就是訓練次數,如果你的訓練資料量覺得蠻多的話,像是總和超過 100 分鐘以上,我覺得可以選擇 30 epochs。

因為免費版的 Google Colab 有資源限制,如果一次就調太長可能會訓練到一半就被暫停,而當你 Colab 的免費資源用完後,如果來不及下載,那就只能重跑一次流程。

但好處也不用擔心,如果真的發生了,由於你前面還保存著訓練到一半的資料,在雲端會看到兩個檔案分別是 G_latest.pth 與 D_latest.pth,透過他可以接續前面的訓練!

還有,當你選擇 30 次並且跑完了之後,還是覺得不滿意,你可以上調次數並選擇從上次的模型訓練繼續,就可以接續上次的訓練囉!

Colabs 訓練步驟 11

在訓練時可以即時預覽訓練進度,查看 TensorBoard 的 AUDIO 會看到 gen 和 gt,gt 是你訓練資料中的其中一段,而 gen 是透過模型生成的語音。

你可以比較兩者來考慮說現在這個模型符不符合你的要求,如果覺得滿意的話就可以手動暫停訓練並接續下個步驟。

Colabs 訓練步驟 12

訓練完成!開始生成語音

當你訓練完模型後,接著就是把他下載下來,這裡路徑建議可以調整成最一開始有新增的資料夾,才不會跟訓練資料混在一起,好了之後點擊運行,接著回到雲端硬碟。

Colabs 訓練步驟 13

這時候基本上就會看到多出了三個檔案,但有時候點擊完不會當下跑出來,如果還是沒有的話就再點一次!

Colabs 訓練步驟 14

接著我們要下載 Inference.rar 來使用剛剛訓練好的魔形,點擊下方按鈕後看到 .rar 接著下載,下載完解壓縮後如下。

接著把在雲端拿到的檔案 finetune_speaker.json 與 G_latest.pth 丟到這個資料夾中,再啟動 inference.exe,讓他跑一下就可以了。

Colabs 訓練步驟 15

開啟成功後會看到介面如下,Character 就是角色名稱,另外 Language 如果是選擇 CJE 會有四個選擇,有一個是 Mix,也就是 Text 中包含了兩種或以上的語言。

但我覺得訓練資料不足的情況下訓練出來的語音,選擇 Mix 的效果不是很好,但總之都到這步驟,你就可以盡量嘗試玩看看囉!

輸入完文字後點擊生成就會有相對應的音檔出現,如果要下載音檔就點擊旁邊的三個點,選擇下載即可!

Colabs 訓練步驟 17 生成語音

另外他還有一個功能是讓你把原有的音檔置換成特定聲音,像是歌曲或 Podcast 等,我覺得都可以玩看看,但如果是想用來玩這項的話,選擇 So-VITS 效果會更好!

Colabs 訓練步驟 18 替換聲音

我自己是嘗試了文字轉語音,而我的訓練資料總長才大概三分多鐘,其實是遠遠不夠的,但產生出來的語音模型也是勉強聽得出來聲音像但發音會蠻奇怪的。

唸出來的字是正確的,但音準還是有落差,不過我也看過其他人實測,如果有優質的訓練資料與總長達 100 分鐘或更高,其實訓練出來的結果以 Podcast 來說算是可以用的!

那麼這篇教學就到這裡,如果有什麼問題都歡迎到科技宅阿高的 Discord 群組討論~如果對於 Podcast 的上架流程有興趣也可以到群組交流!

科技宅阿高


平時就常關注手機、電腦與科技相關事物,在撰寫文章時找到樂趣,所以就創立了部落格來分享我對新科技的看法,同時也想讓大眾更能了解生活中的科技!

留言區

此電子郵件地址不會公開,僅作通知回覆用,*為必填欄位。

{"email":"信箱錯誤,Email address invalid!","url":"網站網址錯誤,Website address invalid!","required":"必填資訊未填,Required field missing!"}