字節打造大模型TTS:不僅能高保真合成,而且支持調整編輯

首先來聽一段《凡人修仙傳》:

試聽鏈接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw

你猜的沒錯,這段有聲書並非來自某個專業製作團隊,而是一個 AI 模型 Seed-TTS,而這個模型則是來自字節跳動的 Seed Team。

TTS 是指文本轉語音,這是一種具備諸多妙用的技術,像是讓個人智能助理說話、爲視頻或遊戲配音、輔助視障人士、製作有聲書等等。對於 TTS 技術研發者來說,流暢自然的表達一直以來都是值得追求的重要目標。

字節跳動 Seed Team 發佈的 Seed-TTS 不只是一個模型,而是一整個模型系列。

論文標題:Seed-TTS: A Family of High-Quality Versatile Speech Generation Models

論文地址:https://arxiv.org/pdf/2406.02430

演示網站:https://bytedancespeech.github.io/seedtts_tech_report/

據介紹,該系列模型有能力合成自然度和表現力達到人類水平的語音。不僅如此,Seed-TTS 還能以零樣本方式基於一段較短的錄入語音片段生成可控的、高保真度的合成語音。

該團隊在三個任務上評估了 Seed-TTS:零樣本語音上下文學習、說話人微調、情緒控制。爲了方便未來的基準測試,他們還發布了測試數據集的配置,並討論了該模型在產品部署方面的行爲。

此外,該團隊還提出了兩種可大幅提升模型性能的新型擴展技術:通過自蒸餾實現語音分解以及通過強化學習實現偏好偏向。

然後,他們還比較了兩類主要的語音生成技術的優劣:基於語言模型的方法和基於擴散的方法。爲此,他們爲 Seed-TTS 開發了一種非自迴歸式的變體 Seed-TTS_DiT,這是一種完全基於擴展的語音生成模型,能以端到端的方式直接預測輸出語音的隱含表徵。

方法

Seed-TTS 是一種基於自迴歸 Transformer 的模型,如圖 1 所示。

該系統包含 4 個主要模塊:語音 token 化器、token 語言模型、token 擴散模型和聲學聲碼器。

該團隊還強調,Seed-TTS 的訓練使用了大量數據(比之前最大的 TTS 系統多幾個數量級),因而具備強大的泛化和涌現能力。

首先,語音 token 化器將語音信號轉換成語音 token 序列,然後基於其訓練一個 token 語言模型。該團隊研究了連續和離散的語音 token 化器,結果發現 token 化器的設計對整個系統的性能來說至關重要。這個語言模型的訓練使用了成對的文本和語音 token。在推理期間,該模型則以自迴歸方式生成語音 token。

然後,生成的 token 交由擴散模型處理,以增強其聲學細節。其輸出再經過聲學聲碼器處理,得到最終聲波波形。這個聲學聲碼器是單獨訓練的。

類似於基於文本的語言模型,Seed-TTS 也要經歷三個訓練階段:預訓練、微調和後訓練。

預訓練階段的目標是儘可能多地覆蓋不同的場景和說話人,同時爲一般語音建模確立一個穩健的骨幹。在這一階段,Seed-TTS 使用的訓練數據量和模型規模都超過了之前的語音生成方法幾個數量級。

微調階段包含說話人微調和指令微調。說話人微調的重點是提高所選說話人組的表現,而指令微調旨在提高可控性和交互性。後訓練通過強化學習完成,從而整體提升模型。

該團隊表示,相比於之前的模型,Seed-TTS 有兩大優勢。

由於使用了一個基礎模型來生成語音,因此 Seed-TTS 可以執行多種不同任務,比如語音上下文學習、可控式 TTS、跨語言 TTS、語音轉換、音色生成和說話風格遷移。

實驗

零樣本上下文學習

該團隊爲實驗準備了兩個測試集:客觀集(objective-set)和主觀集(subjective-set)。客觀集的樣本提取自英語(EN)和漢語普通話(ZH)的公共語料庫;這些語料庫曾被用於測量模型在多種客觀基準上的性能表現。

