日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

基于深度学习的中文语音识别系统框架(pluse)

發布時間:2025/3/15 windows 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于深度学习的中文语音识别系统框架(pluse) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 聲學模型
    • GRU-CTC
    • DFCNN
    • DFSMN
  • 語言模型
    • n-gram
    • CBHG
  • 數據集

本文搭建一個完整的中文語音識別系統,包括聲學模型和語言模型,能夠將輸入的音頻信號識別為漢字。

聲學模型使用了應用較為廣泛的遞歸循環網絡中的GRU-CTC的組合,除此之外還引入了科大訊飛提出的DFCNN深度全序列卷積神經網絡,也將引入阿里的架構DFSMN。

語言模型有傳統n-gram模型和基于深度神經網絡的CBHG網絡結構,該結構是谷歌用于TTS任務中的tacotron系統,本文中將該系統部分結構移植過來用于搭建拼音序列生成漢字序列系統。

數據集采用了目前能找到的所有中文免費數據,包括:thchs-30、aishell、primewords、st-cmd四個數據集,訓練集總計大約450個小時。

該項目地址在:https://github.com/audier/my_ch_speech_recognition寫的時候可能有些亂,后續會整理。

聲學模型

聲學模型目前開源了部分示例模型,更大模型將在確認識別結果后更新。

GRU-CTC

我們使用 GRU-CTC的方法搭建了第一個聲學模型,在gru_ctc_am.py中,利用循環神經網絡可以利用語音上下文相關的信息,得到更加準確地信息,而GUR又能選擇性的保留需要的信息。該模型使用python/keras進行搭建,本文系統都基于python搭建。
網絡結構如下:
該結構沒有真正使用,只是一個基本框架,類似于helloworld,用于作為示例。

def creatModel():input_data = Input(name='the_input', shape=(500, 26))layer_h1 = Dense(512, activation="relu", use_bias=True, kernel_initializer='he_normal')(input_data)layer_h1 = Dropout(0.2)(layer_h1)layer_h2 = Dense(512, activation="relu", use_bias=True, kernel_initializer='he_normal')(layer_h1)layer_h2 = Dropout(0.2)(layer_h2)layer_h3 = Dense(512, activation="relu", use_bias=True, kernel_initializer='he_normal')(layer_h2)layer_h4_1 = GRU(512, return_sequences=True, kernel_initializer='he_normal', dropout=0.3)(layer_h3)layer_h4_2 = GRU(512, return_sequences=True, go_backwards=True, kernel_initializer='he_normal', dropout=0.3)(layer_h3)layer_h4 = add([layer_h4_1, layer_h4_2])layer_h5 = Dense(512, activation="relu", use_bias=True, kernel_initializer='he_normal')(layer_h4)layer_h5 = Dropout(0.2)(layer_h5)layer_h6 = Dense(512, activation="relu", use_bias=True, kernel_initializer='he_normal')(layer_h5)layer_h6 = Dropout(0.2)(layer_h6)layer_h7 = Dense(512, activation="relu", use_bias=True, kernel_initializer='he_normal')(layer_h6)layer_h7 = Dropout(0.2)(layer_h7)layer_h8 = Dense(1177, activation="relu", use_bias=True, kernel_initializer='he_normal')(layer_h7)output = Activation('softmax', name='Activation0')(layer_h8)model_data = Model(inputs=input_data, outputs=output)#ctc層labels = Input(name='the_labels', shape=[50], dtype='float32')input_length = Input(name='input_length', shape=[1], dtype='int64')label_length = Input(name='label_length', shape=[1], dtype='int64')loss_out = Lambda(ctc_lambda, output_shape=(1,), name='ctc')([labels, output, input_length, label_length])model = Model(inputs=[input_data, labels, input_length, label_length], outputs=loss_out)model.summary()ada_d = Adadelta(lr=0.01, rho=0.95, epsilon=1e-06)model=multi_gpu_model(model,gpus=2)model.compile(loss={'ctc': lambda y_true, output: output}, optimizer=ada_d)#test_func = K.function([input_data], [output])print("model compiled successful!")return model, model_data

DFCNN

