自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

為什么你的語音助手說話不像人?關(guān)于TTS技術(shù)原理及挑戰(zhàn)

移動開發(fā)
為什么你的機器人女友說話不像斯嘉麗約翰遜?今天,Rokid A-Lab 語音合成算法工程師鄭杰文將從語音合成技術(shù)談起,給大家分析其中原因。以下,Enjoy

每一位剛(wan)鐵(nian)直(dan)男(shen),都夢想下班路上偶遇電影《Her》中的機器人女友薩曼薩。雖然“只聞其聲不見其人”,但僅聽聲音就能感受到各種情感的詮釋。 

[[272998]]

薩曼薩背后的真人配音來自斯嘉麗約翰遜。有人說,“光聽聲音就已滿足我對她全部的幻想。”

可以說,消除人與機器之間的隔閡,拉近之間的距離,聲音是至關(guān)重要的。

而在現(xiàn)實生活中,AI 語音助手說話還遠遠達不到我們理想的聲音。

為什么你的機器人女友說話不像斯嘉麗約翰遜?今天,Rokid A-Lab 語音合成算法工程師鄭杰文將從語音合成技術(shù)談起,給大家分析其中原因。以下,Enjoy

[[272999]]

TTS背后的技術(shù)原理——前端和后端系統(tǒng)

讓語音助手說話的技術(shù)叫 TTS(text-to-speech),也就是語音合成。

打造自然、真實、悅耳的 TTS,是 AI 領域的科學家和工程師一直努力的方向。但前進過程中總會碰到各種“攔路虎”,它們究竟是什么? 我們先從 TTS 的基礎原理講起。

TTS 技術(shù)本質(zhì)上解決的是“從文本轉(zhuǎn)化為語音的問題”,通過這種方式讓機器開口說話。 

為什么你的語音助手說話不像人?關(guān)于TTS技術(shù)原理及挑戰(zhàn)

圖 1語音合成,一個從文本轉(zhuǎn)化為語音的問題

但這個過程并不容易,為了降低機器理解的難度,科學家們將這個轉(zhuǎn)化過程拆分成了兩個部分——前端系統(tǒng)和后端系統(tǒng)。 

為什么你的語音助手說話不像人?關(guān)于TTS技術(shù)原理及挑戰(zhàn)

圖 2前端和后端一起組成的TTS

前端負責把輸入的文本轉(zhuǎn)化為一個中間結(jié)果,然后把這個中間結(jié)果送給后端,由后端生成聲音。

接下來,我們先來了解一下前端和后端系統(tǒng)是如何分工協(xié)作的?

生成“語言學規(guī)格書”的前端系統(tǒng)

小時候我們在認字之前需要先學習拼音,有了拼音,我們就可以用它去拼讀我們不認識的字。對于 TTS 來說,前端系統(tǒng)從文本轉(zhuǎn)化出的中間結(jié)果就好像是拼音。

不過,光有拼音還不行,因為我們要朗讀的不是一個字,而是一句一句的話。如果一個人說話的時候不能正確的使用抑揚頓挫的語調(diào)來控制自己說話的節(jié)奏,就會讓人聽著不舒服,甚至誤解說話人想要傳達的意思。所以前端還需要加上這種抑揚頓挫的信息來告訴后端怎么正確的“說話”。

我們將這種抑揚頓挫的信息稱之為韻律(Prosody)。韻律是一個非常綜合的信息,為了簡化問題,韻律又被分解成了如停頓,重讀等信息。停頓就是告訴后端在句子的朗讀中應該怎么停,重讀就是在朗讀的時候應該著重強調(diào)那一部分。這些所有的信息綜合到一起,我們可以叫”語言學規(guī)格書”。

為什么你的語音助手說話不像人?關(guān)于TTS技術(shù)原理及挑戰(zhàn)

圖 3.前端通過生成“語言書規(guī)格書”來告訴后端我們想要合成什么樣的內(nèi)容。

