電腦合成人聲的難度在哪裡,為什麼現在的發聲軟體如vocaloid製作的聲音遠不如真人?
為什麼vocaloid還需要真人作為音源?還有接近人耳的聲音識別是否和人臉識別一樣對於人工智慧來說也有極大的難度?不同人的聲音是否能用電腦模擬出來?
謝 @李嘉婧邀請。
題主其實問了兩個問題,一個是語音識別,『接近人耳的聲音識別是否和人臉識別一樣對於人工智慧來說也有極大的難度?』,一個是語音合成『為什麼vocaloid還需要真人作為音源?不同人的聲音是否能用電腦模擬出來?』。
就語音識別而言,目前的系統(包括深度學習)面臨的挑戰還很大。
一個常見的問題就是未知環境噪音。人通常通過雙耳定位和大腦中的注意機制,將感興趣的音源從嘈雜的背景中分離出去,這也是為什麼在嘈雜的街頭我們可以和熟人談笑風生。可以想像,如果我們站在嘈雜的街頭,而熟人在電話另一端的時候(甚至另一端也有嘈雜的背景音),聽清對方說什麼就成了大問題。(可是現在學術界最大的公開語音識別數據集就是通過電話採集的,並且沒有控制背景雜訊)
其次,在噪音之外,口音也是一個不小的問題。就美式英語而言,對do這個詞的發音就五花八門。兩種常見的口音分別是/du:/(也就是我們英語課本里的音標)和/dju:/(類似於dew/due的發音)。通常這種發音混淆可以用語言模型(language model)做消歧義,但這個現象的存在大大影響了語音模型(acoustic model)的質量。
再次,一個不常見、但嚴重影響語音識別系統輸出可讀性的問題,是未知辭彙(Out-of-Vocabulary Words, OOV)。想像你聽到這樣一句話:
『yang3 hua4 er4 qing1是一種自然界常見的化合物,是各種碳基生命生化反應的重要參與反應物或生成物。』
有一定化學基礎的同學,通過『常見化合物』和『參與生化反應』兩個線索,結合讀音就能猜到這個詞是『氧化二氫』,而現有的語音識別系統做不到這一點。事實上,大部分語音識別系統是從前往後進行語音識別的(嚴格來說,這只是大部分first-pass systems),所以像這樣一開頭就遇到OOV的情況,通常會嚴重影響系統對整句的理解(參見Viterbi Algorithm)。
最後,在對話語音(conversational speech)中,我們會不自然地停頓、重複、重新說一句話或一個詞、糾正自己,對這樣的語音的識別和理解是更具挑戰的問題。
而語音合成,個人認為,是一個更複雜的問題。
簡單而言,想得到更真實的、類似人生的語音合成,主要的做法還是以錄音為基礎,將音節拆分出來後,根據需要合成語音的文本進行『縫合』和平滑。直接數碼合成人聲非常困難,因為人的發聲器官的複雜性(通常說話用到了聲帶、口型、鼻、牙齒、舌頭、小舌等),導致發音中諧波成分非常複雜,想要精確通過合成復現一個自然的人聲,往往不如直接採集來得方便。
早期的這種基於採樣的系統會出現兩種顯而易見的問題:
1. 『縫合』的地方連接不完美,能聽出音節之間的異常(雜音或停頓等);
2. 合成的語音非常機械化、沒有情感,最簡陋的是每次念同一個發音都是同一段錄音(想想現在大部分機場、火車站、銀行使用的自動廣播系統,尤其是報數字的部分)。
語音合成的研究者在平滑的這個問題上下了很大功夫,所以現在我們可以聽到Bing Translator的朗讀功能已經比較自然了(所以Google Translate讀出來很可笑的很多文字序列在Bing那就不太好用)。此外,除了簡單的平滑,現在的語音合成系統在連讀(尤其是英語等口語中稍少有嚴格詞邊界的語言)、邏輯重音、語調等方面,都有了長足的進步。不誇張地說,如果忽略語音識別的瑕疵,現在的語音合成已經可以粗略地完成電影中『錄下一個人念一段話的音頻,就可以用這個人的聲音說任何話』的工作了。
但是這顯然不夠——說話沒那麼簡單。雖然,語音合成系統通常完成的是對人類而言最為簡單的朗讀(相比『有感情地朗讀』而言簡單太多了),但我們在讀一段話的時候做了非常複雜的情感分析。比如,
『北京(Beijing),簡稱京,中華人民共和國首都、直轄市、國家中心城市,中國的政治、文化中心,全國重要的交通樞紐和最大空港,國家經濟的決策和管理中心,是中華人民共和國中央人民政府和全國人民代表大會的辦公所在地。』[1]
這段話里,如果每個詞都加重就會很奇怪,而哪裡加重就需要對文本的理解。從文本我們可以看出這是對北京的介紹,所以自然和『北京』這個主體相關的內容應該得到強調,而相應地,和『中國』有關的內容可能就會弱讀或者加速讀。經過語義分析、命名實體識別(NER)、共引用去淆(co-reference resolution)等一系列人類已經幾乎作為第二天性的複雜處理,我們可能得到這樣的重音標註,另外根據人的呼吸規律,會得到更自然的停頓:
『{{北京}} -(Beijing)- ,簡稱{{京}}, --- {中華人民共和國}{{首都}}、 - {{直轄市}}、 - {{國家中心城市}},中國的{{政治、文化}}中心,--- 全國重要的{{交通樞紐}}和{{最大空港}},--- 國家經濟的{{決策和管理中心}},--- 是中華人民共和國{{中央人民政府}} - 和{{全國人民代表大會}}的{辦公所在地}。-----』
其中,{{}}代表重讀,{}是次重,---代表長短不同的停頓。除了重讀外,可以注意到不是所有的逗號都會獲得等同長度的停頓(視分割內容而定),而且也不是沒有標點就一定要一口氣讀完。
最麻煩的是,合成人聲很難有一個自動化、數值化的衡量標準,這也一定程度上影響了這方面研究的迅速發展。作為人類,我們在語義理解、語氣控制等方面受到了長期訓練,但這一過程很難量化成一個具體的標準。這方面的研究還有待領域大牛的推進,前景應該仍然非常廣闊。
參考資料[1] 北京_百度百科
不…首先vocaloid是唱歌用的,要模擬說話還有很長一段路,也就是說vocaloid和題主的問題沒有太大關聯,我猜。
我還是擅長vocaloid相關問題一點…二者的區別在於人聲有著更細微的變化和瑕疵,以及更好的銜接。合成音都一股電音味,電音的原理就是減少相對音高變化,且錄入的聲音都經過了處理,需要的風格不同音高微調也不同,錄音者也需要在錄音時不摻雜感情。不過這一點是我推理的,我也在糾結。像前面的回答說的,在平滑上需要下很大功夫,這直接導致感情被淡化。
銜接…稍等我去看看隔壁關於vocaloid發聲機制的回答。目前採用的也基本上是淡入淡出,不過像utau連續音就避免了這個弊端。沒有太多了解,不作深入。
語音識別方面不曾了解,不答。
合成不同人的聲音,如果是單純的「不同聲音」,那調整參數就可以做到,就像vocaloid里的參數一樣。但如果是模仿特定的聲音就很難做到了,人的發音原理以目前的技術來說連模仿都很難,除了一點點的嘗試,沒有辦法總結出一套模仿的原理。
改日補充…我寫了什麼
瀉藥,乍一看以為我能答,後來發現此問重點不是VOCALOID而是人聲合成,我先前排坐等大牛。
先說好,以下這句話是瞎猜:
要憑空造人聲還不如找一個人錄個模板來得容易,所以乾脆採樣了。
這句話不針對VOCALOID也不一定適用(萬一更複雜呢)
————————陰陽割昏曉————————
建議閱讀:微軟的 Cortana 語音助手說話語調極為逼真像人,這是怎麼做到的? - 知乎用戶的回答
這個是國內某知名廠商某飛給某企業內供介面生成的,全部由文字轉換語音,
非常逼真:來體驗一下:試聽地址:http://vocaroo.com/media_command.php?media=s1tw9CATFwTlcommand=download_mp3
台詞:
也許不只是相貌,聲音也有恐怖谷?
單位組織合唱,拿到譜子不會唱,樂譜是有聲部的!您知道有什麼軟體可以輸入樂譜就自動用合成的人聲唱出來,給我這樣不識譜的人學唱的嗎
謝邀。
如果只是 Ah 或者 Oh 這樣的音,或許也不會太複雜,至少可以做到目前對弦樂的模擬程度。
然而一旦有複雜的歌詞,那發音就是唇、舌、齒、聲帶等的綜合作用,非常複雜。如果要完全物理建模合成,那就更複雜,先要把人的發聲原理完全搞清楚,再建立起物理模型。恐怕現有計算機的計算能力也還不夠。
其他對於唱歌而言,就跟弦樂為什麼難模擬是一樣的。比如滑音等等,在使用這些技巧的時候,音色無時無刻不在變化。
前兩天帶我們學校夏令營去科大訊飛參觀,已經有合成明星聲音出來,語氣語調聲線音質都不錯,不過也可能是展示的時候就是取了效果最好的兩段。
在國內語音方面做的最好的應該是訊飛吧,題主可以自己去看看他們產品。
語音合成引擎_語音引擎 ,這是他們語音合成的介紹。
還有他們的語音識別技術也很棒,語音輸入法體現出來的語音識別水平比微信、UC等語音功能不知道高到哪裡去了,速度準確率都很好了,還能識別方言。
強行硬廣了一波,不會被禁言吧。推薦閱讀: