蘋果Siri深度學(xué)習(xí)語(yǔ)音合成技術(shù)揭秘
Siri 是一個(gè)使用語(yǔ)音合成技術(shù)與人類進(jìn)行交流的個(gè)人助手。從 iOS 10 開(kāi)始,蘋果已經(jīng)在 Siri 的語(yǔ)音中用到了深度學(xué)習(xí),iOS 11 中的 Siri 依然延續(xù)這一技術(shù)。使用深度學(xué)習(xí)使得 Siri 的語(yǔ)音變的更自然、流暢,更人性化。
介紹語(yǔ)音合成,也就是人類聲音的人工產(chǎn)品,被廣泛應(yīng)用于從助手到游戲、娛樂(lè)等各種領(lǐng)域。最近,配合語(yǔ)音識(shí)別,語(yǔ)音合成已經(jīng)成為了 Siri 這樣的語(yǔ)音助手不可或缺的一部分。
如今,業(yè)內(nèi)主要使用兩種語(yǔ)音合成技術(shù):?jiǎn)卧x擇 [1] 和參數(shù)合成 [2]。單元選擇語(yǔ)音合成技術(shù)在擁有足夠高質(zhì)量錄音時(shí)能夠合成最高質(zhì)量的語(yǔ)音,也因此成為商業(yè)產(chǎn)品中最常用的語(yǔ)音合成技術(shù)。另外,參數(shù)合成能夠提供高度可理解的、流暢的語(yǔ)音,但整體質(zhì)量略低。因此,在語(yǔ)料庫(kù)較小、低占用的情況下,通常使用參數(shù)合成技術(shù)?,F(xiàn)代的單元選擇系統(tǒng)結(jié)合這兩種技術(shù)的優(yōu)勢(shì),因此被稱為混合系統(tǒng)。混合單元選擇方法類似于傳統(tǒng)的單元選擇技術(shù),但其中使用了參數(shù)合成技術(shù)來(lái)預(yù)測(cè)選擇的單元。
近期,深度學(xué)習(xí)對(duì)語(yǔ)音領(lǐng)域沖擊巨大,極大的超越了傳統(tǒng)的技術(shù),例如隱馬爾可夫模型。參數(shù)合成技術(shù)也從深度學(xué)習(xí)技術(shù)中有所收益。深度學(xué)習(xí)也使得一種全新的語(yǔ)音合成技術(shù)成為了可能,也就是直接音波建模技術(shù)(例如 WaveNet)。該技術(shù)極有潛力,既能提供單元選擇技術(shù)的高質(zhì)量,又能提供參數(shù)選擇技術(shù)的靈活性。然而,這種技術(shù)計(jì)算成本極高,對(duì)產(chǎn)品而言還不成熟。為了讓所有平臺(tái)的 Siri 語(yǔ)音提供最佳質(zhì)量,蘋果邁出了這一步,在設(shè)備中的混合單元選擇系統(tǒng)上使用了深度學(xué)習(xí)。
蘋果深度語(yǔ)音合成技術(shù)工作原理為個(gè)人助手建立高質(zhì)量的文本轉(zhuǎn)語(yǔ)音(TTS)系統(tǒng)并非簡(jiǎn)單的任務(wù)。首先,第一個(gè)階段是找到專業(yè)的播音人才,她/他的聲音既要悅耳、易于理解,又要符合 Siri 的個(gè)性。為了覆蓋各種人類語(yǔ)音,我們首先在錄音棚中記錄了 10-20 小時(shí)的語(yǔ)音。錄制的腳本從音頻簿到導(dǎo)航指導(dǎo),從提示答案到笑話,不一而足。通常來(lái)說(shuō),這種天然的語(yǔ)音不能像錄制的那樣使用,因?yàn)椴豢赡茕浿浦謺?huì)說(shuō)的每一句話。因此,單元選擇 TTS 系統(tǒng)把記錄的語(yǔ)音切片成基礎(chǔ)元件,比如半音素,然后根據(jù)輸入文本把它們重新結(jié)合,創(chuàng)造全新的語(yǔ)音。在實(shí)踐中,選擇合適的音素并組合起來(lái)并非易事,因?yàn)槊總€(gè)音素的聲學(xué)特征由相鄰的音素、語(yǔ)音的韻律所決定,這通常使得語(yǔ)音單元之間不相容。圖 1 展示了如何使用被分割為半音素的數(shù)據(jù)庫(kù)合成語(yǔ)音。
圖 1:展示了使用半音素進(jìn)行單元選擇語(yǔ)音合成。合成的發(fā)音是「Unit selecTIon synthesis」,圖的頂部是使用半音素的標(biāo)音法。相應(yīng)的合成波形與光譜圖在圖下部分。豎線劃分的語(yǔ)音段是來(lái)自數(shù)據(jù)集的持續(xù)語(yǔ)音段,數(shù)據(jù)集可能包含一個(gè)或多個(gè)半音素。
單元選擇 TTS 技術(shù)的基本難題是找到一系列單元(例如,半音素),既要滿足輸入文本、預(yù)測(cè)目標(biāo)音韻,又要能夠在沒(méi)有明顯錯(cuò)誤的情況下組合在一起。傳統(tǒng)方式上,該流程包含兩部分:前端和后端(見(jiàn)圖 2),盡管現(xiàn)代系統(tǒng)中其界限可能會(huì)很模糊。前端的目的是基于原始文本輸入提供語(yǔ)音轉(zhuǎn)錄和音韻信息。這包括將包含數(shù)字、縮寫等在內(nèi)的原始文本規(guī)范化寫成單詞,并向每個(gè)單詞分配語(yǔ)音轉(zhuǎn)錄,解析來(lái)自文本的句法、音節(jié)、單詞、重音、分句。要注意,前端高度依賴語(yǔ)言。
圖 2:文本轉(zhuǎn)語(yǔ)音合成流程。
使用由文本分析模塊創(chuàng)建的符號(hào)語(yǔ)言學(xué)表征,音韻生成模塊預(yù)測(cè)音調(diào)、音長(zhǎng)等聲學(xué)特征的值。這些值被用于選擇合適的單元。單元選擇的任務(wù)極其復(fù)雜,所以現(xiàn)代的合成器使用機(jī)器學(xué)習(xí)方法學(xué)習(xí)文本與語(yǔ)音之間的一致性,然后根據(jù)未知文本的特征值預(yù)測(cè)其語(yǔ)音特征值。這一模塊必須要在合成器的訓(xùn)練階段使用大量的文本和語(yǔ)音數(shù)據(jù)進(jìn)行學(xué)習(xí)。音韻模型輸入的是數(shù)值語(yǔ)言學(xué)特征,例如音素特性、音素語(yǔ)境、音節(jié)、詞、短語(yǔ)級(jí)別的位置特征轉(zhuǎn)換為適當(dāng)?shù)臄?shù)值形式。音韻模型的輸出由語(yǔ)音的數(shù)值聲學(xué)特征組成,例如頻譜、基頻、音素時(shí)長(zhǎng)。在合成階段,訓(xùn)練的統(tǒng)計(jì)模型用于把輸入文本特征映射到語(yǔ)音特征,然后用來(lái)指導(dǎo)單元選擇后端流程,該流程中聲調(diào)與音長(zhǎng)的合適度極其重要。
與前端不同,后端通常是語(yǔ)言獨(dú)立的。它包括單元選擇和波形拼接部分。當(dāng)系統(tǒng)接受訓(xùn)練時(shí),使用強(qiáng)制對(duì)齊將錄制的語(yǔ)音和腳本對(duì)齊(使用語(yǔ)音識(shí)別聲學(xué)模型)以使錄制的語(yǔ)音數(shù)據(jù)被分割成單獨(dú)的語(yǔ)音段。然后使用語(yǔ)音段創(chuàng)建單元數(shù)據(jù)庫(kù)。使用重要的信息,如每個(gè)單元的語(yǔ)言環(huán)境(linguisTIc context)和聲學(xué)特征,將該數(shù)據(jù)庫(kù)進(jìn)一步增強(qiáng)。我們將該數(shù)據(jù)叫作單元索引(unit index)。使用構(gòu)建好的單元數(shù)據(jù)庫(kù)和指導(dǎo)選擇過(guò)程的預(yù)測(cè)音韻特征,即可在語(yǔ)音空間內(nèi)執(zhí)行 Viterbi 搜索,以找到單元合成的最佳路徑(見(jiàn)圖 3)。
圖 3. 使用 Viterbi 搜索在柵格中尋找單元合成最佳路徑。圖上方是合成的目標(biāo)半音素,下面的每個(gè)框?qū)?yīng)一個(gè)單獨(dú)的單元。Viterbi 搜索找到的最佳路徑為連接被選中單元的線。
該選擇基于兩個(gè)標(biāo)準(zhǔn):(1)單元必須遵循目標(biāo)音韻;(2)在任何可能的情況下,單元應(yīng)該在單元邊界不產(chǎn)生聽(tīng)覺(jué)故障的情況下完成拼接。這兩個(gè)標(biāo)準(zhǔn)分別叫作目標(biāo)成本和拼接成本。目標(biāo)成本是已預(yù)測(cè)的目標(biāo)聲學(xué)特征和從每個(gè)單元抽取出的聲學(xué)特征(存儲(chǔ)在單元索引中)的區(qū)別,而拼接成本是后項(xiàng)單元之間的聲學(xué)區(qū)別(見(jiàn)圖 4)。總成本按照如下公式計(jì)算:
其中 u_n 代表第 n 個(gè)單元,N 代表單元的數(shù)量,w_t 和 w_c 分別代表目標(biāo)成本和拼接成本的權(quán)重。確定單元的最優(yōu)順序之后,每個(gè)單元波形被拼接,以創(chuàng)建連續(xù)的合成語(yǔ)音。
圖 4. 基于目標(biāo)成本和拼接成本的單元選擇方法。
Siri 新聲音背后的技術(shù)因?yàn)殡[馬爾可夫模型對(duì)聲學(xué)參數(shù)的分布直接建模,所以該模型通常用于對(duì)目標(biāo)預(yù)測(cè) [5][6] 的統(tǒng)計(jì)建模,因此我們可以利用如 KL 散度那樣的函數(shù)非常簡(jiǎn)單地計(jì)算目標(biāo)成本。然而,基于深度學(xué)習(xí)的方法通常在參數(shù)化的語(yǔ)音合成中更加出色,因此我們也希望深度學(xué)習(xí)的優(yōu)勢(shì)能轉(zhuǎn)換到混合單元選擇合成(hybrid unit selecTIon synthesis)中。
Siri 的 TTS 系統(tǒng)的目標(biāo)是訓(xùn)練一個(gè)基于深度學(xué)習(xí)的統(tǒng)一模型,該模型能自動(dòng)并準(zhǔn)確地預(yù)測(cè)數(shù)據(jù)庫(kù)中單元的目標(biāo)成本和拼接成本(concatenaTIon costs)。因此該方法不使用隱馬爾可夫模型,而是使用深度混合密度模型(deep mixture density network /MDN)[7][8] 來(lái)預(yù)測(cè)特征值的分布。MDS 結(jié)合了常規(guī)的深度神經(jīng)網(wǎng)絡(luò)和高斯混合模型(GMM)。
常規(guī) DNN 是一種在輸入層和輸出層之間有多個(gè)隱藏層的人工神經(jīng)網(wǎng)絡(luò)。因此這樣的深度神經(jīng)網(wǎng)絡(luò)才能對(duì)輸入特征與輸出特征之間的復(fù)雜和非線性關(guān)系建模。通常深度神經(jīng)網(wǎng)絡(luò)使用反向傳播算法通過(guò)誤差的傳播而更新整個(gè) DNN 的權(quán)重。相比之下,GMM 在使用一系列高斯分布給定輸入數(shù)據(jù)的情況下,再對(duì)輸出數(shù)據(jù)的分布進(jìn)行建模。GMM 通常使用期望最大化(expectation maximization /EM)算法執(zhí)行訓(xùn)練。MDN 結(jié)合了 DNN 和 GMM 模型的優(yōu)點(diǎn),即通過(guò) DNN 對(duì)輸入和輸出之間的復(fù)雜關(guān)系進(jìn)行建模,但是卻提高概率分布作為輸出(如下圖 5)。
圖 5:用于對(duì)聲音特征的均值和方差建模的深度混合密度網(wǎng)絡(luò),輸出的聲學(xué)均值和方差可用于引導(dǎo)單元選擇合成
對(duì)于 Siri 來(lái)說(shuō),我們使用了基于 MDN 統(tǒng)一的目標(biāo)和拼接模型,該模型能預(yù)測(cè)語(yǔ)音目標(biāo)特征(頻譜、音高和音長(zhǎng))和拼接成本分布,并引導(dǎo)單元的搜索。因?yàn)?MDN 的分布是一種高斯概率表分布形式,所以我們能使用似然度函數(shù)作為目標(biāo)和拼接成本的損失函數(shù):
其中 x_i 是第 i 個(gè)目標(biāo)特征,μ_i 為預(yù)測(cè)均值,而 (σ_i)^2 為預(yù)測(cè)方差。在實(shí)際的成本計(jì)算中,使用負(fù)對(duì)數(shù)似然函數(shù)和移除常數(shù)項(xiàng)將變得更加方便,經(jīng)過(guò)以上處理將簡(jiǎn)化為以下簡(jiǎn)單的損失函數(shù):
其中 w_i 為特征權(quán)重。
當(dāng)我們考慮自然語(yǔ)言時(shí),這種方法的優(yōu)勢(shì)將變得非常明顯。像元音那樣,有時(shí)候語(yǔ)音特征(如話音素)相當(dāng)穩(wěn)定,演變也非常緩慢。而有時(shí)候又如有聲語(yǔ)音和無(wú)聲語(yǔ)音的轉(zhuǎn)換那樣變化非常迅速??紤]到這種變化性,模型需要能夠根據(jù)這種變化性對(duì)參數(shù)作出調(diào)整,深度 MDN 的做法是在模型中使用嵌入方差(variances embedded)。因?yàn)轭A(yù)測(cè)的方差是依賴于上下文的(context-dependent),所以我們將它們視為成本的自動(dòng)上下文依賴權(quán)重。這對(duì)提升合成質(zhì)量是極為重要的,因?yàn)槲覀兿M诋?dāng)前上下文下計(jì)算目標(biāo)成本和拼接成本:
其中 w_t 和 w_c 分別為目標(biāo)和拼接成本權(quán)重。在最后的公式中,目標(biāo)成本旨在確保合成語(yǔ)音(語(yǔ)調(diào)和音長(zhǎng))中再現(xiàn)音韻。而拼接成本確保了流暢的音韻和平滑的拼接。
在使用深度 MDN 對(duì)單元的總成本進(jìn)行評(píng)分后,我們執(zhí)行了一種傳統(tǒng)的維特比搜索(Viterbi search)以尋找單元的最佳路徑。然后,我們使用波形相似重疊相加算法(waveform similarity overlap-add/WSOLA)找出最佳拼接時(shí)刻,因此生成平滑且連續(xù)合成語(yǔ)音。