AI為你唱響春節,微軟如何從視覺到語音打造炫酷歌詞唱作

機器之心發表於2019-03-12

我們總會回憶起以前節日裡不可或缺的團圓時刻,那麼 AI 能理解當時的心情嗎?過年期間,央視新聞官方微博釋出了一個 HTML5 網頁《你的生活 AI 為你唱作》,我們藉助它體驗了一把 AI 為自己歌唱的感覺。使用者只要上傳 1 到 4 張最愛的、最喜歡回憶的照片,AI 就能以說唱的形式為你作詞、為你演唱。

你的生活 AI 為你唱作:http://cctvsongbot.newscctv.net/index.html

image.png

在上傳影像後,我們可以選擇兩種語音進行創作,即央視主持人康輝與微軟智慧女聲曉曉。選定聲音後,系統就能很快生成歌詞與對應的歌聲。那麼什麼樣的 AI 系統,才能在 2 小時內吸引並支撐起 300 萬人次的互動請求呢?

最近微軟亞洲研究院向機器之心介紹了《AI 為你唱作》背後的技術,這次與央視合作,微軟藉助其強大的全方位 AI 技術完成了這個 H5 春節互動平臺。具體而言,利用計算機視覺自然語言處理語音合成和 Azure 雲端計算等技術,微軟打造了一條從影像到詩歌再到語音的聯合系統。

簡單而言,AI 唱作會先使用 Azure 的視覺 API 對使用者輸入的影像進行分析,並得出幾十種類別,例如人臉、背景色和情緒等。然後這些類別可以對映到幾千種標籤,它們包含了大量關鍵資訊,並可作為生成歌詞的輸入。在生成歌詞後,再呼叫 Azure Neural TTS 的 API 生成最終的說唱語音。

透過聯合計算機視覺自然語言處理語音合成三大技術,AI 為你唱作才能為你唱響,而本文重點介紹了微軟歌詞生成模型語音合成模型。

歌詞生成

其實微軟在十幾年以前就做了對聯,後來開始做古體的詩、絕句、宋詞和現代詩等,然後慢慢擴充套件到歌詞和作曲。

微軟亞洲研究院自然語言計算組資深研究員韋福如表示:「從難點上看,生成的歌詞要求琅琅上口,且比較接近大家的生活。而對於整個模型而言,輸入只能從影像獲取一些資訊,包括有沒有人臉或笑臉、有幾個人、大概的年齡等等。我們把這些資訊對映到更細緻的關鍵詞,例如開心、愛情等數千種關鍵詞,然後把它們輸入 Seq2Seq 模型就能生成第一句歌詞。」

此外,韋福如表示在實際生成的時候還需要對結構做一些調整,例如對關鍵詞做一個 Planing,決定每一個關鍵詞出現的順序。這樣在生成第一句後,結合已生成的歌詞和對應的關鍵詞就能繼續往後生成歌詞。

微軟的歌詞生成模型會基於很多資料,包括爬取的歌詞和宋詞等,其中宋詞可以為現代歌詞賦予文化氣息。不過正因為資料集大量採用了歌詞或宋詞,整體情感基調上會比較低沉或傷感,因此在歌詞生成後還需要識別裡面的情感,從而傳遞更多的過年氣氛與正能量。除了情感分析,歌詞後處理還包括一系列細節,包括為 TTS 預處理多音字等。

image.jpg

總體而言,歌詞生成模型的核心是一個序列到序列的模型,它會學習將關鍵詞序列對映到合理的詩歌,併為後面的語音合成做準備。這裡需要注意的是,如上所示在根據關鍵詞序列生成第一句後,模型類似於一個強大的語言模型,它會以第一句為條件生成第二句,並在生成過程中加入前面規劃的一些關鍵詞資訊。

最後,微軟 NLP 組的研究工作遠不止詩歌生成。對於機器閱讀理解(MRC),微軟在 SQuAD 文字理解挑戰賽的最新榜單上,以 82.650 的 EM 值最高分領先(持續最佳化提升),並率先超越人類分數 82.304。對於機器翻譯系統,微軟在通用新聞報導測試集 newstest2017 的中-英測試集上,達到了可與人工翻譯媲美的水平。這是首個在新聞報導的翻譯質量和準確率上可以比肩人工翻譯的翻譯系統。

語音合成

除了計算機視覺自然語言處理方面,微軟深度神經網路語音合成技術(Neural TTS)在整個唱作過程中也非常重要,康輝或曉曉的聲音就是基於 Neural TTS 技術自然地唱出了歌詞。基於 Azure 的 Neural TTS 技術,克服了傳統語音合成系統的侷限性,最佳化了口語和唱歌中的重音、語調和節奏,大幅提升了語音合成的表現力,具有更自然的韻律和更豐富的情感。

正如微軟亞洲網際網路工程院語音組產品經理劉越穎所說,傳統的拼接合成法(Concatenation synthesis)會把語音的每個單元存下來,再拼接到一起。也就是說將文字按照音拆成不同的單元,然後把不同的單元拼接起來成一句話。拼接法的問題在於音的轉換,如果轉換不流暢自然,那麼生成的語音聽起來就會比較機械。早期拼接法會使用一些平滑方法,後來會使用基於統計的隱馬爾可夫模型(HMM)進行處理。

隨著深度網路展現出強大的表徵能力,TTS 也嘗試採用它作為端到端的建模方式,這些嘗試就包括了谷歌的 WaveNet、Tacotron2 和百度的 ClariNet 等。如下圖所示,微軟的 Neural TTS 也是一種端到端的系統,模型首先會將文字轉換成包含語音資訊(phonetic)和韻律資訊(prosodic)的向量序列,然後將兩部分資訊轉為聲波(waveform)。

image.png

這個系統的重點在於它是第一個實時神經網路 TTS,這對演算法本身的時延和 Azure 提供的雲端計算都有很高的要求。

可能說到語音合成,很多讀者都想到標誌性的研究 WaveNet,它在 2017 年 10 月也正式產品化。WaveNet 利用空洞卷積(dilated convolution)和因果卷積能生成高質量的語音。但是它是需要利用 N-1 個樣本預測第 N 個樣本,所有效率非常低,後來的 ClariNet 等都是為了解決這個問題。

image.png

圖注:谷歌 WaveNet 所採用的一維卷積結構,摘自 arXiv:1609.03499。

谷歌的 WaveNet TTS 利用 WaveNet 完成了高質量的聲學預測和聲音合成,但是韻律資訊還是基於傳統的韻律定義和預測模型,與聲學模型是分離的。而微軟的 Neural TTS 採用了端到端的聲學建模,將韻律模型和聲學預測合併最佳化,從而可以得到更逼真更豐富的韻律。此外,WaveNet 只提供了標準預設好的聲音,但是微軟提供了工業級的基於深度神經網路的聲音定製服務,使用者可以定製屬於自己的聲音。為了能用少於 1 個小時的錄音資料達到幾十小時、甚至更多資料的訓練效果,微軟採用了統一模型(Universal Model)的技術,利用大規模的多說話人語音資料庫來訓練基礎模型,從而極大減少了對單一說話人的錄音資料需求。

相關文章