淺談?wù)Z音測試方案(一)

現(xiàn)狀

人與之間通過聲音來直接溝通交流,人與機(jī)器之間的交流也漸漸脫離了傳統(tǒng)的溝通模式,進(jìn)入了語音交流時(shí)代。語音交流更是拉近了人和機(jī)器之間情感,現(xiàn)在的語音技術(shù)就是為了使機(jī)器更好的識別人聲、并合成接近人類的聲音以達(dá)到更好的交流。

目前國內(nèi)研究語音相關(guān)的團(tuán)隊(duì)主要包括科研院所、語音技術(shù)公司以及互聯(lián)網(wǎng)公司三部分:

科研院所主要包括高校和科學(xué)院,比如科學(xué)院里有聲學(xué)所、自動化所,高校里面研究比較多的清華、北大、西工大、科大、上海交大等,這些都是在語音圈里占有較高位置的老牌隊(duì)伍。

語音技術(shù)公司包括我們比較熟悉的科大訊飛、云知聲、思必馳、極限元等。

互聯(lián)網(wǎng)公司包括BAT、搜狗等擁有強(qiáng)大的語音技術(shù)團(tuán)隊(duì)來支撐著其本身的很多業(yè)務(wù)。

測試方案

接觸語音識別、語音合成項(xiàng)目的測試將近一年,認(rèn)識還非常淺薄,大家有更好的想法或者技術(shù)方案可以多多溝通交流。下面分別從語音識別、語音合成談?wù)勔恍┪以陧?xiàng)目中用的測試方案。

語音識別

語音識別的整體流程如上,站在測試角度思考,測試最簡單的切入點(diǎn)就是最終生成文本內(nèi)容的校驗(yàn)上。

目前的測試方案是事先標(biāo)注一批語音的文本內(nèi)容,與識別出的文本內(nèi)容做對比,獲取識別的準(zhǔn)確率。但是這種準(zhǔn)確率統(tǒng)計(jì)脫離了實(shí)際使用場景,比如車載模式下的噪音、與麥克風(fēng)的距離都會影響識別準(zhǔn)確率。

另外,從上圖流程可以看出,識別準(zhǔn)確率還會受聲學(xué)模型、解碼器的影響。語音信號經(jīng)過特征提取得到聲學(xué)特征,再通過聲學(xué)特征訓(xùn)練得到聲學(xué)模型,聲學(xué)模型結(jié)合語言模型以及發(fā)音辭典構(gòu)建聲碼器以后進(jìn)行解碼來輸出文本,所以聲學(xué)模型的訓(xùn)練結(jié)果一定是正確的嗎?這也是測試的一個(gè)切入點(diǎn)。

語音合成

測試考慮從以下兩方面入手:

服務(wù)端的文本分析

合成效果的評測

文本分析

語音合成的測試前期工作主要放在前端文本分析上,用python中的Snownlp及pypinyin將文本進(jìn)行分分詞及注音后輸出注音及音調(diào),服務(wù)端的前端模塊輸出注音及音調(diào),將腳本輸出的結(jié)果和服務(wù)端輸出的結(jié)果做對比。這種方式可以對比出音調(diào)、多音字的差異。

frompypinyin import pinyin#pinyin將漢字轉(zhuǎn)為拼音。可以用于漢字注音、排序、檢索fromsnownlp importnormal#snownlp 轉(zhuǎn)換成拼音,繁體轉(zhuǎn)簡體,提取文本關(guān)鍵詞fromsnownlp import seg#分詞text_normal =normal.zh2hans(text_path)sent_normal =normal.get_sentences(text_normal)words= seg.seg(sent_normal.decode('utf-8'))#匹配多音字word= SnowNLP(words_list)word=word.sim(sim_word.decode('utf-8'))#注音txt_zhuyin = pinyin(word, style=pypinyin.TONE3)

合成效果評測

成功效果評測的方式也有兩種:一種方式眾包評測,這種方式是靠人的主管感受去評測合成的語音是否流暢、自然、發(fā)音正確等,這種方式的結(jié)果更有說服力,但是人力成本較大。

另一種方式是對比語音的波形圖,python中的wave模塊支持將語音轉(zhuǎn)為波形圖,python中還有其他模塊如eyeD3,PyAudio,Audacity等等可以處理語音暫且不介紹這些模塊。先介紹wave中的一些方法:

getparams()

獲取wav文件的參數(shù)(以tuple形式輸出),依次為(聲道數(shù),采樣精度,采樣率,幀數(shù)等)

readframes()

得到每一幀的聲音數(shù)據(jù),返回的值是二進(jìn)制數(shù)據(jù),在python中用字符串表示二進(jìn)制數(shù)據(jù)。

步驟如下:

通過wav庫獲得night.wav的頭文件中的信息,如采樣率/聲道數(shù)等等.

提取出DATA區(qū)域的信息,用numpy將string格式數(shù)據(jù)轉(zhuǎn)化為數(shù)組

通過判定聲道數(shù)將DATA區(qū)域數(shù)據(jù)進(jìn)行處理(對數(shù)組矩陣進(jìn)行轉(zhuǎn)換)

得到每個(gè)繪制點(diǎn)的時(shí)間(x坐標(biāo))

用matplotlib庫提供的方法繪制出波形圖

對波形的信息進(jìn)行對比分析,可以從中得到很多有效信息,但是這些信息是否能有效過濾掉不同的口音、情緒、呼吸等的差異,去提取自己想要的信息如音調(diào)差異、錯(cuò)別字的差異還在探索中。

原文鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容