曹冬玉,陶傳奇,2,3,4,郭虹靜,黃志球,2,4
1(南京航空航天大學 計算機科學與技術(shù)學院,南京 211106) 2(南京航空航天大學 高安全系統(tǒng)的軟件開發(fā)與驗證技術(shù)工信部重點實驗室,南京 211106) 3(南京大學 計算機軟件新技術(shù)國家重點實驗室,南京 210023) 4(軟件新技術(shù)與產(chǎn)業(yè)化協(xié)同創(chuàng)新中心,南京 210093)
語音識別(Automatic Speech Recognition,ASR)是將人類所發(fā)出的語音轉(zhuǎn)化為文字或符號的技術(shù),目前已成為人機交互和通信的最有效方式之一,同時,也是開啟智能時代的關(guān)鍵一步[1].隨著機器學習和人工智能的發(fā)展,語音識別軟件在科研和商業(yè)上的應用需求均在逐漸增大,例如亞馬遜的Alexa,微軟的Cortana,蘋果的Siri等.然而,語音識別這類智能軟件在快速發(fā)展的同時,缺陷問題也日益顯著.例如,BuzzFeed在2018年報道,Amazon語音助手Alexa的用戶發(fā)文,Alexa在他深夜臨睡前突然大聲笑起來.Amazon對此的回應是Alexa會錯誤地將環(huán)境噪音辨別為短語“Alexa,笑一個”,并做出響應.這樣的真實事件給用戶帶來了極其不好的使用體驗.為進一步改進語音識別軟件的質(zhì)量,對語音識別軟件的功能測試進行分析已成為亟需攻克的挑戰(zhàn).
目前對于語音識別軟件的測試需要音頻文件及其轉(zhuǎn)錄文本形式的測試用例,進而通過測試,判定識別文本是否與轉(zhuǎn)錄文本一致.然而,手動構(gòu)建這些測試用例既耗時又耗力[2].因此,對于語音識別軟件的測試,存在著測試數(shù)據(jù)不夠,測試數(shù)據(jù)場景單一,導致測試結(jié)果可信度受到影響,缺陷發(fā)現(xiàn)能力不足的問題.
在市場競爭日益激烈的情況下,用戶驅(qū)動的軟件演化更具有實際意義[3].用戶評論時效性強,更新頻繁;內(nèi)容豐富多樣,包含使用場景、缺陷報告等多種信息[4],可為智能軟件的測試數(shù)據(jù)生成和測試驗證提供重要的信息來源.通過收集用戶評論,挖掘和分析用戶評論中語音的場景信息,指導測試數(shù)據(jù)的生成,有助于輔助測試活動,提高測試人員的測試效率,及時發(fā)現(xiàn)缺陷原因.
為提高語音識別軟件的測試充分性,本文提出一種用戶評論驅(qū)動的語音測試數(shù)據(jù)生成方法TesGur(Test Speech Generation Driven by User Reviews).利用語音相關(guān)移動應用的用戶評論,從中獲取語音屬性,并分析語音屬性的組合.通過對語音種子進行語音屬性及其組合的轉(zhuǎn)換,生成測試語音,為語音識別軟件的測試人員提供了一種測試數(shù)據(jù)的擴增手段.本文的貢獻如下:
1)提出了一種從用戶評論中提取語音屬性及其組合的方法,為語音測試數(shù)據(jù)的生成提供信息指導.
2)將語音種子通過語音屬性及其組合進行變換,生成場景豐富的測試語音,提高測試充分性.
3)在3款語音識別軟件上進行實驗,驗證用戶評論驅(qū)動生成的測試語音有利于檢測語音識別軟件的錯誤行為.
本文的整理脈絡(luò)如下:第2節(jié)介紹了本文的相關(guān)工作;第3節(jié)闡述本文方法的整體思路和具體方法內(nèi)容;第4節(jié)闡述設(shè)計的實驗和分析方法;第5節(jié)展示和討論了實驗結(jié)果;第6節(jié)為本文方法的有效性威脅;最后一節(jié)總結(jié)論文.
目前,對于測試語音識別軟件的研究相對較少.其一是對于語音識別系統(tǒng)的基本識別能力進行測試.Iwama等人[5]于2019年提出了一種針對語音識別系統(tǒng)基本識別能力的測試方法,該方法根據(jù)語言模型生成測試句子;使用多個TTS(Text-To-Speech)合成器合成音頻文件;最后,識別音頻文件,將識別后的文本與語言模型生成的句子進行對比.但此方法存在結(jié)果有效性方面的威脅,如TTS模塊可能不完整,無法得知測試結(jié)果是否對其它語音識別系統(tǒng)有效.
一些學者開展了面向語音識別的白盒測試研究.Du等人提出了一個能夠系統(tǒng)生成大規(guī)模測試輸入的自動化測試框架DeepStellar[6],通過覆蓋引導生成測試用例來揭示有狀態(tài)的深度學習系統(tǒng)的缺陷.Du等人在DeepSpeech-0.3.0預訓練模型上展開實驗,表明:DeepStellar能夠根據(jù)覆蓋范圍生成具有高覆蓋率的測試用例,并有效地對基于RNN的自動語音識別系統(tǒng)進行缺陷檢測.
還有一些研究人員通過差分測試對語音識別軟件進行測試.Asyrofi等人[2]提出了使用差分測試來測試語音識別的解決方案CrossASR,它比較多個語音識別軟件的輸出,以發(fā)現(xiàn)語音識別軟件之間的錯誤行為.CrossASR以盡可能少的測試用例來發(fā)現(xiàn)故障;通過使用失敗概率預測器來挑選最有可能導致失敗測試用例的文本.與他們工作不同的是,本文通過對被測軟件進行多次測試來發(fā)現(xiàn)錯誤行為.
現(xiàn)有的軟件工程社區(qū)對于語音識別軟件的測試不多,而在人工智能社區(qū)里,一些研究者通過對語音識別系統(tǒng)的輸入進行微小擾動來生成測試用例[7-12].與這些工作不同的是,本方法從用戶的角度生成測試用例,考慮了語音識別使用的真實場景,輔助測試活動.
用戶評論具有海量、更新快、內(nèi)容多樣豐富等特點,覆蓋缺陷報告、功能請求、功能評價等多類信息,對開發(fā)和測試人員發(fā)現(xiàn)和分析缺陷問題具有重要意義.
用戶評論可以用來發(fā)現(xiàn)自動化測試工具不能識別的缺陷,提供缺陷的完整上下文信息,彌補測試工具的不足.Grano等人[13]利用機器學習分類算法挖掘與維護和測試相關(guān)的用戶評論,通過計算測試工具生成的堆棧跡中崩潰相關(guān)的文本與崩潰相關(guān)的評論文本之間的相似度,構(gòu)建用戶評論與測試堆棧跡的關(guān)聯(lián)關(guān)系,補充App崩潰發(fā)生時的上下文信息,輔助缺陷的復現(xiàn)與修復.在此基礎(chǔ)上,Pelloni等人[14]開發(fā)了一個利用用戶評論輔助App測試過程的工具BECLOMA,實現(xiàn)了用戶評論的自動爬取,缺陷相關(guān)評論的提取和分類,并將崩潰相關(guān)的用戶評論與測試工具生成的堆棧跡進行鏈接.BECLOMA工具可幫助開發(fā)人員自動抽取出與崩潰相關(guān)的用戶評論,并進一步補充堆棧跡中缺少的崩潰的完整上下文信息.
用戶評論是缺陷信息獲取的重要來源,如何利用用戶評論進一步輔助測試活動仍然面臨挑戰(zhàn).為了緩解因語音識別軟件版本更迭迅速,語音測試數(shù)據(jù)不足的問題,本文提出了一種用戶評論驅(qū)動的測試數(shù)據(jù)生成方法,為發(fā)現(xiàn)更多語音識別缺陷提供數(shù)據(jù)來源.
測試輸入的生成與輸入類型息息相關(guān),不同類型的測試數(shù)據(jù)生成方法不同.對于圖像類型的測試輸入,測試數(shù)據(jù)生成的方法較多[15-17].DeepTest[18]使用九種不同的真實圖像變換執(zhí)行貪婪搜索:改變亮度、改變對比度、平移、縮放、水平剪切、旋轉(zhuǎn)、模糊、霧天效果和雨天效果,為自動駕駛系統(tǒng)模擬不同的駕駛場景.DeepBillboard[19]生成現(xiàn)實世界中的對抗性廣告牌,可以觸發(fā)自動駕駛系統(tǒng)中的潛在轉(zhuǎn)向錯誤.為了測試生物細胞圖像的分類,Ding等人[20]構(gòu)建了生物細胞分類器的測試框架.該框架迭代地生成新的圖像,例如,通過在生物細胞圖像中添加新的或增加人工線粒體來生成新的圖像.
語音識別的測試需要處理語音輸入,語音本質(zhì)上是上下文敏感的連續(xù)數(shù)據(jù),它根據(jù)發(fā)出語音的聲音環(huán)境和發(fā)出語音的人而變化.Rusko等人[21]提出了一種利用語音合成器生成測試語音的方法,以測試識別的魯棒性.該方法是根據(jù)目標聲環(huán)境的不同,在信道轉(zhuǎn)換和噪聲添加的基礎(chǔ)上實現(xiàn).Du等人[6]考慮到背景噪聲和音量變化,設(shè)計了一組適合音頻輸入的變換.他們首先從RNN中抽象并提取了一個概率轉(zhuǎn)移模型.在此基礎(chǔ)上,定義了狀態(tài)測試標準,并用于指導有狀態(tài)深度學習系統(tǒng)的測試生成.Laptev等人[22]利用TTS(Text-To-Speech)合成器來擴增語音數(shù)據(jù).
目前,學術(shù)界對語音測試數(shù)據(jù)生成的研究較少.現(xiàn)有的測試語音生成大多依賴人工干預,缺乏系統(tǒng)化生成的指導方法.TesGur從用戶角度出發(fā),通過分析用戶評論生成自然的測試語音輸入,考慮了語音識別軟件使用的真實場景.
本節(jié)介紹了用戶驅(qū)動語音測試數(shù)據(jù)生成方法的詳細信息.圖1展示了TesGur的總體框架.通過爬取Google Play移動應用市場中語音相關(guān)的移動應用的用戶評論,進行預處理,通過語音屬性的關(guān)鍵詞獲取用戶評論中的語音屬性及其組合.依據(jù)語音屬性及其組合對語音種子進行變換,生成大量測試語音.該方法為語音識別的測試數(shù)據(jù)不足,場景單一的問題提供測試數(shù)據(jù)生成的方法,以此減少測試人員在構(gòu)造測試語音的時間消耗.
圖1 TesGur總體框架Fig.1 Framework of TesGur
移動應用市場上推出了各類智能語音相關(guān)的產(chǎn)品,例如語音搜索、語音筆記等.其用戶評論海量、結(jié)構(gòu)復雜,包含用戶對語音產(chǎn)品的需求、使用場景等信息,有利于從用戶角度挖掘語音的屬性,指導測試語音的生成.例如,用戶評論“Need to speak really clear and slow.Cannot use it for my purpose.”反映了輸入語音必須清晰且緩慢.從該用戶評論中可以得到“清晰”和“緩慢”這兩種語音屬性,同時,可以獲得這兩種語音屬性的組合信息.本部分通過Scrapy工具自動爬取這類移動應用的用戶評論,通過數(shù)據(jù)清洗和預處理,提取有關(guān)語音屬性的用戶評論進行分析.
3.1.1 清洗用戶評論
用戶提交的評論通常是非正式和多樣化的,因此,需要對爬取到的用戶評論進行數(shù)據(jù)清洗,形成統(tǒng)一的用戶評論數(shù)據(jù)集.數(shù)據(jù)清洗的過程主要包括以下步驟:
1)非英文文本和表情過濾:移動應用軟件應用于全球范圍,本工作僅對英文文本進行分析,采用Vu等人[23]提出的基于規(guī)則和英語詞典的方法進行過濾;用戶在評論中使用的表情符號對于語音屬性的提取沒有意義,通過Python中的emoji庫(1)https://pypi.org/project/emoji/識別表情符號,并利用正則表達式進行過濾.
2)縮寫和錯誤單詞改正:用戶評論通常使用不正式語言,例如用戶常將because簡寫成coz,information縮寫成info等.本文結(jié)合Gu等人[24]的工作,共收集了常見的45種單詞縮寫,對用戶評論進行還原.另外,用戶在尺寸較小的設(shè)備上輸寫評論,難免會出現(xiàn)單詞拼寫錯誤[25].PyEnchant庫(2)https://github.com/pyenchant/pyenchant可以實現(xiàn)英文拼寫錯誤單詞的檢測,并推薦可能正確的書寫形式,本文利用該庫實現(xiàn)錯誤單詞的改正.
3)過濾少于4個單詞的評論:用戶評論中包含大量單詞數(shù)量較少的評論,例如,“Good!”“identify accurately”等,這些評論數(shù)目較多,但缺乏語音屬性的信息[26],通過計算每條評論的單詞數(shù)目,過濾掉少于4個單詞的評論.
通過以上3個步驟的數(shù)據(jù)清洗,提高了原始用戶評論的數(shù)據(jù)質(zhì)量,形成了統(tǒng)一的用戶評論數(shù)據(jù)集.
3.1.2 語音屬性相關(guān)用戶評論的提取
從統(tǒng)一的用戶評論數(shù)據(jù)集中隨機選取3500條用戶評論,分析每條用戶評論中是否包含語音屬性的關(guān)鍵詞.兩名參與者參與了語音屬性的標記工作,他們是軟件工程專業(yè)的學生,有5年以上使用語音識別軟件的經(jīng)驗.為了確保在標記過程中采用相同的標準,在標注前,參與者對語音屬性出現(xiàn)的可能性進行了討論.每名參與者均需要對所有選取的用戶評論進行標記工作,當出現(xiàn)的標記不一致時,通過互相討論以確定最終的種子關(guān)鍵詞,并對所有種子關(guān)鍵詞進行分類,得到對應的語音屬性.
人工分析部分用戶評論后,需要對所有的用戶評論進行預處理.NLTK(Natural Language Toolkit)(3)http://www.nltk.org/為自然語言處理工具包,是NLP研究領(lǐng)域常用的一個Python庫,具有搜索文本、計數(shù)詞匯等功能.首先,使用NLTK包中的word_tokenize對所有的用戶評論進行分詞處理,通過空格將評論切分成單詞的組合.在分詞的基礎(chǔ)上通過pos_tag進行詞性標注,識別單詞的詞性,詞性標注是詞性還原的基本條件.利用Wordnet lemmatizer進行詞性還原,獲取單詞的原始形式,例如,將動詞的過去式或過去分詞轉(zhuǎn)換成動詞原形.進而,通過common_contexts搜索所有用戶評論中與每一類語音屬性的種子關(guān)鍵詞具有相似上下文的單詞,將這些單詞加入到關(guān)鍵詞中,擴充關(guān)鍵詞序列.最終,語音屬性被定義為6種,分別為音量、音調(diào)、音速、噪音、音長以及口音,其對應的關(guān)鍵詞如表1所示,最右列為每一類語音屬性的用戶評論例子,表示語音屬性的關(guān)鍵詞已加粗顯示.隨著用戶評論數(shù)量的逐漸增加,語音屬性及其關(guān)鍵詞會被進一步擴充.
表1 語音屬性及其關(guān)鍵詞Table 1 Speech attributes and its keywords
提取所有用戶評論中包含這些關(guān)鍵詞的評論,作為有關(guān)語音屬性的用戶評論候選集.最后,設(shè)置幾條過濾規(guī)則對候選集進行過濾,形成最終的語音屬性相關(guān)的用戶評論.過濾規(guī)則有:
1)用戶評論中包含該關(guān)鍵詞,但關(guān)鍵詞并不用來修飾語音屬性的用戶評論,例如“I will recommend this high quality voice recognition”,high強調(diào)語音識別識別能力好,并非表示語音的高低音量.但這類過濾主要集中在個別的關(guān)鍵詞上,如high、tiny、man/woman等.
2)關(guān)鍵詞有一詞多義,需要排除關(guān)鍵詞的含義并非與語音屬性相關(guān)的用戶評論,例如tempo有速度和拍子兩個含義,需要過濾掉含有tempo但表示拍子的相關(guān)用戶評論.這類過濾也主要集中個別的關(guān)鍵詞上,如tempo、situation、whisper等.
獲取有關(guān)語音屬性的所有用戶評論后,需要對其進行分析,從中獲取語音屬性的詞頻及其組合.通過獲取每一條語音屬性的詞頻來反映出所有語音屬性的討論程度,詞頻越高,說明用戶對這類語音場景的討論性越多,更需要被測試.
從用戶評論中提取出6種語音屬性,通過計算這些語音屬性在用戶評論中的詞頻,得到相應的詞頻分布,如圖2所示.在這6種語音屬性中,噪音是用戶評論中最經(jīng)常提及的語音屬性,其次是音速、音長、口音以及音量,這些語音屬性對識別結(jié)果的影響較大.音調(diào)相對其他語音屬性來說,在用戶評論中最小,僅占4.8%.測試人員可以依據(jù)各語音屬性在用戶評論中出現(xiàn)的頻率,對測試輸入進行優(yōu)先級排序,提高缺陷檢測的效率.
圖2 語音屬性的詞頻分布Fig.2 Word frequency distribution of speech attributes
從所有語音屬性相關(guān)的用戶評論中獲取語音屬性的關(guān)聯(lián)關(guān)系,對語音屬性進行組合,進而生成組合后的測試語音.語音屬性的組合是指該語音同時包含多種語音屬性的特性,例如:{口音,音長}這對語音屬性的組合是指輸入為一段有地方口音且語音時長較長的一段語音.通過對語音種子進行語音屬性組合上的數(shù)據(jù)蛻變,從而生成測試語音,模擬測試用例的場景信息.生成語音屬性組合的主要操作流程如算法1所示.通過遍歷每一條評論的每一個單詞是否與關(guān)鍵詞匹配,如果匹配則記錄對應語音屬性.對于每一條評論,可能包含一條語音屬性的多個關(guān)鍵詞,但只記錄一條語音屬性.
算法1.語音屬性的關(guān)聯(lián)關(guān)系生成算法
輸入:所有語音屬性相關(guān)的用戶評論user_reviews;語音屬性及關(guān)鍵詞的字典attribute_dict,鍵為語音屬性attribute,值為對應的關(guān)鍵詞列表keyword_list
輸出:語音屬性組合attribute_combination
BEGIN
1. attribute_all = []//用于存儲所有用戶評論語音屬性的組合
2.foreachrevinuser_reviews//遍歷語音屬性相關(guān)的用戶評論
3. attribute_rev = []//用于存放每條用戶評論語音屬性的組合
4.foreachwordinwordsegment(eachrev)
5.forattribute,keyword_listinattribute_dict.items()
6.ifeachwordinkeyword_listthen
7. attribute_rev.append (attribute)
//如果用戶評論中包含語音屬性對應的關(guān)鍵詞,則保存該語音屬性
8.endif
9.endfor
10.endfor
11. attribute_all.append(remove_dup(attribute_rev))
//對每條評論根據(jù)關(guān)鍵詞得到的語音屬性進行去重操作
12.endfor
13. attribute_combination = Apriori(attribute_all)//通過Apriori算法根據(jù)所有語音屬性的組合獲取語音屬性之間的關(guān)聯(lián)關(guān)系
END
return attribute_combination
由于多種語音屬性的組合空間很大,提取用戶評論中語音屬性的關(guān)聯(lián)關(guān)系來對語音屬性進行組合.TesGur采用Apriori算法提取用戶評論中的語音屬性的頻繁項集,從而構(gòu)建語音屬性的關(guān)聯(lián)關(guān)系庫,降低組合空間.Apriori算法是一種挖掘頻繁項集和關(guān)聯(lián)規(guī)則的數(shù)據(jù)挖掘算法,利用頻繁項集的先驗性質(zhì),通過逐層搜索的方式迭代地尋找數(shù)據(jù)中所有項集的關(guān)系.本文將每一種語音屬性對應一個項,0個或多種語音屬性的集合,作為項集X,X={r1,r2,r3,…},每一條評論文本都是項的集合,語音屬性的關(guān)聯(lián)規(guī)則為ri→rj.通過兩個重要的度量值來衡量語音屬性的關(guān)聯(lián)關(guān)系,支持度(support)表示評論數(shù)據(jù)集中同時包含ri和rj的評論數(shù)與所有評論數(shù)之比,置信度(confidence)表示包含ri和rj的評論數(shù)與包含ri的評論數(shù)之比,設(shè)置最小置信閾值為80%,最小支持閾值為20%.最終,語音屬性的頻繁項集以集合的方式呈現(xiàn).表2為通過對用戶評論進行分析所得到語音屬性的組合,共計10組.
表2 語音屬性的組合Table 2 Combinations of speech attributes
對于傳統(tǒng)軟件的組合測試,滿足k路組合覆蓋準則的測試用例數(shù)目小于所有種子測試用例上進行k個數(shù)據(jù)蛻變的所有組合數(shù)量.而對于語音識別這種智能軟件,數(shù)據(jù)蛻變是可交換的,可關(guān)聯(lián)的和冪等的.因此,滿足組合覆蓋準則的測試用例數(shù)量可以少得多,表明智能軟件測試數(shù)據(jù)生成的必要性.
對于不同的語音屬性,為了保證生成的語音更具有真實性,需要通過不同的方法對語音種子進行轉(zhuǎn)換,生成測試數(shù)據(jù).音量、音調(diào)以及音速是音頻的基本屬性,本文通過利用SoX(4)http://sox.sourceforge.net/sox.html對音頻進行變換,改變其中一個語音屬性時,應不改變其他語音屬性.SoX可以讀取和寫入常見格式的音頻文件,進而選擇性地加入聲音效果.對于音長的語音屬性,本文通過隨機順序疊加隨機數(shù)量的語音種子,由于本文測試的是一句話語音識別效果,因此需要保證疊加后語音的長度不超過60s.噪聲環(huán)境復雜多樣,所以環(huán)境噪聲的轉(zhuǎn)換最為復雜,本文使用audiomentations庫(5)https://github.com/iver56/audiomentations中提供的3種方式進行變換,其一是隨機添加高斯噪聲,其二是添加短時噪聲,其三是添加背景噪音.口音對于語音識別軟件的挑戰(zhàn)較大,為了保證測試數(shù)據(jù)的真實性和有效性,本文將6個國家的口音數(shù)據(jù)作為測試數(shù)據(jù),6個國家分別為韓國、中國、西班牙、越南、阿拉伯和北印度.每個國家設(shè)置兩名發(fā)音人.
對于語音屬性的組合,對一條音頻連續(xù)進行兩次單獨變換即可.對語音的一次變換是1-way組合完備,對語音進行組合變換是2-way組合完備,因此,本文提出的TesGur方法滿足2-way組合覆蓋準則.
本文使用自然語言處理相關(guān)技術(shù)對用戶評論進行預處理,獲取語音相關(guān)的用戶評論,進而提取語音屬性及其組合,對語音種子進行數(shù)據(jù)蛻變生成語音測試數(shù)據(jù).實驗的目的是驗證通過語音相關(guān)移動應用的用戶評論生成的測試數(shù)據(jù)應用于語音識別測試的有效性.
實驗設(shè)計主要為以下3個研究問題:
RQ1:用戶評論驅(qū)動生成的語音測試數(shù)據(jù)應用于語音識別軟件的缺陷檢測能力如何?
RQ2:基于用戶評論組合語音屬性生成的測試語音,識別錯誤率提高了多少?
RQ3:與語音屬性隨機組合對比,用戶評論驅(qū)動的語音屬性組合方法能否提高識別錯誤率?
4.1.1 用戶評論數(shù)據(jù)集的構(gòu)建
爬取移動應用商店Google Play Store中5個有關(guān)語音的移動應用的用戶評論,這5個移動應用下載量較高,上線了一定時間并且有充足的用戶評論.選取提交時間范圍為移動應用投入使用至2021年9月的用戶評論文本,評論總數(shù)共計37721條,具體評論數(shù)目如表3所示.
表3 語音相關(guān)移動應用APP的用戶評論數(shù)目Table 3 Number of user reviews for speech-related mobile apps
4.1.2 語音數(shù)據(jù)集
為了驗證用戶評論驅(qū)動生成的語音測試數(shù)據(jù)的檢錯能力,本文使用Mozilla發(fā)布的開源語音識別數(shù)據(jù)集項目Common Voice[29],它是當前全球最大的人類語音數(shù)據(jù)集.
實驗1隨機選擇200條真實的英語語音數(shù)據(jù),并保證識別結(jié)果準確,實驗2隨機選擇其中的100條語音數(shù)據(jù)進行組合語音屬性的實驗驗證.
對于口音的轉(zhuǎn)換,本文選擇使用L2-ARCTIC語料庫[30],它是一個非母語的英語演講集.本工作選擇了6個地區(qū)中帶口音的兩名演講者的語音各200條,共計2400條語音用于對口音的語音屬性進行測試.
對于噪音語音屬性,本工作使用Signal Processing Information Base的noiseX-92噪聲庫,時長低于1秒為短時噪聲,共計51個,剩余噪聲作為背景噪聲,共計881個.
為了驗證通過用戶評論生成的測試語音對各語音識別軟件測試的有效性,本文選擇3款國內(nèi)先進且應用廣泛的語音識別軟件進行實驗,分別是百度、訊飛和阿里云語音識別軟件.訊飛被國家科技部列入新一代人工智能開放創(chuàng)新平臺名單,為同行業(yè)唯一.百度語音識別采用流式端到端語音語言一體化建模算法,支持手機應用語音交互、語音內(nèi)容分析等多功能.阿里云語音識別使用端到端的語音識別模型,支持客服、直播、會議等多個場景.
為了評估基于語音屬性及其組合生成的測試語音應用于語音識別功能時的檢錯能力,本文通過單詞錯誤率來衡量識別錯誤率.單詞錯誤率WER(Word Error Ratio)是常用于衡量語音識別準確率的度量指標,計算將文本A編輯成文本B需要的最少變動次數(shù),不考慮語義.計算生成測試語音的識別結(jié)果在語音種子識別結(jié)果基礎(chǔ)上的插入詞(記為I)、替換詞(記為S)和刪除詞(記為D)的個數(shù),語音種子識別結(jié)果詞序列的個數(shù)記為N,WER的公式如下:
對于語音的識別錯誤率,本工作定義如下:
在公式中,分子為指標WER大于0的生成測試語音數(shù)目,當WER為0時表明,兩個結(jié)果完全一致,當WER>0時,表明兩個結(jié)果不一致.分母為所有生成測試語音的總數(shù)目.
為驗證用戶評論驅(qū)動生成測試語音有利于檢測出語音識別軟件中的缺陷,實驗1選取200個語音種子,通過6種語音屬性共生成測試語音23400條.其中,音量、音調(diào)、音速以及音長分別生成3000條,噪音由于有3種變換方式,生成9000條,口音設(shè)置了6個國家,每個國家兩名發(fā)音人,故生成了2400條.各語音屬性的變換均能保證生成測試語音的真實有效.
由于口音使用單獨的測試數(shù)據(jù)集(具體介紹在4.1.2節(jié)),因此,口音的語音屬性將單獨分析.對于音量、音調(diào)、音速、噪音和音長這5種語音屬性,圖3展示了通過這五種語音屬性變換生成的測試語音在3款語音識別軟件上的識別錯誤率情況.
圖3 語音屬性-識別錯誤率圖Fig.3 Speech attribute-recognition error rate
由于選取的語音種子識別結(jié)果正確,因此對于變換前的測試數(shù)據(jù),識別錯誤率為0.將通過6種語音屬性進行變換后生成的測試語音輸入至這3款語音識別軟件中,均出現(xiàn)了識別錯誤.識別錯誤率從小到大依次為音量、音調(diào)、音速、噪音和音長,其中,阿里云音速的識別錯誤率相比于音調(diào)較低一些.音量的識別錯誤率最低,表明現(xiàn)有的語音識別軟件對于音量變化的測試語音能有很好的識別能力;音長的識別錯誤率最高達到0.75左右,遠高于其他語音屬性,表明當前語音識別軟件對于長時間的語音識別效果較差,很容易出現(xiàn)識別錯誤.
3款語音識別的識別錯誤率從低到高依次為阿里云、訊飛和百度.盡管阿里云的識別錯誤率最低,但音長的錯誤率仍然達到了0.33.訊飛語音識別音長的識別錯誤率達到0.759,音量、音調(diào)、音速錯誤率均較低,在0.15以下.百度語音識別對于5種語音屬性的識別錯誤率最高,其音長錯誤率達到0.769,也就是說,基于音長屬性生成的3000條測試語音中,共有2307條識別錯誤;音調(diào)、音速以及噪音的錯誤率也達到0.29左右,表明基于音調(diào)和音速屬性生成的3000條測試語音中,共有870條識別錯誤,基于噪音屬性生成的9000條測試語音中,共有2610條識別錯誤.可以得出,在識別準確的語音種子上生成的測試語音均降低了各語音識別軟件的識別準確率.
對于口音的語音屬性,測試數(shù)據(jù)為來自6個國家發(fā)言人的語音數(shù)據(jù).百度、訊飛以及阿里云語音識別對于6個地區(qū)的口音識別錯誤率平均值分別為0.67,0.57,0.39,三者對于口音的語音屬性相對于其他語音屬性來說,識別錯誤率較高,可見通過不同口音的測試語音可以有效發(fā)現(xiàn)語音識別軟件的不足.
圖4為3個語音識別軟件對于口音屬性的測試結(jié)果,橫坐標為6個國家,縱坐標為識別錯誤率.從圖中可知,越南和阿拉伯地區(qū)的口音識別錯誤率相對于其他地區(qū)較高,表明3款語音識別對于這兩個國家的口音均沒有較強的識別能力.對于百度語音識別,中國、越南、阿拉伯地區(qū)的口音識別錯誤率均較高,其中,中國地區(qū)的識別錯誤率達到0.7125,表明在400個測試數(shù)據(jù)中,共有285條識別結(jié)果出現(xiàn)錯誤;訊飛語音識別對各地區(qū)的錯誤率波動較小,均在0.57左右,表明含口音的測試數(shù)據(jù)輸入至訊飛語音識別中,有超過一半的測試數(shù)據(jù)出現(xiàn)了錯誤;阿里云語音識別對于北印度地區(qū)的口音識別錯誤率最低,僅達到0.26.因此,不同的語音識別軟件對于不同口音的測試數(shù)據(jù)識別效果不同,識別錯誤率較高的語音識別軟件需要增加相關(guān)的語音訓練數(shù)據(jù)或修改模型結(jié)構(gòu)來提高軟件對這類語音的識別能力.進一步表明,從用戶評論中提出口音這一語音屬性對于語音識別軟件測試的有效性和必要性.
圖4 國家-口音識別錯誤率圖Fig.4 Country-accent recognition error rate
為驗證通過用戶評論對語音屬性進行組合生成的測試語音能夠提高識別錯誤率,實驗選取100個測試結(jié)果正確的語音種子.對于音量、音調(diào)、音速和音長的語音屬性,每條測試數(shù)據(jù)分別進行5次變換;對于噪音的語音屬性,共3種變換,每種變換生成2個,共生成6個變換;對于口音的語音屬性,選擇6個地區(qū)的口音.因此,對種語音屬性進行變換共生成3200條測試數(shù)據(jù).對于用戶評論中獲取的10種語音屬性組合,共生成組合后的測試語音共計29600條.
將所有測試數(shù)據(jù)輸入到3款語音識別軟件中,分析對語音屬性組合而生成的測試語音的識別能力.表4為3種語音識別軟件語音屬性組合的測試結(jié)果,行標簽為用戶評論中獲取的語音屬性組合,列標簽表示各語音識別軟件的識別錯誤率,語音屬性1和2下方的數(shù)字表示組合后的識別錯誤率相對于單獨語音屬性的變化值.從表中可以清晰地發(fā)現(xiàn),組合后的識別錯誤率均有所提升.
表4 語音屬性組合的測試結(jié)果Table 4 Test results of speech attribute combinations
對于阿里云語音識別,音長的識別錯誤率為0.38,口音的識別錯誤率為0.382,但當音長和口音組合后,識別錯誤率達到0.968,逼近100%,即,基于音長屬性生成的500條測試語音中包含190個識別錯誤,600條含口音的測試語音包含230條錯誤,但當兩者組合后生成的3000條語音中,錯誤識別數(shù)目達到2904條,進一步表明組合后生成的測試語音可以有效檢測出語音識別軟件的錯誤.
將組合語音屬性生成的測試語音輸入至百度語音識別后,相對于單獨語音屬性生成的測試語音,識別錯誤率音均有了提升.除了口音與音量的組合,比口音的識別錯誤率低了0.015.經(jīng)分析可知,當口音的語音增大音量后,能識別準確,而減小音量的仍不能識別準確,因此,組合后的識別錯誤率反而降低.
在語音屬性組合后,訊飛語音識別的識別錯誤率相對于單個語音屬性有所提升,其中,有關(guān)音長的組合錯誤率均很高.
通過計算語音屬性組合后識別錯誤率的變化值,可以發(fā)現(xiàn)通過用戶評論對語音屬性進行組合生成的測試語音能顯著提高識別錯誤率.
本文將從用戶評論中獲取的語音屬性組合與隨機組合進行比較.隨機組合的方法是從6種語音屬性中選擇2種語音屬性構(gòu)成一種語音屬性組合,共生成10種語音屬性組合,隨機組合了5次.
圖5為百度語音識別的對比實驗結(jié)果,橫坐標為本文方法和其他5種隨機組合,縱坐標為識別錯誤率,圖中三角形表示均值,中間線表示中值.圖中顯示,從用戶評論中提取語音屬性的組合方法TesGur,識別錯誤率相對于其他隨機組合較高,表明通過用戶評論中語音屬性的組合生成的測試數(shù)據(jù)比隨機組合更能檢測到語音識別軟件的錯誤行為.對于隨機組合1來說,識別錯誤率的整體分布均低于TesGur.隨機組合4的最小值及均值均低于TesGur.
圖5 對比實驗結(jié)果(百度語音識別)Fig.5 Comparative experimental result(Baidu ASR)
阿里云語音識別的對比實驗結(jié)果如圖6所示.從用戶評論中提取組合的方法在識別錯誤率中最高,對于隨機組合2和隨機組合4來說,雖然最大值與TesGur相近似,但最小值低于TesGur,且隨機組合4的中值和均值也低于TesGur.
圖6 對比實驗結(jié)果(阿里云語音識別)Fig.6 Comparative experimental result(Ali Cloud ASR)
訊飛語音識別的對比實驗結(jié)果如圖7所示.TesGur方法在識別錯誤率中最小值、最大值以及均值都是最高.對于隨機組合4來說,雖然均值、中位值與TesGur相近似,但最小值低于TesGur.對于隨機組合5,除了中值與TesGur近似,其余數(shù)值均比TesGur低.
圖7 對比實驗結(jié)果(訊飛語音識別)Fig.7 Comparative experimental result(iFlytek ASR)
在3個語音識別軟件上的驗證結(jié)果表明,從用戶評論中提取語音屬性組合的方法比隨機組合的方法識別錯誤率高,驗證了通過用戶評論生成語音屬性組合生成的測試數(shù)據(jù)的有效性,一定程度上提高了識別錯誤率.
在本文方法實施過程中對有效性存在威脅的因素主要體現(xiàn)在以下方面.
1)本文只提取了選取用戶評論中存在的6種語音屬性,這6種語音屬性一定程度上代表了目前大部分語音識別軟件的不足點,均具有測試的必要性.隨著技術(shù)進步,語音識別軟件版本更迭,用戶評論不斷更新,其他語音屬性在用戶評論中被提起的占比會越來越大.因此,本方法可隨時間的更迭不斷更新與擴展.
2)本文在提取語音屬性的用戶評論時,部分步驟使用了手工分析的方法,盡管一定程度上保證了語音屬性相關(guān)評論提取的準確性,但手動分析耗時低效.下一步,我們將研究自動化的方法提取語音屬性的相關(guān)評論.
3)考慮到實驗的可行性,本文未能獲取到3款語音識別軟件的用戶評論,故使用了語音相關(guān)移動應用的評論.本文提出的方法可以推廣至能獲取用戶評論的語音類產(chǎn)品,根據(jù)產(chǎn)品用戶評論生成的測試數(shù)據(jù)更具有針對性,而本文提出的語音屬性更具有通用性.
針對語音識別測試數(shù)據(jù)不足的問題,本文提出了一種用戶評論驅(qū)動的語音測試數(shù)據(jù)生成方法,通過分析語音相關(guān)應用的用戶評論,獲取語音屬性及其組合,對語音種子進行變換,生成場景豐富的測試語音.通過在百度、阿里云以及訊飛3款語音識別軟件上進行實驗,表明基于用戶評論生成的測試語音可以有效檢測出語音識別軟件的錯誤行為,減少了測試人員構(gòu)造測試數(shù)據(jù)的時間消耗.