首個可保留情感的音訊LLM Meta重磅開源7B-Spirit LM
Meta最近開源了一個7B尺寸的Spirit LM的多模態語言模型,能夠理解和生成語音及文本,可以非常自然地在兩種模式間轉換,不僅能處理基本的語音轉文本和文本轉語音任務,也能捕捉和再現語音中的情感和風格。
在純文字大模型取得進展的同時,其他模態數據,如語音與文字結合的語言模型(SpeechLMs)也成為了一個熱門的研究領域,但現有的模型要么在僅包含語音的數據上進行訓練,要嘛是專注於特定任務,如文字轉語音(TTS)、自動語音辨識(ASR)或翻譯,在其他模態資料和任務上的泛化能力十分有限。
在大型语言模型(LLM)性能不断提升的情况下,一个常用的方法是先用ASR模型将语音转录成文本,然后用文本模型来生成新的文本,最后再用TTS模型将文本转换成语音,这种流程的一个显著缺陷就是语音表达性不佳,语言模型无法建模并生成富有表现力的语音数据。
最近,Meta開源了一個基礎多模態語言模型Spirit LM,基於一個70億參數的預訓練文本語言模型,交錯使用文本和語音數據進行訓練,使模型能夠自由地混合文本和語音,在任一模態中生成語言內容。
專案首頁: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)的語音-文本平行語料庫,採用逐詞交錯的方法進行訓練。
Spirit LM有兩個版本:基礎版(Base)使用語音音素單元(HuBERT),表達版(Expressive)還額外使用音高和風格單元來模擬表達性,以增強模型在生成語音時的表現力,也就是說模型不僅能夠理解和產生基本的語音和文本,還能在表達情感和風格方面表現得更豐富和自然。
對於兩個版本的模型,文本都使用子詞BPE標記進行編碼,最終得到的模型既展現了文本模型的語義能力,也具備語音模型的表達能力;模型還能夠在少量樣本的情況下跨模態學習新任務(例如自動語音辨識、文字轉語音、語音分類)。
不過要注意的是,和其他預訓練模型一樣,Sprit LM也可能會產生一些不安全的內容,所有基於此技術的應用都需要額外的安全測試和調整。
精神LM
模型的架構比較簡單,訓練過程就是基本的「預測下一個字」,不過「字」是透過編碼器從語音或文字中提取的,然後透過解碼器以原來的模態重新呈現;訓練資料包括三種:僅包含文字的序列、僅包含語音的序列以及交錯的語音-文字序列的混合資料。
基礎版
語音編碼器
使用的HuBERT模型,該模型在多個資料集的混合上進行訓練,包括多語言的LibriSpeech、Vox Populi、Common Voice、Spotify以及Fisher,最後得到一個包含501個音素語音token的詞彙表。
語音和文字分詞器
使用LLaMA預設的分詞器來處理文本,使用前述的HuBERT分詞器來處理語音;為了提高模型的質量,對HuBERT的token進行了去重處理;對於單模態數據集(僅文本和僅語音),在分詞後的資料前加上對應的模態標記。
文字資料:[TEXT]這是一個文字句子
音訊資料:[SPEECH][Hu262][Hu208][Hu499][Hu105]
交錯語音和文字(Interleaving Speech and Text)
對於對齊的語音+文字資料集,透過在單字層級交錯語音和文字來混合:[TEXT]the cat [SPEECH][Hu3][Hu7]..[Hu200][TEXT]the mat
研究人員認為,交錯訓練可以幫助模型學習語音和文字之間的對應關係,從而實現更好的文字到語音的轉換;在每個訓練步驟中,句子中的語音和文字部分是隨機採樣的。
語音解碼器
在從語音token進行語音合成方面,研究人員在Expresso資料集上訓練了一個HifiGAN聲碼器,其依賴HuBERT語音token和Expresso特定說話者的嵌入向量。
在訓練期間,HifiGAN模型會輸入重複的token,但同時也會訓練一個時長預測模組,可以更準確地知道每個語音token在實際語音中應該持續多久,最終產生一個語音波形。
表達版
HuBERT能夠從語音中捕獲良好的音素訊息,但在表達性方面表現不佳。
研究人員的目標是在不依賴生物特徵識別的情況下,模型仍然能夠理解和保留輸入語音中的情感,所以需要用額外的音高token和風格token來補充HuBERT的音素語音token,並將其包含在語言模型訓練中,以便訓練後的Spirit LM Expressive模型能夠捕捉並產生更具表現力的語音。
pitch(音高) token
在語音合成和處理中,音高是一個關鍵因素,決定了聲音的高低,對人類理解語句的情緒和語氣來說非常關鍵。音高token可以用來捕捉音高變化。當我們說話時,聲音的高低起伏不僅可以表達不同的情感,例如興奮時聲音高亢,悲傷時聲音低沉,還可以幫助我們在口語交流中區分不同的詞語和句子的意圖。
研究人員在Expresso資料集上訓練了一個VQ-VAE模型,碼本大小為64,下取樣率為128,即每秒可產生12.5個音高token;在訓練音高量化器時,使用pyaapt8提取基頻(F0);使用FCPE9,一個基於Transformer的快速音高估計器,來提高推理速度。
style(風格) token
研究人員提取了語音風格特徵來捕捉輸入語音的表達風,在輸入片段上進行平均池化處理,每秒生成一個特徵,然後在Expresso資料集上微調特徵來預測表達風格,從而進一步從語音風格特徵中去除說話者訊息,最後在Expresso資料集的規範化特徵上訓練了一個有100個單元的k均值聚類。
表達性語音分詞器(Expressive Speech Tokenization)
將三種類型的標記(每秒25次的HuBERT標記、每秒12.5次的音高標記和每秒1次的風格標記)依照對應的時間戳進行排序,混合成一個單一的token序列。
與Spirit LM基礎版相同,表達版同樣對HuBERT的token和音高token進行去重,最後輸入序列類似於:[SPEECH][St10][Pi0][Hu28][Hu22][Pi14][Hu15][Pi32 ][Hu78][Hu234][Hu468]
表達性語音解碼器(Expressive Speech Decoder)
研究人員訓練了一個HifiGAN模型,依賴HuBERT token、音高token、風格token以及來自Expresso聲音的1-hot說話者嵌入向量。同時也訓練了一個時長預測器來預測HuBERT token持續時間。在推理過程中,將每個HuBERT token與相應的音高token和風格標記token,並根據需要重複。
實驗結果
Spirit LM能夠在接收語音token或文字token的提示時,產生語意和表達上一致的內容,將透過定量評估一系列需要產生文字或語音token的基準測試,特別評估Spirit LM在單模態和跨模態場景中的語意能力。
自動語音辨識(ASR)和文字轉語音(TTS)
與文字語言模型類似,SPIRIT語言智能體可以透過少量樣本提示來執行特定任務。
可以看到,Spirit LM使用10個樣本的提示能夠獲得最佳性能,最佳模型在Librispeech清潔數據上的詞錯誤率為21.9,文本轉語音的字符錯誤率為45.5
在訓練中加入平行的ASR和TTS樣本可以大大提高效能,但加入ASR和TTS資料對其他任務的影響非常有限。
在執行語音意圖分類(IC)任務時可以發現,隨著樣本數的增加,準確率也提高了,模型準確率達到了79%
跨模態對齊
為了更好地理解模型在僅在交錯資料和原始語音和文字上訓練的情況下,如何實現良好的跨模態表現的隱藏機制,研究人員查看了模型特徵的token級相似性,其中特徵來自於HuBERT token的輸入序列和相應的BPE token,計算了從不同層提取的語音和文字特徵的相同單字的最大相似性。
結果發現,模型內部口語和書面序列之間的相似性從第2層和第20層開始增加,並且在早期到中間層中,在用單字級轉錄訓練的模型中效果較差,表明模態混合可以對齊語音和文本,使模型能夠將語音序列與相應的文本序列映射起來。
表達性建模
當不給智能體任何先前的樣本,直接根據語音或文字提示生成內容(零樣本)時,可以發現帶有額外音高和風格token的表達版模型在大多數情況下都比基礎版模型的表現更好,只是在文本內容生成(文本到文本)方面兩者表現差不多。
當給模型少量樣本來學習時,可以發現這種方法對於除了語音內容生成(語音到語音)之外的所有情況都有幫助。無論是零樣本或少量樣本,保持情緒的連續性在相同類型的資料(例如文字到文字或語音到語音)中比在不同類型的資料(例如語音到文字)中做得更好;在所有測試中,語音到文字的方向得分最低。
此外,研究人員還直接評估了模型對輸入提示的處理能力,結果發現,無論是哪種提示,模型都能得到很高的評分,表明還有很大的空間來進一步提高模型在保持情感表達方面的能力,也意味著,智能體在理解和生成情感豐富的內容方面還有很大的潛力可以挖掘。
參考資料: