日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

语音识别2:CTC对齐的算法

發(fā)布時(shí)間:2025/3/21 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 语音识别2:CTC对齐的算法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、提要

?

如果現(xiàn)在有一個(gè)包含剪輯語音和對(duì)應(yīng)的文本,我們不知道如何將語音片段與文本進(jìn)行對(duì)應(yīng),這樣對(duì)于訓(xùn)練一個(gè)語音識(shí)別器增加了難度。?

如下圖,存在圖片與文本的對(duì)齊不易,語音聲波對(duì)文本的對(duì)齊不易。

以上構(gòu)成如下事實(shí):

輸入(如音頻信號(hào))用符號(hào)序列?和標(biāo)簽,為了方便訓(xùn)練這些數(shù)據(jù)我們希望能夠找到輸人X與輸出Y 之間精確的映射關(guān)系。

先梳理一下有幾個(gè)難點(diǎn):

  • X的長度是不固定的。
  • 當(dāng)固定X長度,對(duì)應(yīng)的Y長度是不固定的。
  • X中任意元素和Y中任意元素和之間對(duì)應(yīng)是不固定的。
  • 使用CTC算法能克服上述問題。到這里可以知道CTC就是可以解決輸入輸出對(duì)應(yīng)問題的一種算法。

    二、算法原理

    這里我們首先需要明確的是,還拿語音識(shí)別來說,現(xiàn)在使用的CTC常用的場(chǎng)景是RNN后接CTC算法,RNN模型輸入是一個(gè)個(gè)音頻片段,輸出個(gè)數(shù)與輸入的維度一樣,有T個(gè)音頻片段,就輸出T個(gè)維度的概率向量,每個(gè)向量又由字典個(gè)數(shù)的概率組成。例如網(wǎng)絡(luò)輸入音頻個(gè)數(shù)定為T,字典中不同字的個(gè)數(shù)為N,那么RNN輸出的維度為T × N 。根據(jù)這個(gè)概率輸出分布,我們就能得到最可能的輸出結(jié)果。在接下來的討論中可以把RNN+CTC看成一個(gè)整體,當(dāng)然也可以將RNN替換成其他的提取特征算法。
    ?

    2.1 損失函數(shù)的定義

    對(duì)于給定的輸入X,我們訓(xùn)練模型希望最大化Y 的后驗(yàn)概率P(Y|X),P(Y|X)應(yīng)該是可導(dǎo)的,這樣我們就能利用梯度下降訓(xùn)練模型了。
    ?

    2.2 測(cè)試和驗(yàn)證

    當(dāng)我們已經(jīng)訓(xùn)練好一個(gè)模型后,輸入X,我們希望輸出Y 的條件概率最高即?而且我們希望盡量快速的得到?值,利用CTC我們能在低投入情況下迅速找到一個(gè)近似的輸出。

    2.3 CTC對(duì)齊算法

    ????????CTC算法對(duì)于輸入的X能給出非常多的Y的條件概率輸出(可以想象RNN輸出概率分布矩陣,所以通過矩陣中元素的組合可以得到很多Y值作為最終輸出),在計(jì)算輸出過程的一個(gè)關(guān)鍵問題就是CTC算法如何將輸入和輸出進(jìn)行對(duì)齊的。在接下來的部分中,我們先來看一下對(duì)齊的解決方法,然后介紹損失函數(shù)的計(jì)算方法和在測(cè)試階段中找到合理輸出的方法。

    ????????CTC算法并不要求輸入輸出是嚴(yán)格對(duì)齊的。但是為了方便訓(xùn)練模型我們需要一個(gè)將輸入輸出對(duì)齊的映射關(guān)系,知道對(duì)齊方式才能更好的理解之后損失函數(shù)的計(jì)算方法和測(cè)試使用的計(jì)算方法。

    為了更好的理解CTC的對(duì)齊方法,先舉個(gè)簡(jiǎn)單的對(duì)齊方法。假設(shè)對(duì)于一段音頻,我們希望的輸出是Y = [ c , a , t ] 這個(gè)序列,一種將輸入輸出進(jìn)行對(duì)齊的方式如下圖所示,先將每個(gè)輸入對(duì)應(yīng)一個(gè)輸出字符,然后將重復(fù)的字符刪除。

    ?上述對(duì)齊方式有兩個(gè)問題:

    通常這種對(duì)齊方式是不合理的。比如在語音識(shí)別任務(wù)中,有些音頻片可能是無聲的,這時(shí)候應(yīng)該是沒有字符輸出的
    對(duì)于一些本應(yīng)含有重復(fù)字符的輸出,這種對(duì)齊方式?jīng)]法得到準(zhǔn)確的輸出。例如輸出對(duì)齊的結(jié)果為[ h , h , e , l , l , l , o ],通過去重操作后得到的不是“hello”而是“helo”

    為了解決上述問題,CTC算法引入的一個(gè)新的占位符用于輸出對(duì)齊的結(jié)果。這個(gè)占位符稱為空白占位符,通常使用符號(hào)? \epsilon?,這個(gè)符號(hào)在對(duì)齊結(jié)果中輸出,但是在最后的去重操作會(huì)將所有的? \epsilon?刪除得到最終的輸出。利用這個(gè)占位符,可以將輸入與輸出有了非常合理的對(duì)應(yīng)關(guān)系,如下圖所示。?

    ?在這個(gè)映射方式中,如果在標(biāo)定文本中有重復(fù)的字符,對(duì)齊過程中會(huì)在兩個(gè)重復(fù)的字符當(dāng)中插入? \epsilon?占位符。利用這個(gè)規(guī)則,上面的“hello”就不會(huì)變成“helo”了。
    ?

    回到上面Y = [ c , a , t ] 這個(gè)例子來,下圖中有幾個(gè)示列說明有效的對(duì)齊方式和無效的對(duì)齊方式,在無效的對(duì)齊方式中舉了三種例子,占位符插入位置不對(duì)導(dǎo)致的輸出不對(duì),輸出長度與輸入不對(duì)齊,輸出缺少字符a
    ?

    ?2.4 CTC算法的對(duì)齊方式有下列屬性:

    • 輸入與輸出的對(duì)齊方式是單調(diào)的,即如果輸入下一輸入片段時(shí)輸出會(huì)保持不變或者也會(huì)移動(dòng)到下一個(gè)時(shí)間片段
    • 輸入與輸出是多對(duì)一的關(guān)系
    • 輸出的長度小于等于輸入

    三、CTC損失函數(shù)

    ????????這里要明確一點(diǎn),對(duì)于一個(gè)標(biāo)定好的音頻片段,訓(xùn)練該片段時(shí),我們希望的輸出就是標(biāo)定的文本,如下圖所示,音頻說的一個(gè)hello,RNN或者其他模型輸出的是相同數(shù)量的向量,向量里是每個(gè)字母的概率。

    ?對(duì)于一對(duì)輸入輸出( X , Y ) 來說,CTC的目標(biāo)是將下式概率最大化:


    ????????解釋一下,對(duì)于RNN+CTC模型來說,RNN輸出的就是概率,t表示的是RNN里面的時(shí)間的概念。乘法表示一條路徑的所有字符概率相乘,加法表示多條路徑。因?yàn)樯厦嬲f過CTC對(duì)齊輸入輸出是多對(duì)一的,例如he?l?lo?與h e e ? l ? l o對(duì)應(yīng)的都是“hello”,這就是輸出的其中兩條路徑,要將所有的路徑相加才是輸出的條件概率.

    ????????但是對(duì)于一個(gè)輸出,路徑會(huì)非常的多,這樣直接計(jì)算概率是不現(xiàn)實(shí)的,CTC算法采用動(dòng)態(tài)規(guī)劃的思想來求解輸出的條件概率,如下圖所示,該圖想說明的是通過動(dòng)態(tài)規(guī)劃來進(jìn)行路徑的合并(看不懂也沒關(guān)系,下面有詳細(xì)的解釋)

    這里有必要將動(dòng)態(tài)規(guī)劃分開另外講述:《動(dòng)態(tài)規(guī)劃原理》。?

    ?四、CTC的特征

    • 條件獨(dú)立假設(shè):

    ????????CTC的一個(gè)非常不合理的假設(shè)是其假設(shè)每個(gè)時(shí)間片都是相互獨(dú)立的,這是一個(gè)非常不好的假設(shè)。在OCR或者語音識(shí)別中,各個(gè)時(shí)間片之間是含有一些語義信息的,所以如果能夠在CTC中加入語言模型的話效果應(yīng)該會(huì)有提升。

    • 單調(diào)對(duì)齊:

    ????????CTC的另外一個(gè)約束是輸入X與輸出Y之間的單調(diào)對(duì)齊,在OCR和語音識(shí)別中,這種約束是成立的。但是在一些場(chǎng)景中例如機(jī)器翻譯,這個(gè)約束便無效了。

    • 多對(duì)一映射:

    ????????CTC的又一個(gè)約束是輸入序列X的長度大于標(biāo)簽數(shù)據(jù) Y的長度,但是對(duì)于X XX的長度大于Y YY的長度的場(chǎng)景,CTC便失效了。

    參考

    CTC算法詳解_Michael’s Blog-CSDN博客_ctc

    總結(jié)

    以上是生活随笔為你收集整理的语音识别2:CTC对齐的算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。