Prompt解鎖語音語言模型生成能力,SpeechGen實現語音翻譯、修補多項任務
- 論文鏈接:https://arxiv.org/pdf/2306.02207.pdf
- Demo 頁面:https://ga642381.github.io/SpeechPrompt/speechgen.html
- Code: https://github.com/ga642381/SpeechGen
引言與動機
大型語言模型(LLMs)在人工智能生成內容(AIGC)方面引起了相當大的關注,特別是隨著 ChatGPT 的出現。
然而,如何用大型語言模型處理連續語音仍然是一個未解決的挑戰,這一挑戰阻礙了大型語言模型在語音生成方面的應用。因為語音信號包含豐富的信息,如說話者和情感,超越了純文本數據,基于語音的語言模型 (speech language model (speech LM)) 不斷涌現。
雖然與基于文本的語言模型相比,語音語言模型仍處于早期階段,但由于語音數據中蘊含著比文本更豐富的信息,它們具備巨大的潛力,令人充滿期待。
研究人員正積極探索提示 (prompt) 范式的潛力,以發揮預訓練語言模型的能力。這種提示通過微調少量參數,引導預訓練語言模型做特定的下游任務。這種技術因其高效和有效而在 NLP 領域備受青睞。在語音處理領域,SpeechPrompt 展示出了在參數效率方面的顯著改進,并在各種語音分類任務中取得了競爭性的表現。
然而,提示能否幫助語音語言模型完成生成任務仍是未解之謎。在本文中,我們提出一個創新的統一框架:SpeechGen,旨在激發語音語言模型進行生成任務的潛力。如下圖所示,將一段語音、一個特定的提示 (prompt) 喂給 speech LM 作為輸入,speech LM 就能做特定的任務。比如將紅色的 prompt 當作輸入,speech LM 就能做 speech translation 的任務。
我們提出的框架具有以下優點:
1. 無文本 (Textless):我們的框架以及其所依賴的語音語言模型獨立于文字數據,擁有無可估量的價值。畢竟,獲取標記文本與語音配對的過程耗時繁瑣,而且在某些語言中甚至無法找到合適的文本。無需文字的特性使得我們的強大語音生成能力得以覆蓋各種語言需求,讓全人類受益匪淺。
2. 多功能性 (Versatility):我們開發的框架通用性極高,能應用于各種各樣的語音生成任務。論文中實驗使用語音翻譯、語音修復、語音連續當作例子。
3. 簡易性 (Easy to follow):我們提出的框架為各類語音生成任務提供了通用解決方案,讓設計下游模型和損失函數變得輕而易舉。
4. 可遷移性 (Transferability):我們的框架不僅容易適應未來更先進的語音語言模型,還蘊藏著巨大的潛力,讓效率和效果得到進一步提升。尤其令人振奮的是,隨著先進語音語言模型即將問世,我們的框架將迎來更為強大的發展。
5. 經濟性 (Affordability):我們的框架經過精心的設計,只需訓練少量參數,而不是整個龐大的語言模型。這極大地減輕了計算負擔,并允許在 GTX 2080 GPU 上執行訓練過程。大學的實驗室也能負擔得起這樣的運算開銷。
SpeechGen介紹
我們的研究方法在于構建一個全新的框架 SpeechGen,該框架主要利用語音語言模型(Spoken Language Models, SLMs)進行各種下游語音生成任務的微調。在訓練過程中,SLMs 的參數保持不變,我們的方法側重于學習任務特定的提示(Prompt)向量。SLMs 通過同時對提示向量和輸入單元進行條件設置,有效地生成特定語音生成任務所需的輸出。然后,這些離散單元輸出被輸入到基于單元的語音合成器中,生成對應的波形。
我們的 SpeechGen 框架由三個元素組成:語音編碼器、SLM 和語音解碼器(Speech Decoder)。
首先,語音編碼器將波形作為輸入,并將其轉換為由有限詞匯表導出的單位序列。為了縮短序列長度,會移除重復的連續單位以生成壓縮的單位序列。然后,SLM 作為單位序列的語言模型,通過預測前一單位和單位序列的后續單位來優化可能性。我們對 SLM 進行提示調整,以引導其根據任務生成適當的單位。最后,SLM 生成的標記由語音解碼器處理,將其轉換回波形。在我們的提示調整策略中,提示向量會在輸入序列的開始處插入,這將引導 SLMs 在生成過程中的方向。具體插入的提示數量,則取決于 SLMs 的架構。在序列到序列的模型中,編碼器輸入和解碼器輸入都會加入提示,但在只有編碼器或只有解碼器的架構中,只會在輸入序列前面添加一個提示。
在序列到序列的 SLMs(如 mBART)中,我們采用了自我監督學習模型(如 HuBERT)來處理輸入和目標語音。這樣做可以為輸入生成離散單元,并為目標生成對應的離散單元。我們在編碼器和解碼器輸入的前面都添加了提示向量,以構造輸入序列。此外,我們還通過替換注意力機制中的關鍵值對,以進一步增強提示的指導能力。
在模型訓練中,我們以交叉熵損失作為所有生成任務的目標函數,通過比較模型的預測結果和目標離散單元標簽來計算損失。在這個過程中,提示向量是模型中唯一需要訓練的參數,而 SLMs 的參數在訓練過程中保持不變,這確保了模型行為的一致性。我們通過插入提示向量,引導 SLMs 從輸入中提取任務特定信息,并提高產生符合特定語音生成任務的輸出的可能性。這種方法允許我們微調并調整 SLMs 的行為,而無需修改其基礎參數。
總的來說,我們的研究方法基于一種全新的框架 SpeechGen,通過訓練提示向量,引導模型的生成過程,并使其能有效地產生符合特定語音生成任務的輸出。
實驗
我們的框架可以用于任意的 speech LM 及各類生成任務,具有很好的潛力。在我們的實驗中,由于 VALL-E 和 AudioLM 不是開源的,我們選擇使用 Unit mBART 作為 speech LM 進行案例研究。我們用語音翻譯 (speech translation)、語音修復 (speech inpainting)、語音連續 (speech continuation) 當作例子,來展示我們框架的能力。這三個任務的示意圖如下圖所示。所有的任務都是語音輸入,語音輸出,無需文本幫助。
語音翻譯
我們在訓練語音翻譯 (speech translation) 時,用的是西班牙文轉英文的任務。我們給模型輸入西班牙語的語音,希望模型產生英文的語音,整個過程無需文本幫助。以下是幾個語音翻譯的例子,我們會展示正確答案 (ground truth) 與模型的預測 (model prediction)。這些演示示例表明模型的預測捕捉到了正確答案的核心含義。
語音修補
在我們進行語音修補 (speech inpainting) 的實驗中,我們特別選取超過 2.5 秒的音頻片段作為后續處理的目標語音,并通過隨機選擇過程挑選出一段時長介于 0.8 至 1.2 秒的語音片段。然后我們對選出的片段進行掩碼,模擬語音修補任務中缺失或受損的部分。我們使用詞錯誤率 (WER) 和字符錯誤率 (CER) 作為評估受損片段修復程度的指標。
對 SpeechGen 生成的輸出與受損語音進行比較分析,我們的模型可以顯著重建口語詞匯,將 WER 從 41.68% 降低到 28.61%,將 CER 從 25.10% 降低到 10.75%,如下表所示。這意味著我們提出的方法能夠顯著提高語音重建的能力,最終促進語音輸出的準確性和可理解性。
下圖是一個展示樣例,上面的子圖是受損的語音,下面的子圖是 SpeechGen 產生的語音,可以看到,SpeechGen 很好地修復了受損的語音。
語音連續
我們將通過 LJSpeech 展示語音連續任務的實際應用。在訓練提示(prompt)期間,我們的策略是讓模型只看到片段的 seed segment,這個 seed segment 占據了語音總長度的部分比例,我們將其稱為條件比率(condition ratio, r),并讓模型繼續生成后續的語音。
以下是一些實例,黑色的文字代表種子片段(seed segment),紅色的文字則是 SpeechGen 生成的句子(這里的文字首先經過語音識別得到結果。在訓練和推理過程中,模型完全進行的是語音到語音的任務,且完全不接收任何文字信息)。不同的條件比率使 SpeechGen 能夠生成不同長度的語句以實現連貫性,并完成一句完整的話。從質量角度看,生成的句子與種子片段在語法上基本一致,并且語義相關。雖然,生成的語音仍然無法完美地傳達一個完整的意思。我們預期這個問題將在未來更強大的語音模型中得到解決。
不足與未來方向
語音語言模型和語音生成正處于蓬勃發展的階段,而我們的框架則提供了一種巧妙地利用強大語言模型進行語音生成的可能性。然而,這個框架仍有一些尚待完善之處,也有許多值得我們深入研究的問題。
1. 與基于文本的語言模型相比,語音語言模型目前還處于發展的初級階段。雖然我們提出的提示框架能激發語音語言模型做語音生成任務,但并不能達到卓越的性能。不過,隨著語音語言模型的不斷進步,比如從 GSLM 到 Unit mBART 的大轉身,提示的表現有了明顯的提升。特別是以前對 GSLM 具有挑戰性的任務,現在在 Unit mBART 下表現出更好的性能。我們預計未來會出現更多先進的語音語言模型嶄露頭角。
2. 超越內容信息:當前的語音語言模型并不能完全捕捉到說話者和情感信息,這給當前的語音提示框架在有效處理這些信息方面帶來了挑戰。為了克服這個限制,我們引入即插即用模塊,專門為框架注入說話者和情感信息。展望未來,我們預計未來的語音語言模型將整合和利用這些內容之外的信息,以提高性能并更好地處理語音生成任務中的說話者和情感相關方面。
3. 提示生成的可能性:對于提示生成,我們有著靈活多變的選擇,可以集成各種類型的指示,包括文本和圖像指示。想象一下,我們可以訓練一個神經網絡,讓它用圖像或文本作為輸入,而不是像本文中那樣使用訓練好的 embedding 當作提示。這個訓練好的網絡將成為提示生成器,為框架增添了多樣性。這樣的方式會讓提示生成變得更加有趣、更加豐富多彩。
結論
本文我們探索了使用提示來解鎖語音語言模型在各種生成任務中的性能。我們提出了一個名為 SpeechGen 的統一框架,該框架僅有約 10M 的可訓練參數。我們所提出的框架具有幾大特性,包括無需文本、多功能性、高效性、可轉移性和可負擔性。為了展示 SpeechGen 框架的能力,我們以 Unit mBART 為案例進行研究,并在三個不同的語音生成任務上進行實驗:語音翻譯、語音修復和語音延續。
當這篇論文提交到 arXiv 時,Google 提出了一種更先進的語音語言模型 ——SPECTRON,它為我們展示了語音語言模型在建模說話人和情感等信息的可能性。這無疑是一個令人興奮的消息,隨著先進語音語言模型的不斷提出,我們的統一框架具有巨大的潛力。