前端就像一個語言學家,把給它的純文本做各種各樣的分析,然后給后端開出一份規(guī)格書,告訴后端應該合成什么樣的聲音。

在實際的系統(tǒng)中,為了讓機器能正確的說話,這份兒“規(guī)格書”遠遠比我們這里描述的要復雜。

扮演“發(fā)音人”的后端系統(tǒng)

當后端系統(tǒng)拿到“語言學規(guī)格書”后,目標是生成盡量符合這個規(guī)格書里描述的聲音。

當然,機器是不能憑空直接生成一個聲音的。在這之前,我們還需要在錄音棚里錄上幾個到幾十個小時不等的音頻數(shù)據(jù)(根據(jù)技術(shù)不同,使用的數(shù)據(jù)量會不同),然后用這些數(shù)據(jù)來做后端系統(tǒng)。

目前主流的后端系統(tǒng)有兩種方法:一種是基于波形拼接的方法,一種是基于參數(shù)生成的方法。

波形拼接的方法思路很簡單:那就是把事先錄制好的音頻存儲在電腦上,當我們要合成聲音的時候,我們就可以根據(jù)前端開出的“規(guī)格書”,來從這些音頻里去尋找那些最適合規(guī)格書的音頻片段,然后把片段一個一個的拼接起來,最后就形成了最終的合成語音。

比如:我們想要合成“你真好看”這句話,我們就會從數(shù)據(jù)庫里去尋找“你、真、好、看”這四個字的音頻片段,然后把這四個片段拼接起來。

為什么你的語音助手說話不像人?關(guān)于TTS技術(shù)原理及挑戰(zhàn)

圖表 4使用拼接法合成“你真好看”

當然,實際的拼接并沒有這么簡單,首先要選擇拼接單元的粒度,選好粒度還需要設計拼接代價函數(shù)等。

參數(shù)生成法和波形拼接法的原理很不相同,使用參數(shù)生成法的系統(tǒng)直接使用數(shù)學的方法,先從音頻里總結(jié)出音頻最明顯的特征,然后使用學習算法來學習一個如何把前端語言學規(guī)格書映射到這些音頻特征的轉(zhuǎn)換器。

一但我們有了這個從語言學規(guī)格書到音頻特征的轉(zhuǎn)換器,在同樣合成“你真好看”這四個字的時候,我們先使用這個轉(zhuǎn)換器轉(zhuǎn)換出音頻特征,然后用另一個組件,把這些音頻特征還原成我們可以聽到的聲音。在專業(yè)領域里,這個轉(zhuǎn)換器叫“聲學模型”,把聲音特征轉(zhuǎn)化為聲音的組件叫“聲碼器”。

為什么你的AI語音助手說話不像人?

如果簡單的給這個問題一個答案的話,主要有兩個方面的原因:

你的AI會犯錯。為了合成出聲音,AI需要做一連串的決定,一但這些決定出錯,就會導致最終合成出來的聲音有問題,有強烈的機械感,聽著不自然。TTS的前端系統(tǒng)和后端系統(tǒng)都有犯錯的可能。

使用AI合成聲音時,工程師對這個問題過度簡化,導致沒有準確的刻畫聲音生成的過程。這種簡化一方面是來自于我們?nèi)祟愖约簩φZ言,和人類語音生成的認識還不足夠;另外一方面也來自于商用語音合成系統(tǒng)在運轉(zhuǎn)的時候要對成本控制進行考量。

下面我們具體來聊聊造成AI語音助手說話不自然的前端錯誤和后端錯誤問題。

前端錯誤

前端系統(tǒng),做為一個語言學家,是整個TTS系統(tǒng)里最復雜的部分。為了從純文本生成出最后的“語言學規(guī)格書”,這個語言學家做的事情要比我們想像的多得多。

為什么你的語音助手說話不像人?關(guān)于TTS技術(shù)原理及挑戰(zhàn)

圖表 5典型的前端處理流程

一個典型的前端處理流程是:

文本結(jié)構(gòu)分析

