段杰鵬
(北方工業(yè)大學(xué)信息學(xué)院 北京市 100144)
開(kāi)源生態(tài),成長(zhǎng)與挑戰(zhàn)并存。根據(jù)《2020 中國(guó)開(kāi)源年度報(bào)告》,全球開(kāi)源都呈現(xiàn)一個(gè)大的發(fā)展趨勢(shì),以Git Hub 和Git ee 為例,無(wú)論是活躍代碼倉(cāng)庫(kù),還是活躍用戶數(shù),高速增長(zhǎng)表現(xiàn)強(qiáng)勁[1]。這種結(jié)果除了因?yàn)殚_(kāi)源勢(shì)頭外,還有一個(gè)原因就是受疫情影響,采用遠(yuǎn)程辦公的方式。體量的快速增加,伴隨而來(lái)的問(wèn)題也越發(fā)凸顯。在《開(kāi)源生態(tài)白皮書(shū)(2020)》中,不僅指出開(kāi)源知識(shí)產(chǎn)權(quán)及合規(guī)風(fēng)險(xiǎn),還著重談到本課題關(guān)心的開(kāi)源軟件(Open Source Software,OSS)風(fēng)險(xiǎn)[2]。技術(shù)更新迭代快、運(yùn)維成本高、安全漏洞威脅嚴(yán)重都是亟待解決的開(kāi)源軟件應(yīng)用問(wèn)題。這些風(fēng)險(xiǎn)一定程度上都需要通過(guò)軟件演化這一環(huán)去解決。
開(kāi)源環(huán)境對(duì)軟件演化提出新的挑戰(zhàn)。軟件演化的核心問(wèn)題是軟件如何適應(yīng)改變,軟件的演化能力主要體現(xiàn)在4 個(gè)方面[3]:可分析性;可修改性;穩(wěn)定性;可測(cè)試性。針對(duì)軟件動(dòng)態(tài)演化,學(xué)術(shù)界主要從以下幾個(gè)方面展開(kāi)工作:程序設(shè)計(jì)語(yǔ)言、模型、軟件體系結(jié)構(gòu)、平臺(tái)。隨著軟件開(kāi)源社區(qū)的出現(xiàn),基于開(kāi)源代碼的軟件開(kāi)發(fā)成為新的軟件開(kāi)發(fā)生態(tài)[4]。眾所周知,群智開(kāi)發(fā)是開(kāi)源軟件的一大特點(diǎn),這就造成軟件演化過(guò)程不可控。開(kāi)源項(xiàng)目往往是核心開(kāi)發(fā)人員把自己的初步成果和想法發(fā)布在社區(qū),由數(shù)量龐雜的貢獻(xiàn)者進(jìn)行項(xiàng)目的完善、測(cè)試和維護(hù)。從項(xiàng)目計(jì)劃開(kāi)始的整個(gè)軟件生命周期,都沒(méi)有完整的文檔對(duì)軟件演化過(guò)程進(jìn)行指導(dǎo)和記錄;軟件演化的發(fā)生也更多發(fā)生在離散的開(kāi)發(fā)、測(cè)試、維護(hù)過(guò)程中。Scacchi W 等人[5]研究指出,當(dāng)前對(duì)OSS 系統(tǒng)的研究沒(méi)有對(duì)軟件演化過(guò)程中有時(shí)超線性,有時(shí)次線性的增長(zhǎng)曲線提供適當(dāng)?shù)慕忉尅S行┣闆r下,OSS 系統(tǒng)是否符合演化的規(guī)律也尚不清楚。因此,對(duì)開(kāi)源生態(tài)中軟件演化技術(shù)的研究,重新思考開(kāi)源環(huán)境下軟件演化的理論和模型,可以幫助理解、推理和解釋開(kāi)源軟件系統(tǒng)的演化。
Neteler 等人[6]提出了基于遠(yuǎn)程和連續(xù)分析的OSS 演化方法。為了提供減輕軟件退化和風(fēng)險(xiǎn)的服務(wù),該方法運(yùn)用了諸如CVS 版本系統(tǒng)庫(kù)、承諾日志文件和交換郵件等可用數(shù)據(jù)源。核心成果包括增長(zhǎng)、復(fù)雜性和質(zhì)量控制機(jī)制、反饋驅(qū)動(dòng)的通信服務(wù)和OSS 演化儀表板服務(wù)。Arafat 等人[7]將給定源代碼中的評(píng)論量作為可維護(hù)性的指標(biāo),從而進(jìn)一步了解開(kāi)源軟件開(kāi)發(fā)的過(guò)程和行為。Capiluppi 等人[8]研究了OSS 系統(tǒng)的結(jié)構(gòu)衰減是否會(huì)受到保存該項(xiàng)目的存儲(chǔ)庫(kù)的影響。Beecher等人[9]通過(guò)研究OSS更多存儲(chǔ)庫(kù),拓展了這項(xiàng)工作。他們根據(jù)不同類(lèi)型的OSS 存儲(chǔ)庫(kù)建立了相應(yīng)的過(guò)度框架。為OSS開(kāi)發(fā)人員選擇在哪里主持項(xiàng)目以及讓項(xiàng)目成功演化提供了指導(dǎo)。Robles[10]等人介紹了研究人員可以在OSS 項(xiàng)目中找到的最重要的可供研究的數(shù)據(jù)源:源代碼、源代碼管理系統(tǒng)、郵件列表和bug 跟蹤系統(tǒng)。他們提出了可根據(jù)分析數(shù)據(jù)源遇到的問(wèn)題給出建議的演化分析工具。Bachmann[11]等人通過(guò)定義數(shù)據(jù)源的質(zhì)量和特征度量標(biāo)準(zhǔn)來(lái)比較不同的OSS 項(xiàng)目。Koponen[12]等人創(chuàng)建了開(kāi)源軟件演化的評(píng)估框架。該框架可以用來(lái)評(píng)估開(kāi)源軟件演化過(guò)程的活性、效率、可追溯性和敏捷性。Capiluppi[13]等人通過(guò)對(duì)比傳統(tǒng)軟件和OSS 項(xiàng)目的軟件演化的共性和差異,對(duì)傳統(tǒng)軟件演化模型進(jìn)行了調(diào)整,提出了適用于OSS 系統(tǒng)的軟件演化模型。李穎[14]研究了開(kāi)源移動(dòng)應(yīng)用項(xiàng)目的演化特征,分析了開(kāi)源移動(dòng)項(xiàng)目動(dòng)態(tài)演化過(guò)程及規(guī)律,提出了代碼關(guān)聯(lián)推薦算法,當(dāng)開(kāi)發(fā)者修改代碼時(shí),面向開(kāi)發(fā)者提示需要同步修改的代碼塊。Nakagawa[15]等人研究指出軟件體系結(jié)構(gòu)與OSS 質(zhì)量直接相關(guān),開(kāi)發(fā)人員在OSS 演化中需要充分考慮軟件體系結(jié)構(gòu)知識(shí)體系,包括軟件體系結(jié)構(gòu)風(fēng)格,體系結(jié)構(gòu)模式和體系結(jié)構(gòu)演化方法。
趙會(huì)群[16]等人最早提出了體育計(jì)算的概念,隨著機(jī)器學(xué)習(xí)的發(fā)展,在競(jìng)技體育中無(wú)論是比賽訓(xùn)練,還是技戰(zhàn)術(shù)分析,越來(lái)越多地運(yùn)用了人工智能的輔助手段,體育人工智能成為重要的研究方向。Iyer[17]等人使用神經(jīng)網(wǎng)絡(luò)根據(jù)每個(gè)板球運(yùn)動(dòng)員過(guò)去的表現(xiàn)預(yù)測(cè)其未來(lái)表現(xiàn),結(jié)果表明,神經(jīng)網(wǎng)絡(luò)確實(shí)可以在團(tuán)隊(duì)選擇過(guò)程中提供有價(jià)值的決策支持。Grunz[18]等人引入人工神經(jīng)網(wǎng)絡(luò)分層架構(gòu),基于足球運(yùn)動(dòng)員的位置數(shù)據(jù),得到合適的戰(zhàn)術(shù)模式。結(jié)果表明,分層架構(gòu)能夠識(shí)別不同的戰(zhàn)術(shù)模式和各模式之間的變化。Hassan[19]等人通過(guò)注釋手球比賽723 個(gè)動(dòng)作序列的位置數(shù)據(jù),利用非線性混合神經(jīng)網(wǎng)絡(luò),成功預(yù)測(cè)了個(gè)人和團(tuán)隊(duì)的戰(zhàn)術(shù)位置。Kempe[20]等人利用動(dòng)態(tài)可控神經(jīng)網(wǎng)絡(luò)正確檢測(cè)出預(yù)選的戰(zhàn)術(shù)模式。王杰[21]利用改進(jìn)的人工神經(jīng)網(wǎng)絡(luò)對(duì)乒乓球技戰(zhàn)術(shù)進(jìn)行診斷、評(píng)估和預(yù)測(cè)。
綜上所述,對(duì)OSS 演化的研究都集中在演化過(guò)程,演化體系結(jié)構(gòu),演化確認(rèn)等方面,鮮有對(duì)特定領(lǐng)域演化技術(shù)的具體研究和分析。體育人工智能的研究多集中于神經(jīng)網(wǎng)絡(luò)在計(jì)算機(jī)視覺(jué)與技戰(zhàn)術(shù)分析和預(yù)測(cè)上。本文將結(jié)合開(kāi)源語(yǔ)音識(shí)別在乒乓球技戰(zhàn)術(shù)采集中的應(yīng)用,展開(kāi)對(duì)OSS 演化技術(shù)的研究。
在語(yǔ)音識(shí)別應(yīng)用層面,從輸入、處理過(guò)程、輸出,無(wú)論是識(shí)別流程,還是訓(xùn)練流程,對(duì)于應(yīng)用人員相當(dāng)于是一個(gè)黑盒,輸入和輸出則是用戶可以感知到的?;跈C(jī)器學(xué)習(xí)的語(yǔ)言識(shí)別技術(shù)可以分為訓(xùn)練過(guò)程和識(shí)別過(guò)程兩個(gè)階段,在識(shí)別語(yǔ)音之前需要對(duì)識(shí)別模型進(jìn)行訓(xùn)練,以便建立環(huán)境參數(shù),為大量語(yǔ)音識(shí)別進(jìn)行分類(lèi)處理。訓(xùn)練過(guò)程輸入為語(yǔ)音數(shù)據(jù),輸出為語(yǔ)音參數(shù)模型;識(shí)別過(guò)程輸入為語(yǔ)音數(shù)據(jù)和輸出為識(shí)別結(jié)果。識(shí)別過(guò)程是一個(gè)“黑盒”形態(tài)的語(yǔ)音模型,語(yǔ)言模型等要素?zé)o法改變的前提下,識(shí)別效果的改變,取決于可變因素語(yǔ)音參數(shù)模型。語(yǔ)音參數(shù)模型受語(yǔ)料特征的影響,比如數(shù)據(jù)量,說(shuō)話人特征,語(yǔ)音內(nèi)容,語(yǔ)義背景等。根據(jù)不同的語(yǔ)料庫(kù),可以訓(xùn)練得到不同的語(yǔ)音參數(shù)模型。為了適應(yīng)環(huán)境的變化以及提高識(shí)別效果,這就要求在識(shí)別流程中可以根據(jù)實(shí)際狀態(tài)動(dòng)態(tài)調(diào)整語(yǔ)音參數(shù)模型。模型驅(qū)動(dòng)演化就是根據(jù)語(yǔ)音環(huán)境的變化動(dòng)態(tài)調(diào)整模型訓(xùn)練和識(shí)別過(guò)程的軟件過(guò)程。
模型驅(qū)動(dòng)演化中對(duì)識(shí)別結(jié)果進(jìn)行嗅探,即判斷識(shí)別結(jié)果的正確性,它是觸發(fā)一系列模型驅(qū)動(dòng)演化動(dòng)作的前提。如圖1所示的時(shí)序圖中反射式中間件從應(yīng)用層探知用戶對(duì)識(shí)別結(jié)果的修改活動(dòng),獲取正確結(jié)果,依據(jù)此正確結(jié)果并結(jié)合該段語(yǔ)音的識(shí)別結(jié)果,計(jì)算當(dāng)前語(yǔ)音參數(shù)模型對(duì)用戶語(yǔ)音的識(shí)別詞錯(cuò)率WER。當(dāng)詞錯(cuò)率達(dá)到閾值時(shí),反射式中間件開(kāi)始探知系統(tǒng)的運(yùn)行狀態(tài)state,滿足空閑狀態(tài)后,跟據(jù)用戶語(yǔ)音特征,從方法庫(kù)中篩選符合條件的語(yǔ)音參數(shù)模型。分別加載備用語(yǔ)音參數(shù)模型,并計(jì)算獲得語(yǔ)音數(shù)據(jù)wav 的識(shí)別結(jié)果result,將詞錯(cuò)率WER 存儲(chǔ)到對(duì)應(yīng)語(yǔ)音參數(shù)模型之下。比較所有備用語(yǔ)音參數(shù)模型在當(dāng)前環(huán)境下的詞錯(cuò)率WER,返回詞錯(cuò)率WER 最小的語(yǔ)音參數(shù)模型Model。加載Model,判斷是否可以識(shí)別語(yǔ)音數(shù)據(jù),滿足條件則繼續(xù)進(jìn)行語(yǔ)音識(shí)別。現(xiàn)存語(yǔ)音參數(shù)模型無(wú)法滿足要求時(shí),開(kāi)啟數(shù)據(jù)驅(qū)動(dòng)演化。
圖1:模型驅(qū)動(dòng)演化時(shí)序圖
在開(kāi)源語(yǔ)音識(shí)別系統(tǒng)輔助應(yīng)用的過(guò)程中,回望開(kāi)源語(yǔ)音識(shí)別模塊為了適應(yīng)環(huán)境和提高識(shí)別效果所作的工作,凝練模型驅(qū)動(dòng)演化算法如下:
算法1 ModelEvo()
算法1 在執(zhí)行過(guò)程中,需要等待系統(tǒng)滿足空閑狀態(tài),所以等待的時(shí)間T 是該算法時(shí)間復(fù)雜度組成的重要一環(huán)。算法的執(zhí)行時(shí)間還依賴有多少個(gè)備用語(yǔ)音參數(shù)模型,每個(gè)備用語(yǔ)音參數(shù)模型都要進(jìn)行加載、識(shí)別和計(jì)算,此過(guò)程時(shí)間復(fù)雜度為N。當(dāng)現(xiàn)存語(yǔ)音參數(shù)模型都無(wú)法滿足應(yīng)用需求時(shí),需要啟動(dòng)數(shù)據(jù)驅(qū)動(dòng)演化DataEvo(),在進(jìn)行數(shù)據(jù)驅(qū)動(dòng)演化時(shí)時(shí)間復(fù)雜度為I,綜上所述,算法1 的總體時(shí)間復(fù)雜度為O(T+N+I)。算法1 的空間復(fù)雜度主要取決于對(duì)語(yǔ)音參數(shù)模型的篩選過(guò)程,此過(guò)程的空間復(fù)雜度為S(n)=O(N),所以算法1整體的空間復(fù)雜度為O(N)。
在實(shí)際應(yīng)用過(guò)程中,存在通過(guò)方法庫(kù)和模型庫(kù)篩選語(yǔ)音參數(shù)模型后,模型驅(qū)動(dòng)演化加載最優(yōu)語(yǔ)音參數(shù)模型仍然無(wú)法滿足當(dāng)前復(fù)雜的應(yīng)用需求。為了解決以上問(wèn)題,本文提出了數(shù)據(jù)驅(qū)動(dòng)演化模型:依據(jù)新的語(yǔ)料訓(xùn)練滿足當(dāng)前復(fù)雜環(huán)境的語(yǔ)音參數(shù)模型,并將該語(yǔ)音參數(shù)模型加載到語(yǔ)音識(shí)別模型庫(kù)中。
數(shù)據(jù)驅(qū)動(dòng)演化模型依賴于滿足當(dāng)前應(yīng)用環(huán)境的新的語(yǔ)料,該語(yǔ)料的獲得途徑有兩種方式:首先可以從外部導(dǎo)入滿足應(yīng)用環(huán)境的語(yǔ)料;其次可以在該環(huán)境的應(yīng)用過(guò)程中采集語(yǔ)音數(shù)據(jù),對(duì)語(yǔ)音數(shù)據(jù)進(jìn)行預(yù)處理,形成訓(xùn)練語(yǔ)料,語(yǔ)料數(shù)據(jù)量達(dá)到閾值時(shí),啟動(dòng)訓(xùn)練過(guò)程,訓(xùn)練新的語(yǔ)音參數(shù)模型,加載語(yǔ)音參數(shù)模型到語(yǔ)音識(shí)別中,以此來(lái)提高適應(yīng)性。
如圖2所示的時(shí)序圖直觀的展示了數(shù)據(jù)驅(qū)動(dòng)演化的執(zhí)行過(guò)程。當(dāng)模型驅(qū)動(dòng)演化結(jié)束后,在接下來(lái)的應(yīng)用過(guò)程中,詞錯(cuò)率依然低于閾值時(shí),反射式中間件開(kāi)始對(duì)數(shù)據(jù)庫(kù)進(jìn)行嗅探。在當(dāng)前應(yīng)用時(shí)段中,如果應(yīng)用人員從外部導(dǎo)入了新的語(yǔ)料庫(kù),或者采集人員不斷采集語(yǔ)音數(shù)據(jù),語(yǔ)音數(shù)據(jù)量達(dá)到可以訓(xùn)練的閾值時(shí),反射式中間件開(kāi)始對(duì)系統(tǒng)資源狀態(tài)進(jìn)行嗅探。當(dāng)應(yīng)用程序處于空閑狀態(tài)以及系統(tǒng)資源充足時(shí),語(yǔ)音識(shí)別模塊從數(shù)據(jù)庫(kù)獲取語(yǔ)料庫(kù),進(jìn)行新語(yǔ)音參數(shù)模型的訓(xùn)練。訓(xùn)練結(jié)束后,將語(yǔ)音參數(shù)模型加載到語(yǔ)音識(shí)別系統(tǒng)中,并且依據(jù)語(yǔ)音特征更新方法庫(kù)和模型庫(kù)。
圖2:數(shù)據(jù)驅(qū)動(dòng)演化時(shí)序圖
依據(jù)數(shù)據(jù)驅(qū)動(dòng)演化模型,在語(yǔ)音輔助識(shí)別應(yīng)用過(guò)程中,本文提出了數(shù)據(jù)驅(qū)動(dòng)演化算法如下:
算法2 DataEvo()
算法2 中的輸入Cor 表示在語(yǔ)音識(shí)別輔助應(yīng)用開(kāi)始,依據(jù)當(dāng)前環(huán)境在數(shù)據(jù)庫(kù)中新創(chuàng)建的一個(gè)語(yǔ)料庫(kù)。算法2 的執(zhí)行過(guò)程主要是對(duì)數(shù)據(jù)庫(kù)和系統(tǒng)資源的探查。假設(shè)對(duì)數(shù)據(jù)庫(kù)嗅探了N 次,則此while語(yǔ)句的時(shí)間復(fù)雜度為O(N);假設(shè)對(duì)系統(tǒng)資源嗅探了M 次后,滿足語(yǔ)音參數(shù)模型訓(xùn)練要求,則此過(guò)程的時(shí)間復(fù)雜度為O(M)。所以綜上所述,算法2 的時(shí)間復(fù)雜度為O(N)。因?yàn)橐?xùn)練新的語(yǔ)音參數(shù)模型,所以算法2 的空間復(fù)雜度取決于訓(xùn)練一個(gè)批次所使用的數(shù)據(jù)量,假設(shè)訓(xùn)練一個(gè)批次需要使用L 條數(shù)據(jù),那么算法2 的空間復(fù)雜度為O(L)。
本節(jié)結(jié)合實(shí)際應(yīng)用案例,首先,分別對(duì)上述模型驅(qū)動(dòng)演化模型和數(shù)據(jù)驅(qū)動(dòng)演化模型所提出的算法進(jìn)行驗(yàn)證,最后對(duì)得出的實(shí)驗(yàn)結(jié)果進(jìn)行分析說(shuō)明。
本文以開(kāi)源語(yǔ)音識(shí)別輔助乒乓球技戰(zhàn)術(shù)采集為背景,首先模擬采集過(guò)程中,因?yàn)槠古仪蚣紤?zhàn)術(shù)語(yǔ)言的特異性,識(shí)別效果無(wú)法滿足要求,驗(yàn)證系統(tǒng)實(shí)行模型驅(qū)動(dòng)演化,實(shí)現(xiàn)最優(yōu)語(yǔ)音參數(shù)模型的替換;其次模擬當(dāng)前模型庫(kù)中的語(yǔ)音參數(shù)模型仍無(wú)法滿足乒乓球技戰(zhàn)術(shù)采集要求,驗(yàn)證數(shù)據(jù)驅(qū)動(dòng)演化啟動(dòng)后對(duì)數(shù)據(jù)庫(kù)和系統(tǒng)資源的成功嗅探,最終實(shí)現(xiàn)語(yǔ)音參數(shù)模型的訓(xùn)練和加載。
本節(jié)給出三組實(shí)驗(yàn)結(jié)果,分別是:識(shí)別結(jié)果和正確結(jié)果的嗅探;參數(shù)模型篩選比較替換;數(shù)據(jù)庫(kù)數(shù)據(jù)量的嗅探。
4.2.1 識(shí)別結(jié)果和正確結(jié)果的嗅探
在模型驅(qū)動(dòng)演化過(guò)程中,某段語(yǔ)音的詞錯(cuò)率是否滿足要求是啟動(dòng)模型驅(qū)動(dòng)演化的前提條件,所以嗅探器首先要對(duì)識(shí)別結(jié)果和人工更正后的正確結(jié)果進(jìn)行嗅探,以此來(lái)計(jì)算詞錯(cuò)率。
在語(yǔ)音識(shí)別輔助乒乓球技戰(zhàn)術(shù)采集中,首先語(yǔ)音識(shí)別模塊加載默認(rèn)語(yǔ)音參數(shù)模型;然后采集人員在應(yīng)用層錄入一段乒乓球技戰(zhàn)術(shù)語(yǔ)音,本文以speechDataA=“接相持段擺失”這一語(yǔ)音數(shù)據(jù)為例。語(yǔ)音識(shí)別模塊對(duì)speechDataA 進(jìn)行識(shí)別,識(shí)別結(jié)果為A=“接向十段白失”。嗅探器從語(yǔ)音識(shí)別模塊嗅探識(shí)別結(jié)果A 的同時(shí),語(yǔ)音識(shí)別模塊將識(shí)別結(jié)果A 反映到應(yīng)用層,以供采集用戶進(jìn)行更正。嗅探器從應(yīng)用層探知采集用戶的更正動(dòng)作和用戶進(jìn)行下一段語(yǔ)音數(shù)據(jù)speechDataB 的錄制動(dòng)作后,獲得正確結(jié)果A′=“接相持段擺失”,最后開(kāi)始計(jì)算speechDataA 的詞錯(cuò)率。
因?yàn)閮蓚€(gè)嗅探動(dòng)作的成功執(zhí)行(從語(yǔ)音識(shí)別模塊嗅探識(shí)別結(jié)果A;嗅探采集用戶更正動(dòng)作和嗅探speechDataB 的錄制動(dòng)作,最后獲取正確結(jié)果A′)和詞錯(cuò)率的成功計(jì)算存在前后因果關(guān)系,所以本文以speechDataA 詞錯(cuò)率計(jì)算后的結(jié)果展示來(lái)驗(yàn)證算法1 中嗅探器的成功執(zhí)行。如圖3,speechDataA 的詞錯(cuò)率為50%,所以默認(rèn)語(yǔ)音參數(shù)模型的識(shí)別準(zhǔn)確率為50%。
圖3:詞錯(cuò)率計(jì)算
4.2.2 參數(shù)模型篩選比較替換
根據(jù)本文對(duì)乒乓球技戰(zhàn)術(shù)語(yǔ)言的研究,采集一條標(biāo)準(zhǔn)的乒乓球技戰(zhàn)術(shù)信息,其中最多含有7 個(gè)漢字,識(shí)別結(jié)果最多錯(cuò)一個(gè)的前提條件下,詞錯(cuò)率為14%,據(jù)此,本文將詞錯(cuò)率的比較閾值設(shè)置為20%,方便之后的實(shí)驗(yàn)研究。
顯然speechDataA 的詞錯(cuò)率明顯大于閾值,所以嗅探器開(kāi)始對(duì)系統(tǒng)運(yùn)行狀態(tài)進(jìn)行嗅探,當(dāng)系統(tǒng)處于空閑狀態(tài)后,依據(jù)語(yǔ)音特征,從方法庫(kù)(技術(shù)路線是:技戰(zhàn)術(shù)采集→山西口音普通話)和模型庫(kù)中檢索最優(yōu)語(yǔ)音參數(shù)模型備選模型。語(yǔ)音參數(shù)模型準(zhǔn)確率比較篩選后得到三個(gè)語(yǔ)音參數(shù)模型如表1所示。
表1:模型信息
語(yǔ)音識(shí)別模塊分別加載上述模型,依據(jù)speechDataA 和它的標(biāo)簽文本A′計(jì)算當(dāng)前環(huán)境下的詞錯(cuò)率。如圖4所示,Model10 的詞錯(cuò)率為66%左右,Model21 為33%左右,Model30 的詞錯(cuò)率為40%左右。Model21 與默認(rèn)語(yǔ)音參數(shù)模型相比,準(zhǔn)確率明顯提高。綜上所示,現(xiàn)有語(yǔ)音參數(shù)模型中,適應(yīng)當(dāng)前環(huán)境的最優(yōu)語(yǔ)音參數(shù)模型為Model21。
圖4:詞錯(cuò)率比較
本文通過(guò)對(duì)系統(tǒng)資源的監(jiān)控,首先驗(yàn)證了嗅探器對(duì)系統(tǒng)空閑狀態(tài)的探查。如圖5為系統(tǒng)資源使用情況隨時(shí)間的變化圖,圖中對(duì)系統(tǒng)的資源監(jiān)控起始于算法1 中備選語(yǔ)音參數(shù)模型的適應(yīng)性比較,結(jié)束于最優(yōu)語(yǔ)音參數(shù)模型加載前。所以根據(jù)圖中給出的CPU 使用率變化情況,在0ms 之前,系統(tǒng)監(jiān)控結(jié)束之后,CPU 使用率在30%以下,說(shuō)明系統(tǒng)處于空閑狀態(tài),證明嗅探器對(duì)系統(tǒng)空閑狀態(tài)的嗅探結(jié)果是成功的。
圖5:系統(tǒng)資源圖
CPU 作為計(jì)算機(jī)系統(tǒng)的運(yùn)算和控制核心,是信息處理、程序運(yùn)行的最終執(zhí)行單元,所以當(dāng)軟件運(yùn)行時(shí),CPU 使用率第一時(shí)間發(fā)生變化。從圖5可以發(fā)現(xiàn):0-50ms,50-100ms,100-150ms 分別出現(xiàn)了一次波峰,因?yàn)橛腥齻€(gè)候選語(yǔ)音參數(shù)模型,所以每個(gè)時(shí)間段都表示算法在執(zhí)行一次加載語(yǔ)音參數(shù)模型、識(shí)別語(yǔ)音數(shù)據(jù)、計(jì)算詞錯(cuò)率、更新數(shù)據(jù)的過(guò)程。因?yàn)槿斯ぶ悄軐?duì)GPU 的使用是其在硬件資源使用上的一大特點(diǎn),同樣,進(jìn)行語(yǔ)音識(shí)別時(shí)需要占用GPU 資源。如圖5綠色折線表示演化過(guò)程中,GPU 使用率變化情況,因?yàn)檫M(jìn)行了三次語(yǔ)音參數(shù)模型加載和語(yǔ)音識(shí)別過(guò)程,所以在時(shí)間線上也出現(xiàn)了三次波峰。圖5中橙色折線表示內(nèi)存使用情況,內(nèi)存主要負(fù)責(zé)暫時(shí)存儲(chǔ)CPU 的計(jì)算結(jié)果以及和外部存儲(chǔ)器交換資源。每個(gè)波峰都表示對(duì)識(shí)別結(jié)果和詞錯(cuò)率的計(jì)算和存儲(chǔ),并將詞錯(cuò)率結(jié)果存儲(chǔ)到數(shù)據(jù)庫(kù)中。
4.2.3 數(shù)據(jù)庫(kù)數(shù)據(jù)量的嗅探
數(shù)據(jù)驅(qū)動(dòng)演化的目的是利用適應(yīng)當(dāng)前環(huán)境的語(yǔ)音數(shù)據(jù),訓(xùn)練新的語(yǔ)音參數(shù)模型,提高之后語(yǔ)音輔助采集的語(yǔ)音識(shí)別效果。應(yīng)用過(guò)程中采集的語(yǔ)音數(shù)據(jù)達(dá)到一定數(shù)據(jù)量或者有新的語(yǔ)料庫(kù)導(dǎo)入才能開(kāi)始訓(xùn)練新的語(yǔ)音參數(shù)模型。
如圖6所示為嗅探器對(duì)系統(tǒng)創(chuàng)建的語(yǔ)料庫(kù)中語(yǔ)音數(shù)據(jù)量的嗅探。嗅探器每隔一段時(shí)間對(duì)語(yǔ)料庫(kù)中的數(shù)據(jù)量進(jìn)行嗅探,當(dāng)達(dá)到閾值時(shí),停止嗅探。本文為方便測(cè)試,在實(shí)驗(yàn)過(guò)程中設(shè)置嗅探語(yǔ)音數(shù)據(jù)量的閾值為100 條語(yǔ)音數(shù)據(jù),設(shè)置嗅探間隔為30min。在圖6中有兩條折線,表示本文分別作了兩次實(shí)驗(yàn),實(shí)驗(yàn)變量為是否人工導(dǎo)入新的語(yǔ)料庫(kù)。藍(lán)色折線表示隨著語(yǔ)音輔助應(yīng)用的進(jìn)行,嗅探器感知到語(yǔ)料庫(kù)中的語(yǔ)音數(shù)據(jù)量在不斷增加,在210min 嗅探到117 條數(shù)據(jù)時(shí),停止了嗅探活動(dòng)。橘色折線在120min 之后,就沒(méi)有新的嗅探數(shù)據(jù),表明120min 之后,嗅探器停止了對(duì)系統(tǒng)創(chuàng)建的語(yǔ)料庫(kù)中數(shù)據(jù)量的嗅探,這是因?yàn)椋崽狡餍崽降搅擞赏獠繉?dǎo)入了新的語(yǔ)料庫(kù),所以結(jié)束了對(duì)現(xiàn)有語(yǔ)料庫(kù)中數(shù)據(jù)量的嗅探。
圖6:語(yǔ)音數(shù)據(jù)量隨時(shí)間變化圖
面對(duì)開(kāi)源語(yǔ)音識(shí)別輔助應(yīng)用過(guò)程中因?yàn)樽R(shí)別環(huán)境和語(yǔ)音特征不同造成識(shí)別效果不佳,以及語(yǔ)音模型對(duì)采集人員的黑盒問(wèn)題,本文提出了模型驅(qū)動(dòng)演化算法和數(shù)據(jù)驅(qū)動(dòng)演化算法,通過(guò)替換和訓(xùn)練語(yǔ)音參數(shù)模型實(shí)現(xiàn)識(shí)別效果的提高。本文通過(guò)實(shí)驗(yàn)驗(yàn)證了模型驅(qū)動(dòng)算法和數(shù)據(jù)驅(qū)動(dòng)演化算法的有效性,利用開(kāi)源軟件演化技術(shù)可以提高語(yǔ)音識(shí)別輔助系統(tǒng)對(duì)環(huán)境的適應(yīng)性。最后通過(guò)語(yǔ)音輔助乒乓球技戰(zhàn)術(shù)采集系統(tǒng)的實(shí)現(xiàn)和應(yīng)用,進(jìn)一步驗(yàn)證了本文提出的開(kāi)源語(yǔ)音軟件演化技術(shù)在實(shí)際應(yīng)用中的效果。