由于兩個原因在使用GRU作為語音識別的時候我們會遇到問題。一方面是我們常常使用雙向循環神經網絡才能取得更好的識別效果,這樣會影響解碼實時性。另一方面隨著網絡結構復雜性增加,雙向GRU的參數是相同節點數全連接層的6倍,這樣會導致訓練速度非常緩慢。
科大訊飛提出了一種使用深度卷積神經網絡來對時頻圖進行識別的方法,就是DFCNN,利用CNN參數共享機制,可以將參數數量下降一個級別,且深層次的卷積和池化層能夠充分考慮語音信號的上下文信息,且可以在較短的時間內就可以得到識別結果,具有較好的實時性。
該模型在cnn_witch_fbank.py和cnn_ctc_am.py中,實驗中是所有網絡結果最好的模型,目前能夠取得較好的泛化能力,聲學模型識別率能夠達到90%以上,其網絡結構如下:

def creatModel():input_data = Input(name='the_input', shape=(800, 200, 1))# 800,200,32layer_h1 = Conv2D(32, (3,3), use_bias=True, activation='relu', padding='same', kernel_initializer='he_normal')(input_data)layer_h1 = BatchNormalization(mode=0,axis=-1)(layer_h1)layer_h2 = Conv2D(32, (3,3), use_bias=True, activation='relu', padding='same', kernel_initializer='he_normal')(layer_h1)layer_h2 = BatchNormalization(axis=-1)(layer_h2)layer_h3 = MaxPooling2D(pool_size=(2,2), strides=None, padding="valid")(layer_h2)# 400,100,64layer_h4 = Conv2D(64, (3,3), use_bias=True, activation='relu', padding='same', kernel_initializer='he_normal')(layer_h3)layer_h4 = BatchNormalization(axis=-1)(layer_h4)layer_h5 = Conv2D(64, (3,3), use_bias=True, activation='relu', padding='same', kernel_initializer='he_normal')(layer_h4)layer_h5 = BatchNormalization(axis=-1)(layer_h5)layer_h5 = MaxPooling2D(pool_size=(2,2), strides=None, padding="valid")(layer_h5)# 200,50,128layer_h6 = Conv2D(128, (3,3), use_bias=True, activation='relu', padding='same', kernel_initializer='he_normal')(layer_h5)layer_h6 = BatchNormalization(axis=-1)(layer_h6)layer_h7 = Conv2D(128, (3,3), use_bias=True, activation='relu', padding='same', kernel_initializer='he_normal')(layer_h6)layer_h7 = BatchNormalization(axis=-1)(layer_h7)layer_h7 = MaxPooling2D(pool_size=(2,2), strides=None, padding="valid")(layer_h7)# 100,25,128layer_h8 = Conv2D(128, (1,1), use_bias=True, activation='relu', padding='same', kernel_initializer='he_normal')(layer_h7)layer_h8 = BatchNormalization(axis=-1)(layer_h8)layer_h9 = Conv2D(128, (3,3), use_bias=True, activation='relu', padding='same', kernel_initializer='he_normal')(layer_h8)layer_h9 = BatchNormalization(axis=-1)(layer_h9)# 100,25,128layer_h10 = Conv2D(128, (1,1), use_bias=True, activation='relu', padding='same', kernel_initializer='he_normal')(layer_h9)layer_h10 = BatchNormalization(axis=-1)(layer_h10)layer_h11 = Conv2D(128, (3,3), use_bias=True, activation='relu', padding='same', kernel_initializer='he_normal')(layer_h10)layer_h11 = BatchNormalization(axis=-1)(layer_h11)# Reshape層layer_h12 = Reshape((100, 3200))(layer_h11) # 全連接層layer_h13 = Dense(256, activation="relu", use_bias=True, kernel_initializer='he_normal')(layer_h12)layer_h13 = BatchNormalization(axis=1)(layer_h13)layer_h14 = Dense(1177, use_bias=True, kernel_initializer='he_normal')(layer_h13)output = Activation('softmax', name='Activation0')(layer_h14)model_data = Model(inputs=input_data, outputs=output)# ctc層labels = Input(name='the_labels', shape=[50], dtype='float32')input_length = Input(name='input_length', shape=[1], dtype='int64')label_length = Input(name='label_length', shape=[1], dtype='int64')loss_out = Lambda(ctc_lambda, output_shape=(1,), name='ctc')([labels, output, input_length, label_length])model = Model(inputs=[input_data, labels, input_length, label_length], outputs=loss_out)model.summary()ada_d = Adadelta(lr=0.01, rho=0.95, epsilon=1e-06)#model=multi_gpu_model(model,gpus=2)model.compile(loss={'ctc': lambda y_true, output: output}, optimizer=ada_d)#test_func = K.function([input_data], [output])print("model compiled successful!")return model, model_data

