计算单词发音的准确性,单词发音准确性,import webim


import webimport sysimport osimport numpy as npimport fastdtwfrom scikits.audiolab import wavreadimport scikits.talkboxfrom scikits.talkbox import featuresfrom scikits.talkbox.features import mfccurls = (    '/demo', 'hello',    '/calcmfcc', 'calcmfcc',    '/calcdist', 'calcdist',    '/addtemplate', 'addtemplate',)db = web.database(dbn='mysql', user='root', pw='root', db='audiotemplate')def str2list(sstr, spliter):    arr=sstr.split(spliter)    b=[]    for s in arr:        if(s!=''):            b.append(int(s))    return bdef mydist(a, b):    i_dist=0    for i in range(0, len(a)):        i_dist=i_dist+abs(a[i]-b[i])    return i_dist/len(a)def mfcc2str(llist):    re=''    for i in llist:        temp=''        for j in i:            temp=temp+str(j)+'@'        re=re+temp+'#'    return redef str2mfcc(sstr):    temp=sstr.split('#')    temp.pop()    re=[]    for lstr in temp:        llist=[]        arr=lstr.split('@')        arr.pop()        for elem in arr:            llist.append(float(elem))        re.append(llist)    return re def data2mfcc(sstr):    data=str2list(sstr, ',')    temp=mfcc(data)[0]    return mfcc2str(temp)def dist(str1, str2):    mf1=str2mfcc(str1)    np1=np.array(mf1)    mf2=str2mfcc(str2)    np2=np.array(mf2)    re=fastdtw.fastdtw(np1, np2, 1, mydist)[0]    return reclass hello:    def GET(self, name):        return nameclass calcmfcc:    def POST(self):        data=web.data()                       return data2mfcc(data)class calcdist:    def POST(self):        form=web.input(name="a", data="")        name=form.name        mf=data2mfcc(form.data)        temps=db.query('select * from template where name="' + name + '"')        mindist=999999        for temp in temps:                        mindist=min(mindist, dist(mf, temp.mfcc_text))        return mindistclass addtemplate:    def POST(self):        form=web.input(name="a", data="")        mf=data2mfcc(form.data)        db.insert('template', name=form.name, mfcc_text=mf)        return "ok"if __name__ == "__main__":    app = web.application(urls, globals())    app.run()

评论关闭