我們給系統(tǒng)輸入一個文本,系統(tǒng)要先判斷這個文本是什么語言,只有知道是什么語言才知道接下來如何處理。然后把文本劃分成一個一個的句子。這些句子再送給后面的模塊處理。

文本正則

在中文場景下,文本正則的目的是把那些不是漢字的標點或者數(shù)字轉(zhuǎn)化為漢字。

比如”這個操作666啊”,系統(tǒng)需要把“666”轉(zhuǎn)化為“六六六”。

文本轉(zhuǎn)音素

也就是把文本轉(zhuǎn)化為拼音,由于中文中多音字的存在,所以我們不能直接通過像查新華字典一樣的方法去找一個字的讀音,必須通過其他輔助信息和一些算法來正確的決策到底要怎么讀。這些輔助信息就包括了分詞和每個詞的詞性。

韻律預測

用于決定讀一句話時的節(jié)奏,也就是抑揚頓挫。但是一般的簡化的系統(tǒng)都只是預測句子中的停頓信息。也就是一個字讀完后是否需要停頓,停頓多久的決策。

從上面四個步驟可以看出,任何步驟都是有可能出錯的,一但出錯,生成的語言學規(guī)格書就會錯,導致后端合成的聲音也會錯。一個TTS系統(tǒng),典型的前端錯誤有以下幾種類型:

1、文本正則錯誤

由于我們的書寫形式和朗讀形式是不一樣的,所以在前端非常早期的階段,需要把書寫形式轉(zhuǎn)化為我們實際朗讀的形式。這個過程在專業(yè)領域里叫“文本正則”。比如我們前面說到的“666”

要轉(zhuǎn)為“六六六”。我們非常容易感受到TTS系統(tǒng)中文本正則的錯誤。比如下面這句:

“我花了666塊住進了一個房號是666的房間。”(點擊聽音頻)

我們知道前面的“666”應該讀成“六百六十六”,后面的“666”應該要讀“六六六”。但是TTS系統(tǒng)卻很容易搞錯。

另外一個例子:“我覺得有2-4成的把握,這場比分是2-4。”

這兩個“2-4”到底應該是讀“二到四”,“兩到四”,還是“二比四”呢?你應該一眼就能知道到底怎么樣讀才是正確的。但是,對于前端系統(tǒng)來說,這又是一個難題。

2、注音錯誤

中文是一門博大精深的語言,正確的朗讀它可并沒有好么容易。其中一個比較棘手的問題就是,面對多音字時,到底應該選擇哪一個音來朗讀呢?

比如這兩句:“我的頭發(fā)又長長了。”和“我的頭發(fā)長長的。”這里的“長”到底應該是讀二聲的“chang”還是讀四聲的“zhang”呢?

當然,人可以很輕松的挑選出正確的答案。那么下面這一句呢:

人要是行,干一行行一行,行行都行,要是不行,干一行不行一行,行行不行。(點擊聽音頻)

可能你也要略加思索,才能讀對這中間的所有“行”。對于AI來說就更難了。

你可能時不時的就能聽到AI助手在朗讀多音字時讀錯了,這種錯誤很容易就被你的耳朵捕捉到,并讓你立刻有一個印象:“這絕對不是真人在說話~”。

當然,多音字錯誤只是注音錯誤中的一種,還有其他的一些錯誤,如輕聲,兒化音,音調(diào)變調(diào)等。總之,準確的讓你的AI助手朗讀所有的內(nèi)容并不容易。

3、韻律錯誤

如前面所說,為了更準確的傳遞信息,人在說一句話的時候需要有節(jié)奏感。如果一個人在說話的時候中間不做任何的停頓,會讓我們很難理解他說的意思,甚至我們會覺得這個人不禮貌。我們的科學家,工程師,都在想方設法的讓TTS朗讀得更具備節(jié)奏感一些,更禮貌一些。但是在很多時候TTS的表現(xiàn)卻總是差強人意。

