AI組做甚麼知多少

  • 5637
  • 0

今天來簡單介紹一下,2018年 AI組接觸的系統。

中文文字轉語音(TTS)系統

中文文字轉語音系統,是要讓電腦去學習如何將輸入的文字轉成人聲並唸出來。以下將大概說明整個系統要做的事情。

為了要讓機器知道文字要怎麼唸,要將文字轉成機器能處理的音標。首先會碰到的問題是,中文文章不像英文文章中詞和詞之間會以空格分開,因此要利用辭典和文法規則,將文章分段、斷句,然後斷詞,斷好詞後要對照辭典,標上發音。然而一般的文章中,會有許多無法單靠辭典決定的發音,像是數字(如1000要唸「一千」還是「一零零零」)、特殊標記(如2-3是「二比三」、「二到3」還是「二減三」),這些都要靠前後文才能決定,所以請公司的同仁們針對這些讀法不確定的字詞進行人工標記,做了一個標記工具,完成一個小型的資料庫,讓電腦去學習如何參考前後文,標出最有可能的發音。

標完發音後就可以進行語音的合成。然而只有發音的音標是不夠的,語音還包含了音色、音高、韻律,這些只能夠依靠資料庫讓電腦去學的參數,為此我們另外錄製了一位男主播和女主播的聲音,做成資料庫。這些聲音同樣也要標上對應的發音,這部分先由電腦自動標記,再進行人工的邊界修正,讓音標能夠對應到一段語音。對於語音訊號會要再轉換成pitch和mgc參數,分別是代表一段語音的音高和音色,再讓電腦去學音高和音色,而不是直接讓電腦學原始的語音訊號。

由於每個人每次唸同樣的發音所發出語音訊號不會完全一樣,且會受前後發音的影響,因此在標記發音時會記錄到前後的發音,再讓電腦將對相似的訊號進行分段,然後對所有的分段後的語音的pitch和mgc的進行統計,得到參數的機率分布。

從文字得到發音後,要再預估出發音的總長度,以及這個發中每個分段的長度。再用分段和長度的資訊,從先前統計的資料中,得到不同時間點上每個發音所對應到一連串的參數的機率分布的參數。再從這一串機率分布中找到一組機率最高且連續的參數。最後再把參數放入濾波器中,產生我們要的聲音。

由於資料量的限制,我們目前先用了原本陶小姐的舊系統,並進行了語者調適,將陶小姐的聲音轉到男主播的聲音。這部分是將陶小姐的聲音的機率分布進行線性轉換,調整到男主播的機率分布。

另一方面也建立了使用神經網路語音合成系統,準備用來取代取代傳統決策樹的舊系統。傳統決策樹是利用二分法將資料分群,再進行統計。在這種分法中,會因為分到最後資料太少,而學不到一些跨群的特性,同時也需要非常大量的資料,但較快速且穩定。使用神經網路來取代決策樹,最大的優點在於可以從所有的資料中學到跨群的特性,可以減少資料量,但缺點是運算較吃資源,且因為所有東西都被包在黑盒子中不易除錯,好壞取決於資料庫的乾淨程度。
 

寫作輔助系統

是自然語言處理現階段主要項目是,把編輯/改稿過程中重複性高的任務自動處理或協助人更為快速完成。

版本1.0已上線,提供直橫排轉換、統一用詞替代及標點符號標準化等功能。

版本2.0針對拼音錯別字。方法上大有區別:1.0用人工整理出的規則判斷(rule-based),2.0採取機器學習(Machine Learning),就是Neural Machine Translation,是一種基於深度學習的序列轉換。

深度學習需要巨量的資料(~百萬句)調整大量的參數,除了演算法本身,資料成為第二個重點。原則上資料包含的範圍(scope)與分配(distribution)應反映(representative)系統上線後所預測的才能判斷得準。本項目採取聯合報一年改過記錄,篩選出品質高又包含本系統應處理範圍的糾正。(改過記錄牽涉到的範圍很廣,有內容增減、 贅字刪除、符號改正、數字轉換、語言標準化等) 除此之外還有大量人工偽造錯誤資料,用勘誤表把聯合報正確的句子添錯,以便讓機器學到更多種糾正情況,也希望由此擴大普遍性(generalize),指處理訓練時未見過的錯字或情況。

系統都以API方式提供服務,這樣集中資源才能及時更新、糾正規則與演算法或記錄使用情況。版本2.0因為大量浮點數運算,用CPU跑latency太遲,因此用GPU的伺服器也算是本公司首次,而未來慢慢增加的環境變化。

資訊檢索系統

在傳統的資訊檢索系統中,常以查詢(query)與文件(document)中詞(term)的匹配程度來計算查詢與文件的相關性,也就是透過索引詞在文件中的出現(完全匹配; exact match)與否或統計詞頻方式來排名與文件的相似,如BM25。但是此種方式忽略了查詢與文本間存在的許多語意關係。 隨近年深度學習於自然語言處理領域的廣泛應用,許多研究嘗試將查詢與文本映射至一個向量空間,透過計算兩個向量的相似值表示兩者的匹配程度。 通常此種方式以詞(word)或n-gram character 為單位,詞向量可能為pre-trained word embedding 或在訓練模型的過程中不斷被更新。 將查詢與文件分別轉換成詞向量序列後,經由CNN或LSTM等神經網路,將維度降低分別形成一個單一向量表示查詢與文件,最後經由相似計算兩向量在語意上的相似。

近年,有學者提出,查詢與文件的匹配程度應由索引詞在文件中的出現與否(Local model)以及兩者個語意關係(Distributed model)共同決定,因此他提出了一個模型將兩種模型一同訓練(模型如下圖所示)。 此種模型可以解決語意模型中對於稀有字查詢表現不佳的問題。 local model的輸入分別對查詢與文件以m維的one-hot encoding表示,m即vocabulary的大小。 再形成一的矩陣,獲得每個索引詞在文件中的完全匹配資訊,而最後再將此輸入矩陣透過convolution抽取特徵並形成一個單一向量。 而Distributed model作法同上述語意匹配模型。經由實驗證明,結合兩種模型表現確實較一般語意匹配模型更佳。

參考資源
Learning to Match using Local and Distributed Representations of Text for Web Search

斯文 2018/10/23
Email: sven.ri@udngroup.com
歡迎交流..