摘要:需要對個人的日語元音的發(fā)音分析,然后根據(jù)分析確定名發(fā)音者。九個發(fā)音者發(fā)出兩個日本元音先后。其中每塊數(shù)據(jù)中包含的行數(shù)為到不等,每行代表著發(fā)音者的一個時間幀。
業(yè)務(wù)理解(Business Understanding)
該業(yè)務(wù)是分類問題。需要對9個人的日語元音ae的發(fā)音分析,然后根據(jù)分析確定9名發(fā)音者。ae.train文件是訓(xùn)練數(shù)據(jù)集,ae.test文件是用來測試訓(xùn)練效果的,size_ae.test記錄了每個發(fā)音者對應(yīng)的ae.test數(shù)據(jù)文件中包含數(shù)據(jù)的對應(yīng)塊,同理size_ae.train記錄了實際結(jié)果每個塊對應(yīng)的發(fā)音者。
數(shù)據(jù)理解(Data Understanding):
(1) 概述:數(shù)據(jù)是驗證多維時間序列曲線分類的。九個發(fā)音者發(fā)出兩個日本元音/ae/先后。對于每個發(fā)音分析參數(shù),采用12度線性預(yù)測分析,以它來取得的LPC倒譜系數(shù)(LPCC)12離散時間序列。這意味著,一個接一個發(fā)音者話語形成一個時間序列,其長度的范圍是7-29,每一個時間序列是12個特征值。
在時間序列數(shù)共分640塊。270塊用做訓(xùn)練,用370塊進行測試。270塊對應(yīng)著ae.train文件,370塊數(shù)據(jù)對應(yīng)著ae.test文件。
(2)訓(xùn)練集數(shù)據(jù)理解:size_ae.train中的數(shù)據(jù)是30 30 30 30 30 30 30 30 30,表示9個發(fā)音者對應(yīng)的數(shù)據(jù)塊數(shù)(1-30塊對應(yīng)著第一個說話者,31-60對應(yīng)第二個說話者,以此類推),這是 ae.train中的數(shù)據(jù)發(fā)音者對應(yīng)發(fā)音的情況;在ae.train中有270塊數(shù)據(jù),塊與塊之間有一個空行作為分割的標志。其中每塊數(shù)據(jù)中包含的行數(shù)為7到29不等,每行代表著發(fā)音者的一個時間幀。每行包含了12屬性列,因為使用的是12LPCC。
(3) 測試集數(shù)據(jù)有兩種方式理解:
在ae.test中有370塊數(shù)據(jù),塊與塊之間有一個空行作為分割的標志。其中每塊數(shù)據(jù)中包含的行數(shù)為7到29不等,每行代表著發(fā)音者的一個時間幀。每行包含了12屬性列。
方式A:size_ae.test中的數(shù)據(jù)是31 35 88 44 29 24 40 50 29,表示9個發(fā)音者對應(yīng)的數(shù)據(jù)塊數(shù)(1-31對應(yīng)著第一個說話者,以此類推)。則樣本集是以分塊為單位,即對應(yīng)9個待估計樣本,預(yù)測這9個人對應(yīng)的發(fā)音者。
方式B:ae.test對應(yīng)的370塊對應(yīng)不同人的發(fā)音測試樣本,如此就需要對370個樣本判斷對應(yīng)的發(fā)音者(1-9類發(fā)音者)。
預(yù)測:我采用了B鐘方式的理解做的,由于B中方式的樣本太少,預(yù)測正確率一定比A低。(由于時間有限,沒有去實現(xiàn)A方式的的預(yù)測,B正確率90.5%)
(4) 數(shù)據(jù)預(yù)處理:由于從ae.train和ae.test數(shù)據(jù)文件看,沒有缺失值,一共12維,每維數(shù)據(jù)范圍差距以及不同數(shù)據(jù)維差距都不大,所以不需要對數(shù)據(jù)進行歸一化處理。暫且認定數(shù)據(jù)質(zhì)量是完整的,沒有出錯的。
數(shù)據(jù)準備(Data Preparation)
(1)數(shù)據(jù)選擇:12維的數(shù)據(jù)都要選擇,都是重要屬性組成
(2)數(shù)據(jù)清潔:由觀察可忽略數(shù)據(jù)源可能在測試或人為記錄中的錯誤,忽略噪音,沒有缺失值,不需要人為對缺失值處理等;
(3)數(shù)據(jù)創(chuàng)建:在原有數(shù)據(jù)的基礎(chǔ)上根據(jù)塊的劃分,將270塊按照size_ae.train文件要求以30一份劃分為9類,分別對應(yīng)9個人不同發(fā)音類,在12維數(shù)據(jù)之前加上tagClass作為類的標志(tagClass:1-9),建立13維;
(4)數(shù)據(jù)合并:沒有需要合并的數(shù)據(jù),在數(shù)據(jù)準備階段,中間處理過程有需要合并的;
(5)數(shù)據(jù)格式化:由訓(xùn)練集文件得12維的數(shù)據(jù)格式都是數(shù)字類型,double型,而且都是保留6位小數(shù),如果保留小數(shù)位不統(tǒng)一,則需要進行處理,使數(shù)據(jù)格式一致,但文檔中數(shù)據(jù)格式已經(jīng)比較規(guī)范,而且不同數(shù)據(jù)維之間都是用空格間隔。
建立模型(Modeling)
(1) 模型設(shè)計,設(shè)計方案:
A. 在訓(xùn)練集中,有270個塊,對于每一塊,取每列(維)的平均值作為該塊維度的一個評估,這樣可保證每個塊每維數(shù)據(jù)獨立于其他塊的維度數(shù)據(jù),以塊作為單位進行數(shù)據(jù)處理。即把每一塊的數(shù)據(jù),相當于一個(7-29)行12列的矩陣,轉(zhuǎn)化為一個12維的list或數(shù)組,轉(zhuǎn)化過程以每塊每維的平均值作為list值組成。
B. 由上一步可以得到一個270行12列的大矩陣(或者簡單說是270個list),然后對270個進行類劃分,根據(jù)size_ae.train文件要求以30一份劃分為9類,分別對應(yīng)9個人不同發(fā)音類,即對應(yīng)9人,每個人有一個矩陣30*12,添加一個屬性tagClass(1-9),標志不同的類,即不同矩陣屬于對應(yīng)的類(1-9);
C. 把測試樣本(以370個為單位),把每個樣本代入到以上9類(9個矩陣)計算歐幾里德距離,取最小距離所在的類為樣本歸屬類。
模型評估(Evaluation)
(1)預(yù)測結(jié)果:運行結(jié)果如下圖 ,包括文件讀取和生成之類的,在最后一個main函數(shù)里面調(diào)用,用了1.407秒。
(2) 結(jié)果評估:由于選取了每個塊中的每維平均值做為該塊該維的平均值,在數(shù)值上沒問題,但忽略了該維中時間序列(7-29)間的順序值特征,所以此問題是導(dǎo)致算法估計沒有得到更高準確率的原因。
(3)算法改進:
第一步: 對每個分塊,每一維分別建立時間序列(7-29)和對應(yīng)的具體值的線性回歸方程(y=kx+b),因為直線的斜率能反應(yīng)分塊時間序列變化對應(yīng)的具體值的變化趨勢,同時加了b后整個值能反映某維值范圍。然后抽取整個塊的每維值(k,b),則每個塊能轉(zhuǎn)換為list,list里面有1行,24列的矩陣,Eg:(k1,b1,k2,b2,k3,b3,k4,b4……….k12,b12)
第二步:把測試集370個樣本也轉(zhuǎn)換為370個list,然后算歐幾里德距離。
例如:對應(yīng)測試集(k1’,b1’,…………………….k12’,b12’)
計算距離:Distance = Math.sqrt(Math.pow((k1-k1’),2)+ Math.pow((b1-b1’),2))+….. +Math.sqrt(Math.pow((k12-k12’),2)+ Math.pow((b12-b12’),2));
然后取距離最小所在的類作為該測試集樣本類,這個估計算法概率可以達到95%及以上。
(2) 算法實現(xiàn):
A.項目框架
B.各類函數(shù)及作用分析
(本人覺得沒有特別復(fù)雜的函數(shù)實現(xiàn),故沒復(fù)制代碼解釋 ,具體實現(xiàn)看項目代碼)
? ReadWriteTest.java: 讀取處理文件格式,把270塊->270“行”->9個矩陣(加上類標,但獨立保存每個矩陣對應(yīng)的30行)
①writerTxt函數(shù):
input:內(nèi)容,路徑 (把內(nèi)容寫到指定文件)
output:多個文件D://bigdata//test-270.txt,D://bigdata//train-9-30.txt,
②readTxt函數(shù):
對原數(shù)據(jù)進行格式處理->1把270塊轉(zhuǎn)換為270行;2. 把270行分為9類,加上類標
intput:讀的路徑,flag 0,1分別對train,test做不同處理
output:多出2個txt文件 內(nèi)容,test-270.txt,train-9-30
? SampleClassify.java: 測試樣本,輸出預(yù)測值
①mapSpeakers變量:
存儲所有發(fā)音者類對應(yīng)其行(每行是一個塊的轉(zhuǎn)換), key是發(fā)音者類,value是對應(yīng)30個行(用二維數(shù)組存儲)
②getSpeakerMatrix函數(shù):初始化矩陣,3013
③readTxtTrain函數(shù):取train文件值,存儲到mapSpeakers中
④readTxtTest函數(shù):
讀取test中370個sample,每個sample進行和9個類的距離計算,然后存在數(shù)組中,然后比較得到最小的,最小所在類即是該sample所屬類(發(fā)音者)
⑤ getClassifyTag函數(shù):
返回距離最近的那個類的標號:1-9之間 sample 是1-370塊中的樣本,是一個一維數(shù)組,長度13,第一位表示下標
? CheckoutCorrect.java: 驗證正確率
①blockArr數(shù)組: 定義劃分塊,使方便能根據(jù)塊輸出samplId tagClass,
方便自己預(yù)測值于實際預(yù)測文件中值進行比較
②outputCompareTest:ae.train的結(jié)果通過size_ae.train劃分,存儲到文件compare.txt中,格式:sampleId tagClass
③predictionCorrect:比較兩個文件內(nèi)容,輸出正確預(yù)測值的概率
具體代碼參考bitbucket地址:bitbucket 原代碼
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/64277.html
摘要:在草案中增加了對的支持主要作用在兩個非常重要的方面語音識別將所說的轉(zhuǎn)換成文本文字語音合成將文本文字讀出來而在版本發(fā)布后宣布對該特性的支持今天重要介紹第二部分。是一款基于的跨平臺的發(fā)音支持類庫,支持超過種語言和種聲音,分為免費版和商業(yè)版。 showImg(https://segmentfault.com/img/bVuZqk); 在w3c草案中增加了對Web Speech Api的支持;...
摘要:的人工智能版圖人工智能版圖由應(yīng)用平臺框架三大部分組成應(yīng)用層是提供各種應(yīng)用服務(wù),比如平臺層是平臺。應(yīng)用層主推三大成熟應(yīng)用基于深度學(xué)習(xí)的圖像和視頻分析它能實現(xiàn)對象與場景檢測人臉分析面部比較人臉識別名人識別圖片調(diào)節(jié)等功能。 AWS的人工智能版圖AWS人工智能版圖由:應(yīng)用、平臺、框架三大部分組成AI應(yīng)用層:是提供各種...
摘要:的人工智能版圖人工智能版圖由應(yīng)用平臺框架三大部分組成應(yīng)用層是提供各種應(yīng)用服務(wù),比如平臺層是平臺。應(yīng)用層主推三大成熟應(yīng)用基于深度學(xué)習(xí)的圖像和視頻分析它能實現(xiàn)對象與場景檢測人臉分析面部比較人臉識別名人識別圖片調(diào)節(jié)等功能。AWS的人工智能版圖 AWS人工智能版圖由:應(yīng)用、平臺、框架三大部分組成 AI應(yīng)用層:是提供各種應(yīng)用服務(wù),比如Amazon Rekognition、Polly...
摘要:技術(shù)之類加載機制掘金類加載機制是語言的一大亮點,使得類可以被動態(tài)加載到虛擬機中。玩轉(zhuǎn)仿探探卡片式滑動效果掘金講起本篇博客的歷史起源,估計有一段歷史了。 Java 技術(shù)之類加載機制 - Android - 掘金類加載機制是 Java 語言的一大亮點,使得 Java 類可以被動態(tài)加載到 Java 虛擬機中。 這次我們拋開術(shù)語和概念,從例子入手,由淺入深地講解 Java 的類加載機制。 本文...
閱讀 1433·2019-08-30 15:55
閱讀 1692·2019-08-26 10:21
閱讀 3476·2019-08-23 18:28
閱讀 3406·2019-08-23 15:38
閱讀 771·2019-08-23 15:24
閱讀 2164·2019-08-23 13:59
閱讀 805·2019-08-23 11:31
閱讀 2897·2019-08-23 10:53