更多

    真人語調+多語言+AI 唱歌?自建 Bark 人工智能文字轉語音平台

    Mickey Chan
    Mickey Chan
    愛騎單車的宅,眼鏡娘控。座右銘: 1.膽固醇跟美味是成正比的; 2.所有人都可以騙,但絕對不能騙自己; 3.賣掉的貨才是錢,不賣的收藏品不值一文; 4.踩單車,是為了吃更多美食! 5.正義的話語,不一定出自正義之人的口;

    AI 生成文章、程式和圖片之後,下一個生成式 AI 的對象就回到文字轉語音(TTS)了。雖然坊間已經有不少合成語音軟件和服務,不過不是很機械化(例如這個網頁),就是需要收費。最近一個名為《🐶 Bark 》的人工智能模型推出,不單有具個性的語調,甚至可以叫 AI 唱歌(當然不要期望太高 😁)。以下會教大家在自己的電腦安裝 Bark,還會介紹突破 15 秒限制和提升音色的方法。

    官方的例子之一,可以生成這種猶疑的語調就是 Bark 的特色。

    🐶 Bark 是由 Suno 團隊開發,基於 GPT 類模型(基於轉換器的生成式預訓練模型)來產生語音,與其他「照稿讀」的語音生成不同的是它含有創意成分,能夠生成像真人語氣、混合多語言朗讀,還包括音樂、背景雜音、和簡單的音響效果,亦可以在語音中夾雜笑聲、嘆氣和哭泣等表達。

    Bark 在混合多國語言方面特別出色,現時支援 13 種語言,包括英語、德語、西班牙語、法語、印地語、意大利語、日語、韓語、波蘭語、葡萄牙語、俄語、土耳其語和普通話,將來還會支援阿拉伯語、孟加拉語和泰盧固語。可惜的是 Bark 未支援廣東話。

    本來 Bark 也有拷貝語音功能,不過由於擔心 AI 被用作詐騙,所以 Suno 方面限制了只可以用官方提供的低音質語音。

    想試試 Bark 的語音生成效果,最直接可以到 Hugging Face SpacesGoogle CoLab 試用。不過生成得最快最穩定,最好就是在自己的電腦上安裝 Bark,只要有一張有 4GB VRAM 的 NVIDIA 顯示卡就能順暢運作。

    入門篇:一鍵安裝 WebUI

    要在自己的電腦安裝《Bark》,最簡單的做法是安裝 Fictiverse 的《Bark Web UI》 ,進入 Bark Web UI 的 Github Release 頁面後點擊最新版本的「► Assets」打開可供下載的檔案,下載當中的「Bark_WebUI.7z」檔。

    《Bark Web UI》一鍵安裝程式下載頁面:按此

    進入 Bark Web UI 的 Github Release 頁面後點擊最新版本的「► Assets」打開可供下載的檔案,下載當中的「Bark_WebUI.7z」檔。
    1. 在電腦開設一個新的文件夾把「Bark_WebUI.7z」放進去,以 7-Zip 解壓檔案後進入解壓出來的「Bark_WebUI」文件夾,執行當中的 run.bat 即會開始安裝。
    1. 在電腦開設一個新的文件夾把 Bark_WebUI.7z 放進去,以 7-Zip 解壓檔案後進入解壓出來的 Bark_WebUI 文件夾,執行當中的 run.bat 即會開始安裝。
    1. 安裝完成 Miniconda 虛擬執行環境之後,就會問大家有沒有 NVIDIA 顯示卡,有就回答 y,然後就會安裝負責人工智能運算的 Pytorch 和相關套件。
    2. 安裝完成 Miniconda 虛擬執行環境之後,就會問大家有沒有 NVIDIA 顯示卡,有就回答 y,然後就會安裝負責人工智能運算的 Pytorch 和相關套件。
    1. 完成之後,只要再次執行 run.bat,在命令列視窗中按著 Ctrl 來點擊內網網址 http://127.0.0.1:7860,就可以開故 Bark Web UI。
    3. 完成之後,只要再次執行 run.bat,在命令列視窗中按著 Ctrl 來點擊內網網址 http://127.0.0.1:7860,就可以開故 Bark Web UI。

    使用方法

    要生成語音,只要在prompt裡輸入對白,按 Launch 掣即會開始生成語音檔。首次執行會多花一點時間載入模型。完成後即會在 Result 區域見到音頻播放器。

    由於每次生成時,語音內容都會以 audio.wav 為檔名儲存在 Bark_WebUI 文件夾裡,所以如果想保存語音檔的話,就記緊要先按播放器右方的「⋮」下載。

    以普通話生成出來的語音結果

    Bark 提供了 13 國語言每語言 10 名虛擬講者,連同預設講者 announcer 共 131 人。雖然他們有各自地區的口音,但全都懂多個語言,輸入英文會說英文,輸入日文就會說日文,混合也沒問題。

    唯一要注意的是中文,Bark 支援的中文是指簡體中文,輸入簡體中文朗讀準確度會提升不少。另外輸入中、日、韓對白時也要注意自行在句子間加入空格,以免程式不懂分割句子。

    至於語氣和唱歌,只要在提示對白的適當地方插入以下 Metatag 即可,包括:

    • [laughter]:大笑
    • [laughs]:笑
    • [sighs]:嘆氣
    • [music]:音樂
    • [gasps]:喘氣
    • [clears throat]:清嗓子
    • - :猶疑
    • 前後夾住歌詞就會唱出(要與歌詞留一個空格)
    • 全大階字:強調語氣
    • MAN/WOMAN:在同一提示句中以兩種聲線對答

    進階篇:Bark Infinity 突破限制

    Bark Web UI 雖然方便,但就限制最長只可生成 15 秒語音,並且無法控制儲存檔名稱、使用較少 VRAM 和控制生成溫度。幸好另一位開發者 JonathanFly 就開發了一個 Bark 的封裝《🚀 Bark Infinity》,雖然它要以文字列輸入,但不單突破了以上限制,還提供 39 位不同目的的額外講者給大家使用。

    事前準備

    安裝 Bark Infinity 之前要預先安裝 3 個程式:gitPython 3.10.x 與及 CUDA Toolkit 11.7 或以上。請先參閱 Stable Diffusion 教學 以了解它們的安裝過程。

    安裝步驟

    1. 建立一個文件夾(本例命名為「Bark_Infinity」);
    1. 進入「Bark_Infinity」文件夾,在路徑列輸入cmd 打開新的命令列視窗;
    1. 輸入 git clone https://github.com/JonathanFly/bark.git 待完成下載;
    輸入 git clone https://github.com/JonathanFly/bark.git 待完成下載;
    1. 輸入 cd bark 進入下載來的文件夾;
    1. 輸入 pip install . 安裝必要模組;
    輸入 pip install . 安裝必要模組;
    1. 輸入 pip install soundfile 安裝語音檔案。
    輸入 pip install soundfile 安裝語音檔案。

    使用方法

    Bark Infinity 的基本語法就是這樣:

    python bark_perform.py --text_prompt "對白" --split_by_words 5 --filename "輸出檔名.wav"

    大家只要在「對白」中輸入自己的內容後執行,即可生成最基本的語音。而「對白」後面的參數,就可以進一行微調(完整參數表請參考這裡):

    • --list_speakers:列出所有可用講者/歌手的代碼。
    • --history_prompt "講者代碼":選用指定講者/歌手。
    • --text_temp 0.7:對白的生成溫度,數值是 0-1 之間的小數,溫度愈高人工智能的「創意」愈大,可能會有意外驚喜(或驚嚇)。預設值是 0.7。
    • --waveform_temp 0.7:波型生成熱度,數值意義與對白溫度相同。
    • --filename "檔名.wav":儲存語音結果的檔案名稱,預設儲存在 Bark_Infinity\bark\bark_samples\ 文件夾裡。
    • output_dir "文件夾路徑":選用其他文件夾來儲存語音結果。
    • --split_by_words 5:為了突破 15 秒限制將對白按指定詞語數分隔成小片段。要注意由於系統是以英語為主,天生以空白分隔詞語,設為 35 較好用;使用中日韓文對白時就要自行在句子之間加空格分割,設定為 5 較合適。
    • --use_smaller_models:使用少點 VRAM,適合較低階顯示卡。

    我們就用 Bark Infinity 生成了一些例子:

    25 秒普通話朗讀:《PCM:自建 Stable Diffusion WebUI 圖像生成平台》引言

    python bark_perform.py --text_prompt "图像生成是近月 AIGC 其中一个热门课题, 很多人都会利用 Discord 或者网上提供的服务, 不过要不是要轮候, 就是要付费, 有时候更会有内容限制, 玩起来不够爽。其实只要您有一部游戏电脑, 要在家中自建图像生成平台不是什么难事!" --split_by_words 5 --history_prompt "zh_speaker_0" --filename "zh_test_20230430_0417.wav"
    留意朗讀到英語的部分語調沒有突變。

    42 秒日語朗讀:【我推的孩子】劇情簡介

    python bark_perform.py --text_prompt "田舎の産婦人科医・ゴローは、 自分に懐いていた患者で、 12歳の若さで亡くなった少女さりなの影響により アイドルオタクになっていた。 そんな彼の元に、 活動休止中の彼の推しアイドル・ 星野アイが双子を妊娠した状態で現れる。 子供を産むこともアイドル活動も諦めないというアイに 改めて魅力を感じ、 全力で応援することにしたゴローは、 彼女の主治医としてつきそう。 だがアイの出産日、 ゴローはアイのストーカーのリョースケによって 殺されてしまう。" --split_by_words 5 --history_prompt "ja_speaker_0" --text_temp 0.3 --filename "ja_test_20230430_0452.wav"
    在 Bark Infinity 協助下,長篇文章也可生成語音,不過日語不知怎的全都有西方人口音。

    英國音朗讀中英混雜內容:《亂世佳人》對白

    python bark_perform.py --text_prompt "土地是 the only thing in the world worth WORKING for, worth FIGHTING for, worth DYING for. 因为它是唯一永恒的东西" --history_prompt "en_british" --filename "en_test_20230430_2126.wav"
    諗普通話的句字仍然留有外國人口音

    K-Pop AI 歌手演譯 YOASOBI《偶像》第一節

    python bark_perform.py --text_prompt "♪ 無敵の笑顔で荒らすメディア、 知りたいその秘密ミステリアス、 抜けてるとこさえ彼女のエリア、 完璧で嘘つきな君は、  天才的なアイドル様 ♪" --split_by_words 3 --history_prompt "kpop_acoustic" --text_temp 1 --waveform_temp 1 --filename "ja_song_test_20230430_1818.wav" 
    由 AI 自己演譯輸入的歌詞始終是相當古怪⋯⋯

    貼士:提升音色搵 Adobe Podcast

    Bark 生成的語音音色較差,也會有一些雜訊,想提升音色,就可以用到 Adobe Podcast Beta 版提供的免費功能「Speech Enhancement」。

    Adobe Podcast Speech Enhancement 網址:按此

    大家只要註冊一個 Adobe ID 登入,然後將生成的語音檔案拖放到網頁的拖放區,不一會就會生成一個增強音色的版本,也可以即時在網頁中試聽比較。

    筆者就以上面 K-Pop 歌手的例子以 Adobe Podcast Speech Enhancement 強化,大家可以聽聽效果是否滿意。

    您會感興趣的內容

    相關文章