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

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

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

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

https://file.notion.so/f/s/2c5099b4-dcdf-4fee-b5bf-6b5066f52a0b/bark.wav?id=6e8e3833-fe08-44e3-a22c-76d3075d2627&table=block&spaceId=a334d0e7-d31c-45c2-8365-ebe3f941e04d&expirationTimestamp=1682958507359&signature=Zpj80XWliz-slxbimLe27Pe-xz6BIxFVuN2iq9VPQ1Y
官方的例子之一,可以生成這種猶疑的語調就是 Bark 的特色。

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

雖然坊間也有不少語音生成服務,不過效果生硬就是要付費。

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

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

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

想試一試 Bark 的文字轉語音效果的話,可以一試 Hugging Face Spaces 或 Google CoLab 的測試網頁,不過穩定性和效果都比不上在自己電腦安裝。

入門篇:一鍵安裝 WebUI

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

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

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

使用方法

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

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

Bark Web UI 介面非常簡單,只要輸入對白和選擇講者就可以。不過要注意輪入中文時最好用簡體字,繁體中文有時會諗出古怪的發音。
https://plugmedia-wp-uploads.s3.ap-southeast-1.amazonaws.com/wp-content/uploads/2023/05/bark_zh_01.wav
以普通話生成出來的語音結果

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

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

官方提供了 131 位講者的語音資料。

至於語氣和唱歌,只要在提示對白的適當地方插入以下 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 待完成下載;
  1. 輸入 cd bark 進入下載來的文件夾;
  1. 輸入 pip install . 安裝必要模組;
  1. 輸入 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"
https://plugmedia-wp-uploads.s3.ap-southeast-1.amazonaws.com/wp-content/uploads/2023/05/zh_test_20230430_0438.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"
https://plugmedia-wp-uploads.s3.ap-southeast-1.amazonaws.com/wp-content/uploads/2023/05/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"
https://plugmedia-wp-uploads.s3.ap-southeast-1.amazonaws.com/wp-content/uploads/2023/05/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" 
https://plugmedia-wp-uploads.s3.ap-southeast-1.amazonaws.com/wp-content/uploads/2023/05/ja_song_test_20230430_1745.wav
由 AI 自己演譯輸入的歌詞始終是相當古怪⋯⋯

貼士:提升音色搵 Adobe Podcast

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

Adobe Podcast Speech Enhancement 網址:按此

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

Adobe Podcast 的 Speech Enhancement 提供免費語音強化服務。

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

https://plugmedia-wp-uploads.s3.ap-southeast-1.amazonaws.com/wp-content/uploads/2023/05/ja_song_test_20230430_1745 (enhanced).wav
Exit mobile version