DFSMN

而前饋記憶神經網絡也也解決了雙向GRU的參數過多和實時性較差的缺點,它利用一個記憶模塊,包含了上下幾幀信息,能夠得到不輸于雙向GRU-CTC的識別結果,阿里最新的開源系統就是基于DFSMN的聲學模型,只不過在kaldi的框架上實現的。我們將考慮使用DFSMN+CTC的結構在python上實現。該網絡后續將實現。
結構如下:

語言模型

n-gram

n元語法是一個非常經典的語言模型,這里不過多介紹啦。

CBHG

該想法來自于一個大神搞輸入法的項目,下面部分也引用此處:搜喵出入法
他是利用該模型建立一個按鍵到漢字的作用,本文對其結構和數據處理部分稍作改動,作為語言模型。

拼音輸入的本質上就是一個序列到序列的模型:輸入拼音序列,輸出漢字序列。所以天然適合用在諸如機器翻譯的seq2seq模型上。

模型初始輸入是一個隨機采樣的拼音字母的character embedding,經過一個CBHG的模型,輸出是五千個漢字對應的label。
這里使用的CBHG模塊是state-of-art的seq2seq模型,用在Google的機器翻譯和語音合成中,該模型放在language_model/CBHG.py中,結構如下:
圖片來自 Tacotron: Towards End-to-End Speech Synthesis

關于該模型值得注意的幾點:

1.模型先使用一系列的一維卷積網絡,有一系列的filter,filter_size從1到K,形成一個Conv1D Bank。這樣的作用相當于使用了一系列的unigrams, bigrams直到K-grams,盡可能多的拿到輸入序列從local到context的完整信息。其實這樣的模型,與之前我們提到過的IDCNN(Iterated Dilated Convolutionary Nerual Network)有異曲同工之妙。而IDCNN相比較起來有更少的參數,不知道如果把CBHG的Conv1D Bank換成IDCNN是怎樣的效果。

2.模型在最終的BiGRU之前加入了多層的Highway Layers,用來提取更高層次的特征。Highway Layers可以理解為加入了本來不相鄰層之間的“高速公路”,可以讓梯度更好地向前流動;同時又加入一個類似LSTM中門的機制,自動學習這些高速公路的開關和流量。Highway Networks和Residual Networks、Dense Networks都是想拉近深度網絡中本來相隔很遠的層與層之間的距離,使很深的網絡也可以比較容易地學習。

3.模型中還使用了Batch Normalization(繼ReLU之后大家公認的DL訓練技巧),Residual Connection(減少梯度的傳播距離),Stride=1的Max-pooling(保證Conv的局部不變性和時間維度的粒度)以及一個時髦的BiGRU。Tacotron: Towards End-to-End Speech Synthesis這篇文章發表在2017年4月,最潮的DL技術用到了很多。

項目基于深度學習的中文語音識別系統中language_model/文件夾中已經默認放置了例子語料,可以通過直接運行CBHG.py進行數據預處理、模型訓練、和模型測試,下面是我用項目中的默認數據在12G GPU上訓練了大概小半天的模型識別結果,如果利用網絡爬蟲增加數據集,將會有更好的泛化結果。

請輸入測試拼音:ta1 mei2 you3 duo1 shao3 hao2 yan2 zhuang4 yu3 dan4 ta1 que4 ba3 ai4 qin1 ren2 ai4 jia1 ting2 ai4 zu3 guo2 ai4 jun1 dui4 wan2 mei3 de tong3 yi1 le qi3 lai2 她沒有多少豪言壯語但她卻把愛親人愛家庭愛祖國愛軍隊完美地統一了起來請輸入測試拼音:chu2 cai2 zheng4 bo1 gei3 liang3 qian1 san1 bai3 wan4 yuan2 jiao4 yu4 zi1 jin1 wai4 hai2 bo1 chu1 zhuan1 kuan3 si4 qian1 wu3 bai3 qi1 shi2 wan4 yuan2 xin1 jian4 zhong1 xiao3 xue2 除財政撥給兩千三百萬元教太資金外還撥出專款四千五百七十萬元新建中小學請輸入測試拼音:ke3 shi4 chang2 chang2 you3 ren2 gao4 su4 yao2 xian1 sheng1 shuo1 kan4 jian4 er4 xiao3 jie3 zai4 ka1 fei1 guan3 li3 he2 wang2 jun4 ye4 wo4 zhe shou3 yi1 zuo4 zuo4 shang4 ji3 ge4 zhong1 tou2 可是常常有人告訴姚先生說看見二小姐在咖啡館里和王俊業握著族一坐坐上幾個鐘頭