具體來說,客觀集包含 1000 個來自 Common Voice 數據集的樣本和 2000 個來自 DiDiSpeech 數據集的樣本。主觀集則來自他們的內部數據集,用於主觀評估,其中的樣本語音比客觀集豐富得多,包括多種口音、方言、情緒和說話風格。該數據集包含英語和普通話的各 100 個樣本。

評估指標。對於客觀評估,該團隊採用了詞錯率(WER)和說話人相似度(SIM)指標。對於主觀評估,則使用了 CMOS,即比較平均意見分數(Comparative Mean Opinion Scores)。

在實踐中,如果 CMOS 分數絕對值低於 0.1,則認爲相比較的兩個系統差別不大。表 1 給出了在這兩個測試集上的結果。爲便於基準測試,該團隊發佈了客觀集的配置:https://github.com/BytedanceSpeech/seed-tts-eval/tree/main

上下文學習結果。從表 1 中可以看到,Seed-TTS 的 WER 與真人語音相近,並且 SIM 也明顯更高。該結果也許可以這樣解釋:可以觀察到,在使用不同的說話風格和在不同的背景環境中時,即使是同一說話人,真人語音和參考語音依然會有所不同。相較之下,Seed-TTS 可以準確地捕獲參考語音的特性並基於其生成目標語音,進而更一致、更忠實地再現錄入語音片段。下面我們來聽幾個示例:

輸入 prompt:

試聽鏈接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw

合成語音:

試聽鏈接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw

在主觀測試中,Seed-TTS 在英語和普通話上的表現與真人語音接近 ——CMOS 分數分別爲 -0.07 和 -0.08。

此外,該團隊還爲之前一些模型執行了同樣的評估,結果發現它們的 CMOS 結果都低於 -1,這說明這些合成語音和真人語音之間的差異很明顯。該團隊表示,Seed-TTS 的主觀測試結果表明,在使用自然語音 prompt 的零樣本 ICL 設置中,Seed-TTS 是首個能生成與真人語音難以區分的結果的 TTS 系統實例。

對比傳統的說話人微調式 TTS 模型。該團隊將他們的零樣本 ICL 系統與一組傳統的基於 FastSpeech 的說話人微調式 TTS 模型進行了比較。他們收集了 10 個說話人的語音,並將其分爲兩組:普通組(7 個說話人)和困難組(3 個說話人)。

對於每個說話人,每個系統都生成 30 段語音,涵蓋不同的場景、上下文和情緒。然後再由 10 位人類評估者給出偏好情況,之後計算平均偏好率,結果見圖 2。

可以看到,對於普通組,相比於傳統的微調式 TTS 系統,新的零樣本 ICL 系統有 47.9% 的樣本更受偏好。人類評估者表示,Seed-TTS 明顯在自然度和表現力方面更有優勢。但是,對於困難組而言,傳統的微調模型表現更好。該團隊推測,原因是新的零樣本 ICL 系統無法忠實地保持口音和特有的說話人風格,尤其是當 15 秒 prompt 中並不包含說話人代表性的韻律時。因此,如果能使用更長的 prompt 或讓 prompt 更好地覆蓋訓練數據,應當可以緩解這個問題。

語音理解評估。爲了進一步驗證 Seed-TTS 的生成質量,該團隊對生成的語音執行了 ASR。結果見表 2。

可以看到,相比於真人數據,Seed-TTS 生成的數據在 clean 集上表現很好,在 other 集上表現較差。該團隊猜測這是因爲 Seed-TTS 在生成過程中傾向於降低背景噪聲,從而對噪聲的穩健性降低。

可視化真人語音與 ICL 語音的說話人相似度。爲了驗證合成語音中音色的保留情況,該團隊使用 t-SNE 繪製了 25 個說話人的真人語音和合成語音的說話人嵌入,結果見圖 3。

可以看到,來自同一說話人的真人語音與合成語音緊密地聚類在一起,這也佐證了之前的發現:Seed-TTS 的語音生成質量很好,並且與真人語音很相似。

說話人微調

在基礎的 Seed-TTS 預訓練模型上,該團隊又執行了說話人微調(SFT)。

