1. 程式人生 > >【騰訊TMQ】TTS評測--方案介紹和實踐分享

【騰訊TMQ】TTS評測--方案介紹和實踐分享

導讀

語音合成(Text To Speech,TTS)技術將文字轉化為聲音,目前廣泛應用於語音助手、智慧音箱、地圖導航等場景。TTS的實現涉及到語言學、語音學的諸多複雜知識,因合成技術的區別,不同的TTS系統在準確性、自然度、清晰度、還原度等方面也有著不一樣的表現,如何從多維度綜合評價TTS系統質量成了TTS測試人員的一大挑戰。針對TTS前端、後端的存在的問題,選取TTS評測指標,制定各指標評測方法,形成了一套系統的TTS評測方案。

1 前後端問題

當前常見的TTS系統可分為前端、後端兩部分,前端完成輸入文字的歸一化、分詞、發音預測、韻律結構預測等處理,後端對聲音建模,用學習得到的聲音引數,通過聲碼器合成聲音。

由於自然語言本身的複雜性和開放性,前端處理部分難度較大,難以覆蓋所有情況,可能引入的問題舉例如下:

(1)發音錯誤,漢語中的多音字、數字、專有名詞等根據上下文的不同,發音也不一樣,語料的覆蓋不全,會導致部分字詞的發音錯誤,另外現在國際化背景下,各類中英混合語料、縮略詞、符號的存在,也為發音預測帶來了大量困難。

(2)聲調不準,中文在實際口語發音時,存在一系列複雜的的變調規則,如一/不變調,上聲變調等。這類規則的處理不當會導致合成的語音與平時發音習慣不符,聽來怪異。

(3)韻律異常,前端通過語法詞分詞、韻律詞分詞、斷句等方式在文字中插入不同程度的停頓,通過時長預測控制字詞的發音時長,分詞和斷句的錯誤會引起合成語音時的錯誤停頓,聽起來節奏不當。

後端通過訓練模型預測聲音引數,通過聲碼器(WaveNet等不在此列)合成語音波形,但是無論是聲音引數、還是聲碼器都是對實際發音過程的有損建模,無法百分百還原人聲,可能引入的問題如下:

1)清晰度差,合成的字、詞發音不清晰,近音詞區分度差;

2)還原度差,與目標說話人的音色有差異;

3)雜音,在合成語音過程中引入背景噪聲、字與字之間不流暢。

2 評測指標介紹

針對上文提到的前後端可能存在的問題,選擇如下指標來評測TTS。

2.1 發音準確性

線上語料中頻繁出現的多音字、數字、符號、夾雜英文會給TTS前端帶來很大的挑戰,對這類case的發音錯誤會給使用者帶來較差的體驗。為了評估並提升前端的正確發音的能力,建立大規模前端測試語料,通過TTS前端輸出快速驗證語料上的發音準確性。

2.2 韻律準確性

前端文字處理過程中會對文字做分詞處理和時長預估,為評估TTS停頓和發音時長的合理性,可以準備不同領域不同句式的不同情感的文字,通過眾測主觀判斷合成語音是否可接受,計算TTS韻律準確性。

2.3 字典覆蓋率

為檢查語音合成系統對漢字的覆蓋程度,建立覆蓋漢普通話不同等級的字型檔和生僻字型檔的測試語料,通過TTS前端輸出工具,檢查是否能正常處理,統計字典覆蓋率,實際評測中,因為測試發音準確性需要準備龐大語料,覆蓋了大量漢字,可以在測試發音準確性時順便發現字典覆蓋中的badcase。

2.4 字清晰度得分

採用漢語清晰度診斷押韻測試(DRT)法測試字清晰度,TTS合成DRT基本字表,覆蓋濁音、鼻音、低沉音等不同特徵的押韻字,聽應音人根據TTS讀音在問卷上選出聽到的字,最後由測試人員統計結果計算清晰度等級,詳見《GB-T13504-1992》。現有TTS合成的字清晰度較高,可以根據產品實際情況選擇是否需要評測此項。