數據集

數據集采用了目前我能找到的所有中文免費數據,包括:thchs-30、aishell、primewords、st-cmd四個數據集,訓練集總計大約450個小時,在實驗過程中,使用thchs-30+aishell+st-cmd數據集對DFCNN聲學模型進行訓練,以64batch_size訓練。

  • 數據集
    • 共計約430小時,相關鏈接:http://www.openslr.org/resources.php
    • st-cmd、primewords、Aishell、thchs30四個數據集,整理為相同格式,放于some_expriment\data_process\datalist中。包含了解壓后數據的路徑,以及訓練所需的數據標注格式,其中prime數據沒有區分訓練集等,為我手工區分。各個數據集的數量(句)如下:

      Nametraindevtest
      aishell120098143267176
      primewords4078350465073
      thchs-30100008932495
      st-cmd100006002000

這是目前能找到的所有開源中文語料,如果還有希望大神能夠留言提示。

轉載請注明出處:https://www.cnblogs.com/sunhongwen/p/9613674.html

轉載于:https://www.cnblogs.com/sunhongwen/p/9613674.html

總結

以上是生活随笔為你收集整理的基于深度学习的中文语音识别系统框架(pluse)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人午夜在线观看 | 国产精品久久久久久久久久久久久久 | 久久久久人妻一区二区三区 | 欧美国产免费 | 久久久亚洲 | 男人天堂视频在线 | 99re6热在线精品视频播放 | 久久a级片| 国产精品久免费的黄网站 | 国产日日夜夜 | jizzzz中国| 日本少妇色视频 | 人人爱人人澡 | 成人在线视频一区二区三区 | 成年人在线播放视频 | 69成人网 | 精品国偷自产在线 | 国产综合在线播放 | 国产无遮挡又黄又爽又色视频 | 日韩在线一级片 | 在线精品视频一区 | 91国偷自产一区二区三区女王 | 国产鲁鲁视频在线观看免费 | 女人天堂av | 动漫精品一区二区三区 | 日本熟妇乱子伦xxxx | 成人动漫在线观看免费 | 国产成年人网站 | 免播放器av| 波多野吉衣一区二区三区 | 欧美成年人| 不良视频在线观看 | 久热国产精品视频 | 夜夜嗨av一区二区三区免费区 | 91亚色 | 亚洲欧美小视频 | 日日日人人人 | 欧美日韩在线视频观看 | 偷拍亚洲精品 | 欧美激情图片 | 久久久久99人妻一区二区三区 | jizz日本视频 | 能免费看18视频网站 | www国产成人 | 亚洲色图网站 | 日韩精品在线观看网站 | 91中文字幕在线 | 激情专区 | 色欲AV无码精品一区二区久久 | 91精品网站 | 在线观看午夜视频 | 好吊妞视频在线 | 成人国产网站 | 中文字幕av有码 | 侵犯亲女在线播放视频 | 天天操天天射天天爱 | 欧美在线播放视频 | 91高跟黑色丝袜呻吟在线观看 | 亚洲无毛视频 | 波多野结衣一本一道 | 欧美成人aaaaa | 一区在线观看 | 中国黄色一级片 | 日韩在线观看第一页 | 欧美成视频| 自拍偷拍三级 | 熟女毛毛多熟妇人妻aⅴ在线毛片 | 久久中文字幕精品 | 无码精品人妻一区二区三区漫画 | 亚洲AV成人无码久久精品巨臀 | 国产欧美在线播放 | 欧美一区二区三区激情 | 久久香蕉综合 | 少妇熟女高潮流白浆 | 日韩精品在线免费视频 | 日本色影院| 金8天国av | 亚洲一区二区影视 | 日本成人中文字幕 | 色撸撸在线观看 | 97影院 | 亚洲第一偷拍 | 国产一级特黄aaa大片 | 992tv在线成人免费观看 | 91精品国产日韩91久久久久久 | 麻豆精品国产传媒 | 福利电影一区 | 三级福利 | 大粗鳮巴久久久久久久久 | 视频一区国产精品 | 蘑菇视频黄色 | 欧美特黄色片 | 国产午夜精品福利 | 久久色图| 午夜裸体性播放 | 色漫在线观看 | 久久无码精品丰满人妻 | 天天射天天操天天干 | 视色影院|