“AI大神”李沐終於開源新模型,爆肝6個月,上線迅速斬獲3.6kstars!

整理 | 褚杏娟
7 月 23 日,“AI 大神”李沐宣佈開源了 Higgs Audio v2,這是一個音訊基礎模型,構建在 Llama-3.2-3B 基礎之上,預訓練資料包括超過 1000 萬小時的音訊以及豐富的文字資料。該模型目前在 Github 上已獲得 3.6k stars。

“去年我們一直關注的是文字語言模型,讓它智商足夠高、能聽從人的指示,一方面可以陪人玩遊戲,另一方面也能幫忙處理一些文案工作,簡單來說就是能讀能寫。今年我們在想,能不能讓模型能聽也能說。”李沐在 B 站釋出的影片中說道。
隨後,他表示,“語音是 AI 中一個相對比較悠久的領域,我其實並不是語音方面的專家。作為一個新手,我的想法很簡單,就是我不要去訓練單獨的語音模型,而是在文字大語言模型訓練時加入大量的語音資料,大力出奇跡,就想讓文字語言模型智商不要下降,但同時掌握了用語音溝通的能力。”
李沐是全球知名 AI 深度學習科學家、深度學習框架 MXNet 作者之一,2008 年畢業於上海交通大學計算機系,曾於微軟亞洲研究院實習。畢業後任香港科技大學研究助理,2011 年加入百度任高階研發;2012 年赴卡耐基梅隆大學攻讀博士,期間在谷歌研究程式碼文件。2017 年獲博士學位後加入亞馬遜擔任 AI 主任科學家,工作 7 年半後離職創立大模型公司 Boson AI。
據悉,在 EmergentTTS-Eval 測評中, Higgs Audio v2 在“情緒(Emotions)”和“提問(Questions)”兩個類別中,相較於 “gpt-4o-mini-tts”,分別達到了 75.7% 和 55.7% 的勝率。同時,它在 Seed-TTS Eval 和情感語音資料集(Emotional Speech Dataset, ESD)等傳統 TTS 基準測試中也取得了業界領先的成績。
此外,該模型還展現出其他能力,包括多語種自然多說話人對話生成、旁白時自動語調適配、克隆聲音的旋律哼唱,以及語音與背景音樂的同步生成等。

李沐在最新的影片中詳細介紹了 Higgs Audio v2 背後的技術以及踩過的一些坑。
文字模型訓練時
加入 1000 萬小時語音資料
李沐開始介紹了 Higgs Audio v2 的架構。但在此之前,他先舉例回顧了文字模型的原理。比如,問模型“中國的首都是?”,語言模型看到這個問題後,會下意識地開始回答,首先想到“北”,然後結合這個問題和“北”,再去預測下一個詞是“京”。
但在實際使用中,通常不會讓語言模型直接做這種文字接龍,因為這樣不夠可控。通常做法是把一個問題分成三個部分:在“system”部分,在這裡告訴語言模型要做什麼事情,比如讓它回答問題,當然也可以讓它做別的,比如閒聊、幫忙寫一段文字等;在“user”部分,要把具體要做的事情告訴模型,比如具體要問的問題或者要寫什麼樣的小說,而“system”就是模型的回覆。還可以做成多輪互動,也就是再接一個“user”後,再接一個“system”。
讓這個模型支援語音的輸入和輸出,就是給這個模型增加一個新任務。比如,給模型的系統命令:“把下面的文字轉錄成語音”,然後在使用者的輸入裡把要轉的文字告訴模型,希望模型能在“system”裡輸出對應的語音資料。
為什麼要把語言模型改造成這個樣子?李沐解釋稱,因為語音識別或者語音生成,都是一個單獨的模型,它要做的事情就是把文字轉語音或者語音轉文字。像 Whisper 雖然也是基於 Transformer,但是它只幹一件事情。
讓一個文字的模型做額外的語音輸出,壞處很明顯:如果想讓一個模型能夠具有很好的語音處理能力,那麼相對於純語音模型來說這個模型會變大。同樣地,一個文字模型加入語音資料很有可能讓它的智商變低。
但是,這樣做的好處也很明顯。比如,下圖顯示了一個簡化的任務版本:
在專業的語音錄音時,導演會給專業的錄音演員介紹錄音的場景(這裡是“小明和小紅在吵架”),同時要說明這個人物的性格是什麼樣子?(這裡是“小明性格比較急躁,小紅比較靦腆一點”)。接下來是真正要錄的一個對話,小明說什麼、小紅說什麼,同時可能一些相應的動作音效都要加進去。那麼,專業的錄音演員不僅僅是要把這句話讀出來,而且是要符合人設、符合場景,這樣才能做到很好的一個表演。
上一代的文字轉語音模型很可能比較難以理解這麼複雜的設定。那麼有了語言模型的加持之後,它很有可能可以理解,因為在文字領域大家一直是給模型特別複雜的設定:“你要幫我幹 a、b、c、d、e、f、g,然後請你幫我幹出來”,所以在模型訓練時候會盡量讓它能夠遵從人的指示。如果保留了文字語言模型的能力,那麼做語音輸出的時候就也能夠支援對複雜指令的理解。
此外,簡單的文字轉語音任務已經不能滿足大家的需求了。我們可能不僅想要生成一段語音,還想寫一首歌並把它唱出來,配樂也要跟上。這是生成方面的應用,在理解方面也可以發揮作用。
比如給到一段聲音,讓模型把裡面人說的話提取出來,這是最簡單的;接下來,還可以讓模型分析裡面在發生什麼事情,比如說話的人是男性還是女性、年紀如何,他們是在吵架、對話還是在進行教學,根據環境音還能猜出是在室內、室外還是其他場景。語音中包含大量訊號,人能夠理解其整個上下文,而有了文字語言模型的加持後,模型也能夠進行這種複雜的理解和推理。
更復雜一點的,我們和模型語音聊天,不希望模型只是機械地一輪一輪迴應,而是能理解人們當前的心情,也能表現自身的情緒,而且希望它的延遲足夠低,不會說一句話後要等一兩秒才回答,而是可以像面對面交流一樣。
李沐表示,所有這些任務都能夠拆解成“system、user、assistant”這樣的格式,使得語言模型能夠統一處理,也就是“一個祖傳的配方能夠處理所有的問題”。團隊希望用一個相對來說固定的簡單的模型,然後透過加更多的資料,加入更多的算力,透過 Scaling Law 大力出奇跡。
模型如何理解和輸出語音訊號?
接下來,回答兩個“怎麼做”的事情:
  • 怎麼讓模型理解和輸出整個語音訊號或者聲音訊號?
  • 在訓練模型的時候,要構造怎麼樣的資料,讓模型真的能夠把語音的訊號和文字的訊號很好地融合起來,然後它能理解這個語音到底在表達什麼?