這是因為語言的變化太豐富了,根據(jù)不同的上下文,甚至不同的場合,我們的朗讀的韻律節(jié)奏都不太一樣。韻律中,最重要的就是討論一句話的停頓節(jié)奏,因為停頓是一句話朗讀正確的基礎,如果停頓不對,錯誤很容易被人耳朵抓住。

比如這句:”為你切換單曲循環(huán)模式”。如果我們用“|”來表示停頓,那么一個正常的人朗讀的停頓節(jié)奏一般是這樣的:“為你切換|單曲循環(huán)模式”。

但是如果一但你的AI助手說“為你切|換單曲循環(huán)模式”這種奇怪的節(jié)奏感時,你內(nèi)心可能是奔潰的。

后端錯誤

聊完前面這個“經(jīng)常犯錯的語言學家”,我們再來看看后端:這個按照“語言學家”給的 “規(guī)格書”來讀稿子的“發(fā)音人”。

前面提到,后端主要有拼接法和參數(shù)法兩種方式?,F(xiàn)在蘋果,亞馬遜的AI助手Siri和Alexa 使用的是波形拼接的方法。而在國內(nèi),大多數(shù)公司都是使用參數(shù)法。所以我們關(guān)鍵來看一下參數(shù)法可能的后端錯誤。

后端系統(tǒng)在拿到前端給的語言信息后,要做的第一件事情是,決定每個漢字到底要發(fā)音多長時間(甚至是每個聲母,韻母要發(fā)音多長時間)。這個決定發(fā)音長短的組件在專業(yè)領域里叫“時長模型”。

有了這個時間信息后,后端系統(tǒng)就可以通過我們前面說的一個轉(zhuǎn)換器(也叫聲學模型)把這個語言學規(guī)格書轉(zhuǎn)化為音頻特征了。然后再用另一個叫“聲碼器”的組件把這些音頻特征還原成聲音。從時長模型到聲學模型,再到聲碼器,這里面的每一步都可能犯錯或者不能完美的生成我們想要的結(jié)果。

一個 TTS 系統(tǒng)里,典型的后端錯誤有以下幾種類型:

1、時長模型錯誤

在一句話朗讀的時候,根據(jù)上下文語境的不同,每個字朗讀發(fā)音時間是不一樣的。TTS系統(tǒng)必須根據(jù)上下文去決定到底哪些字應該讀音拖長一點,哪些字應該讀短一些,其中一個比較典型的例子就是語氣詞的朗讀。

通常這些語氣詞由于攜帶了說話人的語氣情感,它們的發(fā)音都會比普通的字要長一些,比如這句:“嗯。。。我想他是對的。”(點擊聽音頻)

這里的“嗯”,在這個場景下,很明顯需要被拖長,用于表示一種“思考之后的判斷”。

但是并不是所有的“嗯”都要拖這么長,比如這一句:“嗯?你剛才說什么?”

這里的“嗯”代表是一種疑問的語氣,發(fā)音就要比上面句子中的“嗯”要短得多。如果時長模型不能正確的決策出發(fā)音時長的話,就會給人一種不自然感覺。

2、聲學模型錯誤

最主要的聲學模型錯誤就是遇到在訓練后端這個“發(fā)音人”時,沒有見過的發(fā)音。聲學模型的作用是從訓練音庫里,學習到各種“語言學規(guī)格書”所對應的語音聲學特征。如果在合成的時候遇到了訓練過程中沒有見過的語言學表現(xiàn),那么機器就不太容易輸出正確的聲學特征。

一個常見的例子是兒化音。原則上來說,每個漢語拼音都有對應的兒化音,但在實際說話中有些兒化音被使用到的頻次極低,因此錄制音庫的時候通常并不會覆蓋所有的兒化音,而是僅僅保留最常見的一些。這個時候就會出現(xiàn)一些兒化音發(fā)不出來,或者發(fā)不好的現(xiàn)象。

3、聲碼器錯誤