他們使用 WER 和 SIM 客觀指標與 CMOS 主觀指標評估了微調版 Seed-TTS_SFT 和基礎版 Seed-TTS_ICL 生成語音的表現。實驗結果見表 3。

可以看到,微調版模型與基礎版在客觀指標上表現相近,而微調版在主觀指標上有 +0.37 的優勢。這表明,微調版 Seed-TTS_SFT 模型能捕獲目標說話人的更多細微細節,例如細微的韻律變化和句尾的獨特發音模式。

通過指令微調實現可控性。爲了進一步提高說話人微調模型的可控性,該團隊又嘗試了整合額外的指令微調(IFT)。指令微調可讓模型靈活控制生成語音的各個方面,比如表現力、語速、風格、情緒等。

結果見表 4。該團隊發現,即使沒有明確的控制信號,Seed-TTS_SFT 依然在情緒控制方面得到中等準確度。

他們猜想,這是因爲該模型有能力基於所提供的文本內容推斷適當的目標情緒。如果再加上額外的控制信號,準確度能大幅提升。這裡來聽一個示例:

文本:哇!恭喜你中了大樂透,八百萬可真不少呢!有什麼特別的計劃或想法嗎?

生成語音:

試聽鏈接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw

低延遲推理和流式處理

在實際部署應用時,除了準確度等性能指標外,還有其它一些考慮因素,比如延遲、成本等。相比於傳統的 TTS 模型,Seed-TTS 的模型要大得多,這就會給部署帶來額外的阻礙。

爲了解決這些難題,該團隊採用了多種技術來降低推理成本和延遲。具體來說,他們模型部署時三方面的難題。

首先,他們實現了一個因果擴散架構。這能在擴散模塊中實現流式處理,並顯著降低處理延遲和首包延遲。

其次,他們採用了一致性蒸餾技術和一種修改版的流匹配算法,以降低擴散模型的計算成本。

另一方面,他們也研究了降低大模型內存和計算消耗的常用方法,比如分組式查詢注意力、分頁注意力、flash 注意力和模型量化。

這樣三板斧下來,如表 5 所示,經過優化的模型在保證客觀和主觀性能的同時,還顯著降低了延遲、計算和內存消耗。

模型擴展

爲了進一步提升 Seed-TTS 模型的性能並拓寬其應用場景,該團隊還爲其提出了兩項擴展。一是用於提升音色可控性的自蒸餾方法。二是使用強化學習方法來全面提升模型的能力。

通過自蒸餾實現語音分解

語音分解(speech factorization)是指將語音分解爲不同的分立的屬性。如果 TTS 系統具備這樣的功能,就能在合成語音時靈活地組合使用不同說話人的音色、韻律和內容。

該團隊爲此提升了自蒸餾方案。該方法的核心原理是創建受控的語音對 —— 這些語音對的大部分信息都一樣,但有少量特定的目標屬性不同。使用這樣的數據對,再加上一點對模型架構的細微更新,可讓 Seed-TTS 實現高質量的屬性分解。

該團隊在音色屬性方面做了實驗。他們注意到,通過在 Seed-TTS 生成期間向擴散模塊引入說話人擾動,就能合成內容與韻律模式相同但音色不一樣的語音。如圖 4 所示,這一任務也被稱爲零樣本語音轉換(zero-shot voice conversion)。

通過使用原始語音以及修改過音色的語音組成的增強型合成數據對,該團隊對 Seed-TTS 系統的擴散模型進行了重新訓練。

實驗結果見表 6。

可以看到,新提出的自蒸餾方法可通過增強型的音色分解顯著提升 SIM 指標,同時在所有其它維度上也更優。下面給出了一個示例:

源音頻:

試聽鏈接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw

音色 prompt:

試聽鏈接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw

轉換後的音頻:

試聽鏈接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw

通過強化學習實現偏好偏向

該團隊也探索了使用強化學習方法來提升 Seed-TTS。他們比較了使用外部獎勵模型的強化學習方法(如 PPO 和 REINFORCE)以及不使用外部獎勵模型的方法(如 DPO)。