對於第一個問題,李沐先回顧了文字是怎樣在語言模型裡面表示的。
文字在語言模型中透過 token 或資源這種來表示,簡單理解就是中文單字或英文詞根可視為一個 token,輸入文字被轉化為 token 序列,語言模型的任務是預測序列中的下一個 token。token 是離散概念,它有一個包含了數萬個 token 的詞典,語言模型的輸出是一個 Softmax,本質是一個多分類問題,每次從詞典中選擇一個詞作為輸出。
語音訊號會麻煩一些,它是連續的訊號。怎麼把連續的訊號表示成離散的 token?
一種簡單方法是按固定時長(如 100 毫秒)切分語音片段,並基於聲音在細粒度上重複出現的特性,為每個片段匹配一個預定義的、代表性的聲音模板(即 token)來近似表示。比如,以 45 個語音片段作為模板,當輸入 1 秒的語音引號後,將其切分為 10 個小片段,每個片段用 45 個模板中最匹配的模板編號表示,最終該秒語音轉化為長度為 10 的編號序列。這種表示使語言模型能像處理文字 token 一樣處理語音訊號,無論是輸入還是輸出。
當然,實踐中不會那麼的簡單,因為語音訊號不是那麼容易被表示的。比如,1 小時的訊號用 128 BPS 的 MP3 儲存,大概約 60MB(中等音質),若採用 64,000 個 token 表示,然後一秒鐘的音訊用 24 個 token 表示。那麼用這種方式編碼一段語音時,每個 token 僅需 log₂(64,000)≈16 位元,1 秒語音僅需 384 位元(24×16),1 小時壓縮至 0.16MB,相較於 128kbps MP3 實現了 375 倍的壓縮。
這樣高的壓縮必然嚴重損失資訊,此時關鍵的問題在於:tokenizer 應優先保留聲學訊號(如說話的音調)還是語義訊號(具體說的什麼內容)? 李沐團隊的結論是:語義資訊優先。
聲學訊號只需少量特徵即可保留核心風格,後續可透過其他方法還原。但語義訊號千變萬化,同一聲音在不同場景下表達的內容可能截然不同,因此需儘量保持語義資訊的完整性,確保語義 token 包含足夠豐富的語義資訊,使模型能早期建立語音與文字 token 的強語義關聯,從而流暢實現語音與文字的相互轉換。
將聲音表示成 token 進入模型之後,接下來要關注的是模型怎樣能很好地理解和生成這些聲音。
聲音轉文字或者文字轉聲音,本質上是在做模態間的轉換,所以語言模型能夠將一個內容的語音表示和文字表示做對映。如今文字的大模型已經很強了,現在需要考慮的是將語音的語義儘量映射回文字,以繼承模型在文字領域的強大能力。
可能有人問,如果做即時語音助手,聽上去好像是我說一句、模型回一句,是不是直接在語音的空間做呢?實際上,現在的技術還是會回到文字的語音空間。因為做一個語音助手,那麼人設是什麼、什麼東西該做、什麼不該做,其實是用文字來控制。另外,即時互動的時候很有可能也是在文字空間。比如問“今天天氣怎麼樣?”模型可能是在文字空間搜尋,然後把結果返回來後,再映射回語音訊號。因此,核心在於模型需要打通文字與語音的表示關聯,使模型理解同一概念在不同模態的對應關係。
有了資料後,
怎麼訓練模型?
有了這個目標後,就可以考慮需要什麼樣的資料以及資料怎麼表達。
“我覺得資料反正是越多越好。”李沐表示,團隊未使用 B 站或 YouTube 的資料,不是因為質量不好,而是為了規避版權風險。其做法是要麼採購合規資料,當然價格不能太貴,要麼抓取允許公開獲取的音訊,但後者可能需要刪掉 90% 的資料才能留下一些可用的。例如,為獲取 1,000 萬小時有效資料需抓取近 1 億小時原始素材。
有了資料之後,團隊是怎樣進行模型訓練呢?
舉例來說,拿到一段語音進行模型訓練時,通常會如下表達:系統層面說明這個聲音的聲學特徵是什麼、在聊什麼、有哪些人以及這些人的特點等;接下來,使用者輸入的聊天文字作為輸入,模型則輸出對應的音訊。
在這個任務中,團隊希望模型能根據提供的整個場景描述和需要生成的文字,能夠輸出真實且符合場景的語音。
對於這些標籤是怎麼打出來的問題,李沐的建議是:如果是一名學生做研究,推薦把語音交給 OpenAI 的 GPT 或 Google 的 Jamila 讓他們打標。但李沐坦言其團隊做不了這個事情,背後有兩個原因:第一個原因是對方明令禁止呼叫他們模型的輸出去訓練其他模型;第二個原因是成本太貴了,團隊要處理的資料量遠不止一千萬條,可能上億,這樣的 API 代價承受不來。
李沐團隊的做法是:採用同樣的模型架構,額外訓練一個語音理解模型。大家應該能想象這個語音理解模型的輸入輸出:在做語音生成時,是輸入場景描述和使用者要說的話,然後輸出語音;現在是反過來,輸入一段使用者語音,要求模型分析場景(如有哪些人、這些人什麼樣、在說什麼內容)以及說話時的情緒狀態等,並輸出所有這些資訊。
這相當於把生成模型的輸入輸出對調了:生成模型的輸入(場景描述和說話內容)變成了理解模型的輸出,而生成模型的輸出(語音)變成了理解模型的輸入。
打個比方,要教會徒弟全套拳腳功夫,但一次教不全;於是我先教一個徒弟打拳,再教另一個徒弟踢腿,然後讓他們天天對打,打著打著共同進步,最終兩人都學會完整的拳腳功夫。
最後,迴歸到 Higgs Audio v2,其採用了下面架構圖中所示的“生成式變體(generation variant)”。
該模型的效能表現主要得益於三項關鍵技術創新:
  • 團隊開發了一套自動化標註流程,結合了多個語音識別(ASR)模型、聲音事件分類模型,以及其自研的音訊理解模型。透過這條流程,團隊清洗並標註了 1000 萬小時的音訊資料,並將其稱為 AudioVerse。自研的理解模型是在 Higgs Audio v1 Understanding 基礎上微調而來,後者採用的是架構圖中所示的“理解式變體(understanding variant)”。
  • 從零開始訓練了一個統一的音訊分詞器(tokenizer),能夠同時捕捉語義和聲學特徵。
  • 提出了 DualFFN 架構,在幾乎不增加計算開銷的前提下,顯著增強了大語言模型(LLM)對聲學 token 的建模能力。加入 DualFFN 後,其實現依然保留了原始大模型訓練速度的 91%。
參考連結:
https://b23.tv/UdINLVV
https://github.com/boson-ai/higgs-audio
宣告:本文為 AI 前線翻譯整理,不代表平臺觀點,未經許可禁止轉載。
InfoQ 老友!請留步!極客邦 1 號客服上線工作啦!
後續我將透過微信影片號,以影片的形式持續更新技術話題、未來發展趨勢、創業經驗、商業踩坑教訓等精彩內容,和大家一同成長,開啟知識交流之旅
歡迎掃碼關注我的微信影片號~
今日薦文
你也「在看」嗎?👇

相關文章