2.5 詞清晰度得分

採用語義不可測句(Semantic Unpredictable Sentence, SUS)測試單詞清晰度,語義的不可測可以避免聽音人的經驗猜測,使評測結果更可靠。可根據產品實際情況選擇是否需要評測此項。

2.6 MOS

業界對語音的整體評測,一般是使用MOS。邀請聽音人試聽合成語音,根據分值描述,從擬人性、連貫性、韻律感等方面為語音選擇合適的分數。

3 評測方法介紹

本章詳細介紹下評測時重點關注的發音準確性評測和MOS評測。發音準確性測試的目的是評估前端發音預測能力,發現badcase,通過多輪修復和迴歸,提升系統發音準確率。

可能影響到TTS發音準確的語料型別較多,具體可細分為以下幾類:

(1)特殊讀音的姓氏:被測系統應該有能力根據上下文區別姓氏的特殊讀音,如“報仇”和“仇老五”,“仇“做為姓時應該讀為[qiu2]。

(2)數字進位制:被測系統應該按照漢語習慣對數字的進位制正確發音,如寶馬4系列的轎車需要896,500元,“896,500”應展開為“八十九萬六千五百”。

(3)年代:以年代形式出現的數字應該根據上下文區分是進位制讀法、位制讀法還是順序讀法,如中國在4000年前就開始物種馴化,中“4000”應該是進位制讀法“四千”;秦朝建立與公元前221年,中“211”應該是位制讀法“兩百二十一年”;馬克思生於1818年,中“1818”應該採用順序讀法“一八一八”。

(4)時間:被測系統對於不同的時間表示格式應該給出正確讀音,如”2017/10/27”,”23:11””5pm”等。

(5)電話:對於不同格式的電話數字應該給出正確讀音,如“0724-4356333”,“182-3123-3213”,“(+86)182-3123-3213 ”等。

(6)分數小數百分數:對於文字中常見的百分數和小數表示,應該給出正確發音,如“1/2”“2%”“0.9882”等。

(7)全形半形數字:數字符號有全形半形之分,前端系統應該能正確識別併發音

(8)符號單位:對測試材料中的符號和單位應該按照我國法定計量單位規定進行發音,一些複雜讀音的符號如“:”、“-”、“#”、“*”等需要能根據上下文選擇正確的發音。

(9)專有名詞術語:對於專有名詞和專業詞彙應該根據上下文作出正確發音,如“工尺”、“般若”等。

(10)中英文混合:新聞和日常對話中,經常會混入英文詞彙或縮寫,對於這些情景,應該能識別主場景語言,平滑切換到英文部分並正確發音。

建設語料時,如此詳的分類對於評估準確率、挖掘Badcase無額外收益,徒增工作量,因此實踐中將準確性測試語料分為多音字、數字、符號三大類分別建設。

3.1 多音字發音評測

語料建設

完備的測試用例是評測TTS前端準確性的基礎,多音字語料建設流程如下:

(1)整理收集常見多音字和多音字的讀音,建立包含不同領域文章的文字集。

(2)然後收集多音字組成的片語(包括單字詞),將片語進行分類,分為固定讀音片語和非固定讀音片語,固定讀音片語是當多音字以這個片語形式出現時,始終讀一個音;非固定讀音片語是當多音字以這個片語形式(包括單字詞)出現時,讀音不確定。

(3)最後文字集上爬取包含多音字片語的句子生成測試用例。通過固定讀音片語生成的用例自帶標註,這裡判斷句子中是否包含指定片語時,需先分詞然後判斷分詞結果是否包含片語;由非固定讀音多音字生成的用例,因為讀音不確定,還需要再通過眾測做人工標註。

