王子韻 鈕辰洋
(中國(guó)傳媒大學(xué)信息與通信工程學(xué)院數(shù)字媒體技術(shù)系,北京 100024)
人工智能的細(xì)分領(lǐng)域眾多,比如大家最為熟知的視覺人工智能與語音識(shí)別[1],其中語音識(shí)別在近幾年發(fā)展迅速,特別是深度神經(jīng)網(wǎng)絡(luò)的出現(xiàn)[2],使語音識(shí)別正確率達(dá)到了98%以上,語音識(shí)別也在語音輸入、語音機(jī)器人[3]、智能客服[4,5]等眾多領(lǐng)域大顯身手。識(shí)別能力方面,以科大訊飛為例,除支持中文普通話和英文外,還支持35 個(gè)語種、24 種方言和1 個(gè)民族語言的語音識(shí)別。
語音識(shí)別中一大難點(diǎn)是方言和少數(shù)民族語音識(shí)別[6]。海量的語音數(shù)據(jù)是語音識(shí)別模型獲得高識(shí)別率的關(guān)鍵。由于中國(guó)地域遼闊,方言眾多,每個(gè)省份都有可能有多種方言口音,同種方言的個(gè)體發(fā)音也有所區(qū)別,如果單靠人工主動(dòng)收集各種方言語音數(shù)據(jù),難度極大,數(shù)據(jù)覆蓋面和樣本分布很難做到均衡。因此,如何有效拓展語音數(shù)據(jù)收集渠道,擴(kuò)大數(shù)據(jù)覆蓋范圍,如何對(duì)數(shù)據(jù)進(jìn)行高質(zhì)量的標(biāo)注[7],從而獲得精準(zhǔn)的有價(jià)值的語音數(shù)據(jù)也是目前語音AI亟待解決的問題。
本文設(shè)計(jì)開發(fā)的面向AI 的語音數(shù)據(jù)采集服務(wù)平臺(tái),旨在提供萬眾參與的語音,特別是方言語音的數(shù)據(jù)采集方式,平臺(tái)采用游戲方式采集語音數(shù)據(jù),同時(shí)設(shè)置競(jìng)爭(zhēng)性任務(wù)對(duì)語音數(shù)據(jù)進(jìn)行交叉校驗(yàn)和標(biāo)注,提升語音數(shù)據(jù)采集的質(zhì)量和可用性。同時(shí),平臺(tái)具備定制化的語音采集功能,可以實(shí)現(xiàn)定向采集某種方言語音數(shù)據(jù),使語音數(shù)據(jù)采集更加方便、高效,同時(shí)降低企業(yè)的數(shù)據(jù)采集與標(biāo)注成本。
語音AI 數(shù)據(jù)采集與服務(wù)平臺(tái)總體分為三個(gè)功能子模塊,包括基礎(chǔ)服務(wù)、語音數(shù)據(jù)收集服務(wù)、數(shù)據(jù)集服務(wù)。
基礎(chǔ)服務(wù)模塊用于提供用戶管理、數(shù)據(jù)標(biāo)簽管理、公告管理、客服交流、積分管理等基礎(chǔ)服務(wù),如圖1所示,以提供系統(tǒng)的基礎(chǔ)數(shù)據(jù)管理功能,保證系統(tǒng)基本功能的正常運(yùn)行。
圖1 基礎(chǔ)服務(wù)模塊功能
語音數(shù)據(jù)收集服務(wù)的目的在于以較低的成本獲取較高價(jià)值的語音樣本數(shù)據(jù)。該模塊又可分為語音數(shù)據(jù)收集、語音數(shù)據(jù)管理兩個(gè)子模塊。
數(shù)據(jù)收集模塊提供的主要功能有:語音游戲、定制任務(wù)、出題答題、交叉糾錯(cuò)和數(shù)據(jù)標(biāo)注。用戶可以參與系統(tǒng)提供的各種有趣的游戲,結(jié)交朋友,領(lǐng)取任務(wù),賺取積分與獎(jiǎng)勵(lì)。在用戶參與游戲過程中,后臺(tái)采集和存儲(chǔ)用戶的語音相關(guān)數(shù)據(jù),例如方言音頻、方言文字等信息,對(duì)其進(jìn)行保存和處理,是語音數(shù)據(jù)的主要來源。
圖2 語音數(shù)據(jù)收集服務(wù)模塊功能
語音數(shù)據(jù)管理模塊提供語音數(shù)據(jù)相關(guān)的管理功能,包括語音數(shù)據(jù)保存、審核、打包下載等功能。
2.2.1 誰是臥底
該語音游戲圍繞具體文字來設(shè)計(jì)游戲規(guī)則,通過游戲獲取語音數(shù)據(jù),游戲規(guī)則如下:系統(tǒng)隨機(jī)匹配7 個(gè)不同地區(qū)玩家,然后隨機(jī)選擇6個(gè)相同詞語和1個(gè)發(fā)音相近詞語(用方言讀不容易分辯,如餃子、轎子)給7個(gè)玩家,玩家每輪都用各自方言讀出詞語,結(jié)束后投票,票數(shù)最多的出局,如果臥底到最后一輪則臥底獲勝。游戲過程如圖3所示。
圖3 語音游戲“誰是臥底”的基本流程
2.2.2 多人正規(guī)賽
“多人正規(guī)賽”的設(shè)計(jì)目標(biāo)是產(chǎn)生帶有精準(zhǔn)標(biāo)簽的語音數(shù)據(jù),減小人工審核和管理的壓力。
游戲題目由后臺(tái)決定,因此后臺(tái)可以收集任意想要的語音數(shù)據(jù)。在游戲過程中,后臺(tái)將文字題目發(fā)給出題錄音玩家,該名玩家查看題目后,錄音上傳語音數(shù)據(jù),后臺(tái)保存語音數(shù)據(jù)和標(biāo)簽,同時(shí)將題目中的文字打亂后發(fā)送給其他玩家,玩家擊敗對(duì)手贏取積分,兌換獎(jiǎng)勵(lì)。游戲流程如圖4所示。
圖4 語音游戲“多人正規(guī)賽”的基本流程
2.2.3 個(gè)人秀
語音游戲“個(gè)人秀(方言秀)”的主要功能是收集同一段文本所對(duì)應(yīng)的不同的方言數(shù)據(jù),具體功能設(shè)計(jì)如下:用戶可以主動(dòng)發(fā)起一個(gè)話題,格式不限,可以是文本、歌曲、古詩等等,并為其配音,經(jīng)過審核后展示出來,供其它用戶欣賞,其它用戶可以發(fā)起新的話題,或者為已有的話題配音,以此獲得該段文本所對(duì)應(yīng)的不同方言數(shù)據(jù)。
2.3.1 出題答題
出題答題的模式是用戶出題,用戶答題。用戶不僅可以回答來自五湖四海的方言題目,還可以自己出題,讓其他的用戶回答。這樣可以豐富方言題目類型及方言題庫,增加游戲的新鮮度,同時(shí)提高用戶參與的積極性和游戲的趣味性,增強(qiáng)用戶黏性。
2.3.2 交叉糾錯(cuò)
交叉糾錯(cuò)任務(wù)要求任務(wù)領(lǐng)取者對(duì)他人發(fā)送的音頻和文字做審核,檢查音頻中的方言是否正確,也可以在審核過程中上傳正確的語音數(shù)據(jù),目的是為了解決大量語音數(shù)據(jù)審核的問題,通過有效的獎(jiǎng)勵(lì)機(jī)制讓大量用戶參與到數(shù)據(jù)審核工作中,利用糾錯(cuò)功能可以對(duì)數(shù)據(jù)庫中還未審核的方言語音數(shù)據(jù)進(jìn)行人工審核,提高語音數(shù)據(jù)及其標(biāo)注數(shù)據(jù)的可靠性。
2.3.3 數(shù)據(jù)標(biāo)注
每份數(shù)據(jù)需要多種不同的標(biāo)注才能具備相應(yīng)的價(jià)值。有效標(biāo)注越多,越準(zhǔn)確,數(shù)據(jù)具備的價(jià)值將會(huì)越高。系統(tǒng)通過完善用戶的基本信息,將用戶通過游戲和活動(dòng)所產(chǎn)生的數(shù)據(jù)自動(dòng)加上盡可能多的有效標(biāo)注,比如方言類型、地域、性別等。同時(shí)系統(tǒng)為用戶提供更改數(shù)據(jù)標(biāo)注的服務(wù),用戶對(duì)數(shù)據(jù)的標(biāo)注有異議,可以更改數(shù)據(jù)的標(biāo)注。平臺(tái)為積極參與數(shù)據(jù)標(biāo)注工作的用戶提供獎(jiǎng)勵(lì)。
2.3.4 定制任務(wù)
可定制的數(shù)據(jù)采集任務(wù)能夠滿足客戶的個(gè)性化語音數(shù)據(jù)采集需求,可以按照語音類別、地域、目標(biāo)人群等屬性設(shè)置定制語音采集需求。系統(tǒng)也會(huì)根據(jù)具體的屬性設(shè)置將任務(wù)定向發(fā)放給滿足要求的用戶進(jìn)行語音數(shù)據(jù)采集。
3.1.1 Vue.js框架
Vue.js是一種漸進(jìn)式UI設(shè)計(jì)框架[8],它提供了簡(jiǎn)易的、響應(yīng)式的數(shù)據(jù)模型與視圖層之間的狀態(tài)管理機(jī)制,當(dāng)數(shù)據(jù)模型狀態(tài)發(fā)生改變,視圖就會(huì)做響應(yīng)式更新。Vue的核心組件只關(guān)心視圖層,在本系統(tǒng)中主要用于Web頁面的開發(fā)。
3.1.2 Spring Boot
通過簡(jiǎn)化配置,Spring Boot使得Spring應(yīng)用的搭建更為簡(jiǎn)單,能夠更好地解決之前存在的多個(gè)框架依賴包之間的版本沖突問題[9]。開箱即用、約定優(yōu)于配置是Spring Boot 框架的兩個(gè)重要策略。Spring Boot中嵌入了Tomcat、Jetty等服務(wù)器容器,不用單獨(dú)安裝web服務(wù)器就能運(yùn)行。
3.1.3 Spring MVC
Spring MVC 框架是一款輕量級(jí)的、優(yōu)秀的MVC(Model,View,Controller)框架[10]與Spring框架無縫集成,具有優(yōu)越的性能,是業(yè)界主流的Web開發(fā)框架。
Spring MVC 中的控制器負(fù)責(zé)接收請(qǐng)求,并調(diào)用相應(yīng)的模型進(jìn)行處理,最后將處理結(jié)果返回??刂破骺梢哉{(diào)用相應(yīng)的視圖組件對(duì)處理結(jié)果進(jìn)行渲染,并將其通過響應(yīng)返回給客戶端。Spring MVC 的組件結(jié)構(gòu)具有高度可配置性,具有很好的靈活性和可擴(kuò)展性,開發(fā)效率較高。
3.1.4 MyBatis
MyBatis是一種基于Java的數(shù)據(jù)持久層框架,簡(jiǎn)單易學(xué),不依賴第三方組件,能夠?qū)QL 語句與代碼分離,提供業(yè)務(wù)邏輯和數(shù)據(jù)訪問的邏輯分離,使得系統(tǒng)設(shè)計(jì)更加清晰,可維護(hù)性更好。
平臺(tái)技術(shù)框架設(shè)計(jì)如圖5 所示??蛻舳朔譃閃eb 客戶端、Android手機(jī)APP和微信小程序。客戶端與服務(wù)端以HTML、XML和JSON三種數(shù)據(jù)格式與服務(wù)端進(jìn)行數(shù)據(jù)通信。
圖5 平臺(tái)采用的技術(shù)框架
服務(wù)端使用Spring Boot、Spring MVC 等技術(shù)進(jìn)行搭建,通過MyBatis完成數(shù)據(jù)持久化訪問,數(shù)據(jù)保存在MySQL數(shù)據(jù)庫中。服務(wù)端應(yīng)用部署在Tomcat服務(wù)器上。
數(shù)據(jù)設(shè)計(jì)與系統(tǒng)的功能需求及其數(shù)據(jù)需求密切相關(guān),語音數(shù)據(jù)采集服務(wù)平臺(tái)的功能較多,設(shè)計(jì)完成了用戶基本信息表、出題記錄表、答題記錄表、多人賽人員匹配表、多人正規(guī)賽隊(duì)伍信息表、多人正規(guī)賽輪次信息表、語音采集數(shù)據(jù)表、積分明細(xì)表等25個(gè)數(shù)據(jù)庫表。其中語音采集數(shù)據(jù)表的設(shè)計(jì)如表1所示。
表1 語音采集數(shù)據(jù)表結(jié)構(gòu)
下面以多人正規(guī)賽游戲?yàn)槔榻B一下相關(guān)系統(tǒng)實(shí)現(xiàn)。
3.4.1 多人正規(guī)賽在Android APP中的實(shí)現(xiàn)
游戲?qū)崿F(xiàn)的功能界面如圖6所示。
圖6 Android APP中的游戲界面
定義碎片類MultimatchFragment,該類中定義了一些匿名多線程類的對(duì)象,完成游戲計(jì)時(shí)等功能,如表2所示。
表2 多線程對(duì)象的定義
此外,多人正規(guī)賽游戲的功能主要在該類中定義實(shí)現(xiàn),負(fù)責(zé)加載游戲界面、初始化游戲數(shù)據(jù)、進(jìn)行游戲功能的控制,包括:錄音、播放錄音、提交錄音、游戲倒計(jì)時(shí)等功能,該類的主要方法定義及其功能如表3 所示。其中實(shí)現(xiàn)錄音功能的startRecording()方法定義如下:
表3 MultimatchFragment中的方法定義
3.4.2 多人正規(guī)賽在微信小程序中的實(shí)現(xiàn)
微信小程序中的多人正規(guī)賽的功能由四個(gè)文件來實(shí)現(xiàn),分別是:team_battle.js、team_battle.wxm l 和team_battle.wxss,其中的wxss 文件用于設(shè)置樣式,wxm l 文件用于設(shè)置頁面布局,js 文件用于定義實(shí)現(xiàn)功能的各種JavaScript 函數(shù),如表4所示。
表4 team_battle.js中的函數(shù)定義
按下錄音按鈕時(shí)進(jìn)行錄音的startHandel函數(shù)定義如下:
多人正規(guī)賽游戲在微信小程序中的功能界面如圖7所示。
圖7 微信小程序中的游戲界面
本文針對(duì)目前語音AI 面臨的語音數(shù)據(jù)采集問題,提出基于移動(dòng)客戶端的語音數(shù)據(jù)采集與服務(wù)平臺(tái),通過各種語音游戲的方式吸引用戶參與,并通過游戲機(jī)制的設(shè)置獲得語音數(shù)據(jù)收集、校驗(yàn)、標(biāo)注的功能,定制任務(wù)能夠很好地進(jìn)行定向語音數(shù)據(jù)采集,可以較好地解決個(gè)別方言數(shù)據(jù)不均衡的問題,為語音識(shí)別提供更為有效的語音數(shù)據(jù)。