首個可保留情感的音頻LLM!Meta重磅開源7B-Spirit LM,一網(wǎng)打盡「音頻+文本」多模態(tài)任務(wù)
在純文本大模型取得進展的同時,其他模態(tài)數(shù)據(jù),如語音與文本結(jié)合的語言模型(SpeechLMs)也成為了一個熱門的研究領(lǐng)域,但現(xiàn)有的模型要么在僅包含語音的數(shù)據(jù)上進行訓(xùn)練,要么是關(guān)注特定任務(wù),如文本轉(zhuǎn)語音(TTS)、自動語音識別(ASR)或翻譯,在其他模態(tài)數(shù)據(jù)和任務(wù)上的泛化能力十分有限。
在大型語言模型(LLM)性能不斷提升的情況下,一個常用的方法是先用ASR模型將語音轉(zhuǎn)錄成文本,然后用文本模型來生成新的文本,最后再用TTS模型將文本轉(zhuǎn)換成語音,這種流程的一個顯著缺陷就是語音表達性不佳,語言模型無法建模并生成富有表現(xiàn)力的語音數(shù)據(jù)。
最近,Meta開源了一個基礎(chǔ)多模態(tài)語言模型Spirit LM,基于一個70億參數(shù)的預(yù)訓(xùn)練文本語言模型,交錯使用文本和語音數(shù)據(jù)進行訓(xùn)練,使模型能夠自由地混合文本和語音,在任一模態(tài)中生成語言內(nèi)容。
項目主頁:https://speechbot.github.io/spiritlm/
論文鏈接:https://arxiv.org/pdf/2402.05755
代碼鏈接:https://github.com/facebookresearch/spiritlm
開源鏈接:https://huggingface.co/spirit-lm/Meta-spirit-lm
將語音和文本序列拼接成一條token流,并使用一個小型的、自動整理(automatically-curated)的語音-文本平行語料庫,采用逐詞交錯的方法進行訓(xùn)練。
Spirit LM有兩個版本:基礎(chǔ)版(Base)使用語音音素單元(HuBERT),表達版(Expressive)還額外使用音高和風(fēng)格單元來模擬表達性,以增強模型在生成語音時的表現(xiàn)力,也就是說模型不僅能夠理解和生成基本的語音和文本,還能在表達情感和風(fēng)格方面表現(xiàn)得更加豐富和自然。
對于兩個版本的模型,文本都使用子詞BPE標(biāo)記進行編碼,最終得到的模型既展現(xiàn)了文本模型的語義能力,也具備語音模型的表達能力;模型還能夠在少量樣本的情況下跨模態(tài)學(xué)習(xí)新任務(wù)(例如自動語音識別、文本轉(zhuǎn)語音、語音分類)。
不過需要注意的是,和其他預(yù)訓(xùn)練模型一樣,Sprit LM也可能會生成一些不安全的內(nèi)容,所有基于該技術(shù)的應(yīng)用都需要進行額外的安全測試和調(diào)整。
Spirit LM
模型的架構(gòu)比較簡單,訓(xùn)練過程就是基本的「預(yù)測下一個詞」,不過「詞」是通過編碼器從語音或文本中提取的,然后通過解碼器以原來的模態(tài)進行重新呈現(xiàn);訓(xùn)練數(shù)據(jù)包括三種:僅包含文本的序列、僅包含語音的序列以及交錯的語音-文本序列的混合數(shù)據(jù)。
基礎(chǔ)版
語音編碼器
使用的HuBERT模型,該模型在多個數(shù)據(jù)集的混合上進行訓(xùn)練,包括多語言的LibriSpeech、Vox Populi、Common Voice、Spotify以及Fisher,最后得到一個包含501個音素語音token的詞匯表。
語音和文本分詞器
使用LLaMA默認的分詞器來處理文本,使用前述的HuBERT分詞器來處理語音;為了提高模型的質(zhì)量,對HuBERT的token進行了去重處理;對于單模態(tài)數(shù)據(jù)集(僅文本和僅語音),在分詞后的數(shù)據(jù)前加上相應(yīng)的模態(tài)標(biāo)記。
文本數(shù)據(jù):[TEXT]這是一個文本句子
音頻數(shù)據(jù):[SPEECH][Hu262][Hu208][Hu499][Hu105]
交錯語音和文本(Interleaving Speech and Text)
對于對齊的語音+文本數(shù)據(jù)集,通過在單詞級別交錯語音和文本來混合:[TEXT]the cat [SPEECH][Hu3][Hu7]..[Hu200][TEXT]the mat
研究人員認為,交錯訓(xùn)練可以幫助模型學(xué)習(xí)語音和文本之間的對應(yīng)關(guān)系,從而實現(xiàn)更好的文本到語音的轉(zhuǎn)換;在每個訓(xùn)練步驟中,句子中的語音和文本部分是隨機采樣的。
語音解碼器
在從語音token進行語音合成方面,研究人員在Expresso數(shù)據(jù)集上訓(xùn)練了一個HifiGAN聲碼器,其依賴于HuBERT語音token和Expresso特定說話人的嵌入向量。
在訓(xùn)練期間,HifiGAN模型會輸入重復(fù)的token,但同時也會訓(xùn)練一個時長預(yù)測模塊,可以更準(zhǔn)確地知道每個語音token在實際語音中應(yīng)該持續(xù)多久,最終生成一個語音波形。
表達版
HuBERT能夠從語音中捕獲良好的音素信息,但在表達性方面表現(xiàn)不佳。
研究人員的目標(biāo)是在不依賴生物特征識別的情況下,模型依然能夠理解和保留輸入語音中的情感,所以需要用額外的音高token和風(fēng)格token來補充HuBERT的音素語音token,并將其包含在語言模型訓(xùn)練中,以便訓(xùn)練后的Spirit LM Expressive模型能夠捕獲并生成更具表現(xiàn)力的語音。
pitch(音高) token
在語音合成和處理中,音高是一個關(guān)鍵因素,決定了聲音的高低,對人類理解語句的情感和語氣來說非常關(guān)鍵。音高token可以用來捕捉音高變化。當(dāng)我們說話時,聲音的高低起伏不僅可以表達不同的情感,比如興奮時聲音高亢,悲傷時聲音低沉,還可以幫助我們在口語交流中區(qū)分不同的詞語和句子的意圖。
研究人員在Expresso數(shù)據(jù)集上訓(xùn)練了一個VQ-VAE模型,碼本大小為64,下采樣率為128,即每秒可以產(chǎn)生12.5個音高token;在訓(xùn)練音高量化器時,使用pyaapt8提取基頻(F0);使用FCPE9,一個基于Transformer的快速音高估計器,來提高推理速度。
style(風(fēng)格) token
研究人員提取了語音風(fēng)格特征來捕捉輸入語音的表達風(fēng),在輸入片段上進行平均池化處理,每秒生成一個特征,然后在Expresso數(shù)據(jù)集上微調(diào)特征來預(yù)測表達風(fēng)格,從而進一步從語音風(fēng)格特征中去除說話人信息,最后在Expresso數(shù)據(jù)集的規(guī)范化特征上訓(xùn)練了一個有100個單元的k均值聚類。
表達性語音分詞器(Expressive Speech Tokenization)
將三種類型的標(biāo)記(每秒25次的HuBERT標(biāo)記、每秒12.5次的音高標(biāo)記和每秒1次的風(fēng)格標(biāo)記)按照對應(yīng)的時間戳進行排序,混合成一個單一的token序列。
與Spirit LM基礎(chǔ)版相同,表達版同樣對HuBERT的token和音高token進行去重,最后輸入序列類似于:[SPEECH][St10][Pi0][Hu28][Hu22][Pi14][Hu15][Pi32][Hu78][Hu234][Hu468]
表達性語音解碼器(Expressive Speech Decoder)
研究人員訓(xùn)練了一個HifiGAN模型,依賴于HuBERT token、音高token、風(fēng)格token以及來自Expresso聲音的1-hot說話人嵌入向量。同時還訓(xùn)練了一個時長預(yù)測器來預(yù)測HuBERT token持續(xù)時間。在推理過程中,將每個HuBERT token與相應(yīng)的音高token和風(fēng)格標(biāo)記token,并根據(jù)需要進行重復(fù)。
實驗結(jié)果
Spirit LM能夠在接收語音token或文本token的提示時,生成語義和表達上一致的內(nèi)容,將通過定量評估一系列需要生成文本或語音token的基準(zhǔn)測試,特別評估Spirit LM在單模態(tài)和跨模態(tài)場景中的語義能力。
自動語音識別(ASR)和文本轉(zhuǎn)語音(TTS)
與文本語言模型類似,SPIRIT語言智能體可以通過少量樣本提示來執(zhí)行特定任務(wù)。
可以看到,Spirit LM使用10個樣本的提示能夠獲得最佳性能,最佳模型在Librispeech清潔數(shù)據(jù)上的詞錯誤率為21.9,文本轉(zhuǎn)語音的字符錯誤率為45.5
在訓(xùn)練中加入平行的ASR和TTS樣本可以極大提高性能,但加入ASR和TTS數(shù)據(jù)對其他任務(wù)的影響非常有限。
在執(zhí)行語音意圖分類(IC)任務(wù)時可以發(fā)現(xiàn),隨著樣本數(shù)量的增加,準(zhǔn)確率也提高了,模型準(zhǔn)確率達到了79%
跨模態(tài)對齊
為了更好地理解模型在僅在交錯數(shù)據(jù)和原始語音和文本上訓(xùn)練的情況下,如何實現(xiàn)良好的跨模態(tài)性能的隱藏機制,研究人員查看了模型特征的token級相似性,其中特征來自于HuBERT token的輸入序列和相應(yīng)的BPE token,計算了從不同層提取的語音和文本特征的相同單詞的最大相似性。
結(jié)果發(fā)現(xiàn),模型內(nèi)部口語和書面序列之間的相似性從第2層和第20層開始增加,并且在早期到中間層中,在用單詞級轉(zhuǎn)錄訓(xùn)練的模型中效果較差,表明模態(tài)混合可以對齊語音和文本,使模型能夠?qū)⒄Z音序列與相應(yīng)的文本序列映射起來。
表達性建模
當(dāng)不給智能體任何先前的樣本,直接根據(jù)語音或文本提示生成內(nèi)容(零樣本)時,可以發(fā)現(xiàn)帶有額外音高和風(fēng)格token的表達版模型在大多數(shù)情況下都比基礎(chǔ)版模型的表現(xiàn)更好,只是在文本內(nèi)容生成(文本到文本)方面兩者表現(xiàn)差不多。
當(dāng)給模型少量樣本來學(xué)習(xí)時,可以發(fā)現(xiàn)這種方法對于除了語音內(nèi)容生成(語音到語音)之外的所有情況都有幫助。無論是零樣本還是少量樣本,保持情感的連續(xù)性在相同類型的數(shù)據(jù)(比如文本到文本或語音到語音)中比在不同類型的數(shù)據(jù)(比如語音到文本)中做得更好;在所有測試中,語音到文本的方向得分最低。
此外,研究人員還直接評估了模型對輸入提示的處理能力,結(jié)果發(fā)現(xiàn),無論是哪種提示,模型都能得到很高的評分,表明還有很大的空間來進一步提高模型在保持情感表達方面的能力,也意味著,智能體在理解和生成情感豐富的內(nèi)容方面還有很大的潛力可以挖掘。