根據北京理工大學的研究,現代漢語詞典中共查到1036個多音字,其中有688個多音字以單字詞的形式在人民日報語料中至少出現過一次。目前已建立的多音詞測試語料共覆蓋469個多音字的791種讀音,覆蓋包含12760個片語的語料120w句。

評測方法

合成語音後,通過聽語音來判斷髮音正確下的效率太低,實際評測過程中可直接對前端的發音預測結果進行校驗,測試語料通過TTS前端,輸出每個字的讀音和音調,對比實際輸出與期望輸出判斷對錯。

注意TTS輸出拼音時已經做過變調調整,測試時可以專門打包一個不變調的版本或者對輸出的拼音做一次變調。評測形式如下:

評測進度應該按照第一輪摸底測試、多輪迴歸測試、錯誤率高的多音字專項測試、生僻字專項測試的順序進行,不斷挖掘badcase,逐步提高TTS的多音字發音準確性。

3.2 符號發音評測

語料建設

符號類語料的建設需要考慮標點符號、單位、英文夾雜等情況,我們整理了39個可能發音的重點關注符號(:-~%)。建立語料時從文字集搜尋包含重點符號、單位、英文夾雜、其他符號的語料,分別進行評測。

評測方法

重點符號類和單位類:測試語料通過TTS前端工具,輸出歸一化結果,建立眾測標準,人工標註輸出結果是否符合預期,形式如下:

英文夾雜類:這類語料只通過前端輸出無法準確判斷對錯,需要合成語音後,聽音判斷是否自然切換,發音準確。

其他符號:剩下的這類符號如顏文字、小語種符號大概率不參與發音,而這類爬取得到的語料數量又最多,實際測試時抽樣了部分,檢查TTS是否能正常跳過此類符號不發音。

3.3 數字發音準確性評測

語料建設

數字類語料需覆蓋電話、QQ、分數小數百分數、型號數字等不同case,實際建設這部分語料時比較暴力,凡文字集中包含數字的句子均拿來做測試用例,優於數字和符號常一起出現,為避免重複標註,一個句子不同時加入數字和符號的測試語料。

評測方法

數字部分的評測方法與符號類似,為加快標註速度直接對前端歸一化輸出做判斷,而不是對測試語料進行標註後再與前端輸出結果做比較,形式如下:

3.4 MOS評測

MOS常見於各類TTS的PR文或論文中,被用於評測TTS的整體得分。因為是主觀評測,MOS在不同人群、不同時間、不同測試語料下結果波動較大,在TTS產品不斷迭代中,通過傳統的MOS評測很難反映新舊模型差異、當前模型與競品的差異。因此我們將MOS評測與兩兩比較法相結合,並引入上標錨定打分標準,使結果相對穩定。

測試語料

前端的評測通過發音準確、韻律準確等來評測,MOS評測應該專注於整體自然度,因此準備測試語料的時候儘量避開了多音字、符號、數字語料,從各領域和TTS實際應用場景摘選常規文字作為測試語料。為避免聽音人疲憊,語料數量不能太多,需要控制評測時間。

當前TTS的MOS大都高於4分,因此我們在傳統MOS五檔分值中加入了4.5分檔,打分及描述如下:

評測方法

(1)分別合成被測TTS、對照TTS的語音,並且錄製一份聲優語音混入一起測試,注意錄製時各類語音引數應保持一致;

(2)校驗上述語音是否與語料內容一致,是否存在錯誤發音;

(3)語音音量對齊;

(4) 生成眾測問卷,被測TTS、對照TTS、聲優三者語音交叉打亂;

(5)開始任務前給聽音人試聽上標下標語音,告知上下標語音的大致得分;

(6) 眾測使用者開始聽音打分,前三條語料的語音作為使用者進入狀態平穩打分標準的鋪墊;

(7)回收問卷,剔除出界次數較多的使用者資料,統計MOS最終結果。

關注騰訊移動品質中心TMQ,獲取更多測試乾貨!