結果發現這兩種方法都很有效。前者可實現對特定語音屬性的更清晰控制,而後者的優勢是實現起來更簡單。這篇論文主要關注的是前者。

表 7、8、9 報告了客觀和主觀評估結果。

從表 7 和 8 可以看出強化學習所帶來的好處。

從表 9 則可以看到,相比於上面的說話人微調式 Seed-TTS_SFT 模型,Seed-TTS_{RL-SER} 的情緒可控性下降了,但相比於 Seed-TTS_ICL,使用強化學習能大幅提升在各種情緒上的情感控制準確度。下面是一組示例:

prompt:

試聽鏈接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw

喜:

試聽鏈接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw

怒:

試聽鏈接:https://mp.weixin.qq.com/s/BZFtJJA5UMmHygO2trvoaw

哀:https://bytedancespeech.github.io/seedtts_tech_report/audios/RL_ICL_samples/-5282986181050362834.wav

驚:https://bytedancespeech.github.io/seedtts_tech_report/audios/RL_ICL_samples/-7183650758233635696.wav

完全基於擴散的語音生成

爲了進一步理解語言建模和擴散模型這兩種建模方法的特性,該團隊提出了一種完全基於擴散的 Seed-TTS 模型變體,記爲 Seed-TTS_DiT。在這種變體中,移除了擴散模型和聲學 token 化器之間的依賴關係,這樣一來擴散模型就需要直接基於輸入文本將高斯噪聲轉換成聲碼器的隱含表徵。

對於這種修改版的 Seed-TTS_DiT 設計,他們在擴散模型中直接採用了端到端的處理方式。該模型不會估計音素層面的持續時間,而是事先估計生成語音的總持續時間。然後優化該模型,以估計音頻和文本之間的局部對齊。通過這種方式,Seed-TTS_DiT 可以動態調整每個音素的持續時間,從而得到高度自然的語音。

結果發現,只要得到適當訓練,Seed-TTS_DiT 就能預測輸入語音的合適總持續時間。但是,該團隊並未選擇以這種方式訓練,而是選擇直接爲模型提供總持續時間,這能實現一些可用於內容編輯和語速編輯的額外性質。爲此,在訓練時,向模型提供音頻 prompt、目標文本和一段有總持續時間的高斯噪聲片段,然後預測有同樣總持續時間的生成語音的隱含表徵,之後再由聲碼器將該表徵轉換成波形。

相比於採樣下一 token 語言建模的方法,這種純粹的擴散模型的工作流程更簡單。Seed-TTS_DiT 是一種非流式模型,很自然支持內容編輯應用,如圖 5 所示。話雖如此,語言建模方法也有自己的優勢:流式處理以及能夠整合基於文本的語言模型。

該團隊使用之前的測試集評估了 Seed-TTS_DiT 的零樣本 TTS 能力,評估結果見表 10。

可以看到,相比於 Seed-TTS_ICL,完全基於擴散的方法在 SIM 上性能更優,而在 WER 指標上的表現也相差不大。

內容編輯和語速編輯。該團隊進一步評估了 Seed-TTS_ICL 在兩個語音編輯任務上的能力:內容編輯和語速編輯。

圖 6 和 7 給出了評估結果。

可以明顯看出,在內容編輯時,Seed-TTS_DiT 在不同的掩蔽率下表現很穩健。而 Seed-TTS_DiT 也確實能在不同語速下合成高說話人相似度的語音,但當語速過快時,WER 指標會變差一些。

最後展示一個內容編輯的示例:

源文本:對,這就是我,萬人敬仰的太乙真人,雖然有點嬰兒肥,但也掩不住我逼人的帥氣。

目標文本:對,這就是我,衆人尊崇的太白金星,雖然有點娃娃臉,但也遮不住我迷人的魅力。

源語音:https://bytedancespeech.github.io/seedtts_tech_report/audios/DITEdit_samples/source/-40165564411515767.wav

編輯後的語音:https://bytedancespeech.github.io/seedtts_tech_report/audios/DITEdit_samples/generated/5710927739229863116.wav