聲碼器的種類比較多,但是比較傳統(tǒng)、比較常見的聲碼器通常都會用到基頻信息。那什么是基頻呢?基頻就是你在說話的時候聲帶震動的快慢程度。這里教你一個簡單的方法來感受自己說話的基頻:把自己的除大拇指以外的其他四個手指按壓到自己的喉嚨部分,然后自己開始對自己隨便說話。

這個時候你就會感受到你的喉嚨在震動,這個震動的信息就是我們的基頻信息。發(fā)濁音時會伴隨聲帶振動,聲帶不振動發(fā)出的音稱為清音。輔音有清有濁,而元音一般均為濁音。所以合成語音中元音和濁輔音的位置都應該對應有基頻,如果我們前面提到的聲學模型輸出的基頻出現(xiàn)偏差,聲碼器合成的聲音就會聽起來很奇怪。

在訓練后端這個“發(fā)音人”時,我們也要通過算法來計算出基頻信息。不好的基頻提取算法可能會造成基頻丟失、倍頻或者半頻的現(xiàn)象。這些都會直接影響基頻預測模型的效果。如果應該有基頻的地方?jīng)]有預測出基頻,合成聲音聽起來就是沙啞的,對聽感的影響十分明顯。

一個好的聲碼器還要處理好基頻和諧波的關(guān)系。如果高頻諧波過于明顯,在聽感上會造成嗡嗡的聲響,機械感明顯。

總結(jié)

在這篇文章里,我們介紹了 TTS 的基礎原理,以及分析了語音助手不能像真人一樣說話的原因:TTS 在做各種決策中會犯錯,導致朗讀出錯或者不自然。同時,為了讓電腦可以合成聲音,工程師會對文本轉(zhuǎn)語音問題做簡化,導致沒有準確的刻畫聲音生成的過程。這種簡化一方面來自于對語音語言生成過程的認知局限,同時也受限制于目前的計算工具。

盡管現(xiàn)在在這個領域內(nèi)有很多新的方法,特別是使用深度學習(Deep Learning)方法來直接做文本到語音的轉(zhuǎn)化,而且已經(jīng)展示出來了非常自然的聲音,但是讓你的 AI 助手完全像人一樣說話仍然是一項非常具有挑戰(zhàn)性的工作。

關(guān)于作者:本文作者鄭杰文,愛丁堡大學人工智能碩士,師從國際著名語音合成專家Simon King教授。 現(xiàn)任職Rokid ALab 語音合成算法工程師,負責語音合成引擎架構(gòu)設計,后端聲學模型開發(fā)等工作。

本文轉(zhuǎn)自雷鋒網(wǎng),如需轉(zhuǎn)載請至雷鋒網(wǎng)官網(wǎng)申請授權(quán)。

責任編輯:未麗燕 來源: 雷鋒網(wǎng)
相關(guān)推薦

2024-03-15 09:06:48

HTTPSCA私鑰

2018-04-23 16:27:27

線性網(wǎng)絡語音合成自適應

2015-09-07 13:46:29

技術(shù)聯(lián)合創(chuàng)始人

2022-12-05 09:42:21

語音人工智能程序

2022-11-14 21:34:17

2016-06-23 11:48:00

Android開發(fā)

2022-08-20 17:54:37

機器人開發(fā)

2021-11-28 23:55:12

語音企業(yè)商業(yè)

2024-02-04 10:11:37

人工智能

2017-03-19 16:21:10

人工智能語音識別

2018-04-02 09:33:03

多活技術(shù)架構(gòu)運維

2011-06-01 13:05:19

Android TTS技術(shù)

2023-03-10 08:48:29

2015-09-29 10:18:22

2010-05-05 11:18:59

IT技術(shù)人

2016-08-19 01:59:22

APPAPM用戶

2017-11-29 18:16:15

高并發(fā)ERP態(tài)牛

2015-05-20 09:44:54

混合云云存儲合規(guī)

2018-02-08 10:47:19

存儲技術(shù)列存儲

2017-01-09 12:57:21

Linux
點贊
收藏

51CTO技術(shù)棧公眾號