華爲“天才少年”4萬字演講:現在的AI技術要麽無趣,要麽無用-(2)
下面我們就分別從好看的皮囊和有趣的靈魂兩個方面來講。
好看的皮囊:多模態理解能力
說到好看的皮囊,很多人認爲只要有一個 3D 的形象能夠在這兒搖頭晃腦地展示就行了。但是我認爲更關鍵的一部分是 AI 能夠去看到,並且理解周圍的世界,就是他的視覺理解能力是很關鍵的,不管是機器人還是可穿戴設備,還是手機上的攝像頭。
比如說像 Google 的 Gemini 演示視頻就做得不錯,雖然它做了剪輯,但是如果我們真正能做到它這麽好的效果,是一定不愁用戶的。
我們回顧一下 Gemini 演示視頻中的幾個片段,給一個畫鴨子的視頻它能描述鴨子是什麽,給一個餅幹和橘子能對比它們的不同,給一個簡筆畫小遊戲知道該往哪邊走,給兩團毛線可以畫出一個用它能織出的毛絨玩具,給幾個行星的圖能夠對它們正確排序,給一個貓跳上櫃子的視頻能夠描述發生了什麽。
雖然效果非常驚豔,其實仔細想想,這些場景都不是很難做出來的,只要會看圖說話,也就是給圖片生成一個比較好的 caption,這些問題大模型就都能回答了。
語音能力也是非常關鍵的。我 10 月份基于 Google ASR/TTS 和 GPT-4 做了一個語音聊天 AI Agent,一聊聊了一整天,室友還以爲我在跟老婆煲電話粥,就沒來打擾我。當他知道我是在跟 AI 聊天的時候,說我怎麽能跟 AI 聊這麽久。我給他看了看我們的聊天記錄,他說 AI 確實挺能聊的,他用 ChatGPT 不願意聊這麽久,是因爲懶得打字。
我認爲,多模態大模型有三條路。第一條是用多模態數據端到端預訓練的模型,Google 的 Gemini 就是這麽做出來的,最近 Berkeley 的 LVM 也是端到端多模態的,我認爲這是最有前景的一個方向。當然這條路需要非常多的計算資源。
現在還有一種工程化的方案,是用膠水層去粘接已經訓練好的模型,比如目前圖片理解做得最好的 GPT-4V,還有學術界開源的 MiniGPT-4/v2,LLaVA 等等。膠水層是我的叫法,專業名詞叫做 projection layer,比如右上角這個 MiniGPT 架構圖中,標著 “” 的 6 個框就是 projection layer。
輸入的圖片、語音、視頻分別通過不同的 encoder 去做編碼,編碼結果經過 projection layer 映射到 token,輸入給 Transformer 大模型。大模型的輸出 token 經過 projection layer,分別映射到圖片、語音、視頻的解碼器,這樣就可以生成圖片、語音、視頻了。
在這個膠水層粘接的方案裏,可以看到 encoder、decoder 和大模型上面都標著 “️”,那就是凍結權重的意思。使用多模態數據訓練的時候,只修改 projection layer 部分的權重,不修改其他部分的權重,這樣訓練的成本就能大大降低,只要幾百美金就能訓練出一個多模態大模型。
第三條路是第二條路推向極致的方案,連 projection layer 都不要了,直接用文本去粘接 encoder、decoder 和文本大模型,不需要做任何訓練。例如語音部分就是先做語音識別,把語音轉換成文字輸入給大模型,然後再把大模型的輸出送給語音合成模型生成音頻。不要小看這種聽起來很土的方案,在語音領域,目前這種方案還是最靠譜的,現有的多模態大模型在識別和合成人類說話語音方面都不太行。
Google Gemini 的語音對話響應延遲只有 0.5 秒,這是一個真人都很難達到的延遲,真人的延遲一般在 1 秒左右。我們現有的語音聊天産品,比如 ChatGPT,語音對話延遲高達 5~10 秒。因此大家才會覺得 Google Gemini 的效果非常驚豔。
那麽這個效果是不是很難做出來呢?其實我們現在用開源的方案就可以做出來 2 秒以內的語音對話響應延遲,而且還包含實時視頻理解。
我們先不考慮視覺部分,先只看語音部分。在一個語音電話裏,收到語音後首先做停頓檢測,發現用戶說話結束了,就把這一段音頻送到 Whisper 去做語音識別。停頓檢測比如人聲結束後等待 0.5 秒,然後 Whisper 語音識別大概需要 0.5 秒。
然後送到文本模型去做生成,用開源模型生成的速度其實非常快,比如最近比較火的 Mixtral 8x7B MoE 模型,輸出第一個 token 只需要 0.2 秒,每秒輸出 50 個 token 不是問題,那麽第一句話假設有 20 個 token,就需要 0.4 秒。第一句話生成完了,就交給語音合成模型去合成語音,VITS 只需要 0.3 秒。
加上 0.1 秒的網絡時延,這樣端到端算下來只要 1.8 秒的延遲,已經比市面上的大多數實時語音電話産品好很多了。比如 ChatGPT 語音電話的延遲是 5~10 秒。而且我們的方案中,停頓檢測和語音識別部分的延遲還有優化空間。
我們再看 Google Gemini 演示的視頻理解場景。
因爲我們現在的多模態模型輸入的基本都是圖片,而不是流式視頻,所以首先需要把視頻變成圖片,截取關鍵幀。比如每 0.5 秒截取一幀,這裏面就有平均 0.3 秒的延遲。圖片可以直接送進 MiniGPT-v2 或者 Fuyu-8B 這樣的開源多模態模型。但是由于這些模型比較小,實際用起來效果並不是很好,跟 GPT-4V 差距比較大。
因此我們可以采取傳統 CV 與多模態大模型相結合的方案,用 Dense Captions 這個技術識別出圖片中的所有物體及其位置,並且用 OCR 識別圖片中的所有文本。再把 OCR 結果,Dense Captions 的物體識別結果作爲原始圖片的補充文字,都輸入到 MiniGPT-v2 或者 Fuyu-8B 這種多模態大模型裏面。對于菜單、說明書一類的圖片,OCR 的作用是非常大的,因爲單靠多模態大模型經常識別不清楚大塊文字。
這個識別圖片中物體和文字的步驟增加了額外的 0.5 秒延遲,但是我們看一下延遲分解,就會發現視頻部分根本不是瓶頸,只有 0.9 秒,而語音輸入部分反而是瓶頸,需要 1.1 秒。在 Google Gemini 這個演示場景中,從看到視頻到 AI 文字開始輸出只要 1.3 秒,從看到視頻到 AI 語音開始播放只要 1.8 秒,雖然沒有演示視頻的 0.5 秒這麽酷炫,但也足夠完爆市面上的所有産品了。這裏面用的還全部都是開源模型,一點訓練都不需要做。如果公司自己有一些自己訓練和優化模型的能力,想象空間就更大了。
Google Gemini 演示視頻分爲兩種任務:生成文本/語音和生成圖片。在生成圖片的時候,可以根據文本,調用 Stable Diffusion 或者最近新出的 LCM 模型,只要 4 個 step 甚至 1 個 step 就可以生成圖片,圖片生成的延遲可以做到 1.8 秒,那麽從看到圖到生成圖的端到端時間就只有 3.3 秒,也是非常快的了。
好看的皮囊:多模態生成能力
語音克隆是制作名人或者動漫遊戲角色的重要技術,目前 ElevenLabs 做得是最好的,但是 ElevenLabs 的 API 很貴。XTTS v2 之類的開源方案合成語音的相似度不高。
我認爲要想語音克隆效果好,還是要靠大量的語音數據來做訓練。但是傳統語音訓練所需的數據一般對質量要求很高,必須是錄音棚裏面錄制的口齒清晰的語音數據,因此采集語音數據的成本很高。但我們不可能要求名人到錄音棚裏去給我們專門錄制語音,只能用 YouTube 等公開視頻的語音做訓練。YouTube 語音往往是訪談形式,裏面有多個人說話,而且有背景噪聲,名人說話的過程中也可能有結巴和口齒不清。如何用這樣的語音訓練語音克隆呢?
我們搭建了一套基于 VITS 搭建的語音克隆流水線,可以自動把視頻中的人聲從背景噪聲中區分出來,拆分成句子之後,識別出有哪幾個說話人,針對我們想要的人的語音,篩選出其中信噪比較高的語音,然後識別出文字,最後這些清洗過的語音和文字送去做批量微調。
微調過程也是很有技術含量的。首先,微調的基礎語音需要是比較相似的語音,比如一個男生的語音用一個女生的語音作爲基礎去微調,那效果肯定不好。如何從語音庫裏找到相似的語音來做微調是需要一個音色相似度檢測模型,類似聲紋識別的模型。像 ElevenLabs 的基礎語音模型中就已經包含了大量不同音色人的高質量數據,因此在語音克隆的時候,很多時候能夠從語音庫中找到很相似的語音,這樣不需要做微調就能 zero-shot 生成不錯的語音。
其次,VITS 訓練過程中不能根據簡單的 loss 判斷收斂,以往都是要靠人耳朵去聽哪個 epoch 的效果最好,這樣就需要大量的人工成本。我們開發了音色相似度檢測模型和發音清晰度檢測模型,可以自動判斷語音的微調結果哪個更好。
(注:這個報告是 2023 年 12 月做的,目前 GPT-soVITS 的路線比 VITS 更好,可以實現 zero-shot 語音克隆,不再需要收集大量高質量語音做訓練。開源模型可以合成的語音質量終于逼近 ElevenLabs 的水平了。)
很多人認爲不需要自研語音合成模型,直接調用 ElevenLabs、OpenAI 或者 Google Cloud 的 API 就行了。
但是 ElevenLabs 的 API 非常貴,如果走零售定價,每 1K 字符需要 0.18 美金,按照一個 token 4 個字符計算,相當于 $0.72 / 1K tokens 了,這是比 GPT-4 Turbo 都要貴 24 倍的。ElevenLabs 雖然效果好,但是如果 to C 産品大規模使用,這個價格是真的燒不起。
OpenAI 和 Google Cloud 的語音合成 API 不支持語音克隆,只有那幾個固定的聲音,這樣就沒法克隆名人語音了,只能做一個冷冰冰的機器人播報。但即使這樣,成本也是比 GPT-4 Turbo 貴 1 倍的,也就是成本的大頭不是花在大模型上,而是花在語音合成上。
大概也是因爲語音不好做,很多 to C 的産品都選擇只支持文字,但實時語音交互的用戶體驗明顯是更好的。
雖然基于 VITS 很難實現 ElevenLabs 級別質量的語音,但基本可用是沒有問題的。自己部署 VITS 的成本只要 $0.0005 / 1K 字符,是 OpenAI 和 Google Cloud TTS 價格的 1/30,ElevenLabs 價格的 1/360。這個 $2 / 1M tokens 的語音合成成本也跟自己部署開源文本大模型的成本差不多,這樣文本和語音的成本就都降下來了。
因此如果真的打算把語音作爲一個用戶體驗的重大加分項,基于開源自研語音模型不僅是必要的,也是可行的。