語音是如何變為文字的?詳解語音識別技術原理

2021-02-15 21ic電子網

簡要給大家介紹一下語音怎麼變文字的吧。需要說明的是,這篇文章為了易讀性而犧牲了嚴謹性,因此文中的很多表述實際上是不準確的。對於有興趣深入了解的同學,本文的末尾推薦了幾份進階閱讀材料。下面我們開始。

首先,我們知道聲音實際上是一種波。常見的mp3等格式都是壓縮格式,必須轉成非壓縮的純波形文件來處理,比如Windows PCM文件,也就是俗稱的wav文件。wav文件裡存儲的除了一個文件頭以外,就是聲音波形的一個個點了。下圖是一個波形的示例。

在開始語音識別之前,有時需要把首尾端的靜音切除,降低對後續步驟造成的幹擾。這個靜音切除的操作一般稱為VAD,需要用到信號處理的一些技術。

要對聲音進行分析,需要對聲音分幀,也就是把聲音切開成一小段一小段,每小段稱為一幀。分幀操作一般不是簡單的切開,而是使用移動窗函數來實現,這裡不詳述。幀與幀之間一般是有交疊的,就像下圖這樣:

圖中,每幀的長度為25毫秒,每兩幀之間有25-10=15毫秒的交疊。我們稱為以幀長25ms、幀移10ms分幀。

分幀後,語音就變成了很多小段。但波形在時域上幾乎沒有描述能力,因此必須將波形作變換。常見的一種變換方法是提取MFCC特徵,根據人耳的生理特性,把每一幀波形變成一個多維向量,可以簡單地理解為這個向量包含了這幀語音的內容信息。這個過程叫做聲學特徵提取。實際應用中,這一步有很多細節,聲學特徵也不止有MFCC這一種,具體這裡不講。

至此,聲音就成了一個12行(假設聲學特徵是12維)、N列的一個矩陣,稱之為觀察序列,這裡N為總幀數。觀察序列如下圖所示,圖中,每一幀都用一個12維的向量表示,色塊的顏色深淺表示向量值的大小。

接下來就要介紹怎樣把這個矩陣變成文本了。首先要介紹兩個概念:

音素:單詞的發音由音素構成。對英語,一種常用的音素集是卡內基梅隆大學的一套由39個音素構成的音素集,參見The CMU Pronouncing Dictionary‎。漢語一般直接用全部聲母和韻母作為音素集,另外漢語識別還分有調無調,不詳述。

狀態:這裡理解成比音素更細緻的語音單位就行啦。通常把一個音素劃分成3個狀態。

語音識別是怎麼工作的呢?實際上一點都不神秘,無非是:

把幀識別成狀態(難點)。

把狀態組合成音素。

把音素組合成單詞。

如下圖所示:

圖中,每個小豎條代表一幀,若干幀語音對應一個狀態,每三個狀態組合成一個音素,若干個音素組合成一個單詞。也就是說,只要知道每幀語音對應哪個狀態了,語音識別的結果也就出來了。

那每幀音素對應哪個狀態呢?有個容易想到的辦法,看某幀對應哪個狀態的概率最大,那這幀就屬於哪個狀態。比如下面的示意圖,這幀在狀態S3上的條件概率最大,因此就猜這幀屬於狀態S3。

那這些用到的概率從哪裡讀取呢?有個叫「聲學模型」的東西,裡面存了一大堆參數,通過這些參數,就可以知道幀和狀態對應的概率。獲取這一大堆參數的方法叫做「訓練」,需要使用巨大數量的語音數據,訓練的方法比較繁瑣,這裡不講。

但這樣做有一個問題:每一幀都會得到一個狀態號,最後整個語音就會得到一堆亂七八糟的狀態號。假設語音有1000幀,每幀對應1個狀態,每3個狀態組合成一個音素,那麼大概會組合成300個音素,但這段語音其實根本沒有這麼多音素。如果真這麼做,得到的狀態號可能根本無法組合成音素。實際上,相鄰幀的狀態應該大多數都是相同的才合理,因為每幀很短。

解決這個問題的常用方法就是使用隱馬爾可夫模型(Hidden Markov Model,HMM)。這東西聽起來好像很高深的樣子,實際上用起來很簡單:

第一步,構建一個狀態網絡。

第二步,從狀態網絡中尋找與聲音最匹配的路徑。

這樣就把結果限制在預先設定的網絡中,避免了剛才說到的問題,當然也帶來一個局限,比如你設定的網絡裡只包含了「今天晴天」和「今天下雨」兩個句子的狀態路徑,那麼不管說些什麼,識別出的結果必然是這兩個句子中的一句。

那如果想識別任意文本呢?把這個網絡搭得足夠大,包含任意文本的路徑就可以了。但這個網絡越大,想要達到比較好的識別準確率就越難。所以要根據實際任務的需求,合理選擇網絡大小和結構。

搭建狀態網絡,是由單詞級網絡展開成音素網絡,再展開成狀態網絡。語音識別過程其實就是在狀態網絡中搜索一條最佳路徑,語音對應這條路徑的概率最大,這稱之為「解碼」。路徑搜索的算法是一種動態規劃剪枝的算法,稱之為Viterbi算法,用於尋找全局最優路徑。

這裡所說的累積概率,由三部分構成,分別是:

觀察概率:每幀和每個狀態對應的概率

轉移概率:每個狀態轉移到自身或轉移到下個狀態的概率

語言概率:根據語言統計規律得到的概率

其中,前兩種概率從聲學模型中獲取,最後一種概率從語言模型中獲取。語言模型是使用大量的文本訓練出來的,可以利用某門語言本身的統計規律來幫助提升識別正確率。語言模型很重要,如果不使用語言模型,當狀態網絡較大時,識別出的結果基本是一團亂麻。

這樣基本上語音識別過程就完成了。

以上的文字只是想讓大家容易理解,並不追求嚴謹。事實上,HMM的內涵絕不是上面所說的「無非是個狀態網絡」,如果希望深入了解,下面給出了幾篇閱讀材料:

1. Rabiner L R. A tutorial on hidden Markov models and selected applications in speech recognition. Proceedings of the IEEE, 1989, 77(2): 257-286.
入門必讀。深入淺出地介紹了基於HMM的語音識別的原理,不注重公式的細節推導而是著重闡述公式背後的物理意義。

2. Bilmes J A. A gentle tutorial of the EM algorithm and its application to parameter estimation for Gaussian mixture and hidden Markov models. International Computer Science Institute, 1998, 4(510): 126.
詳細介紹了用E-M算法訓練HMM參數的推導過程,首先講E-M的基本原理,然後講解如何應用到GMM的訓練,最後講解如何應用到HMM的訓練。

3. Young S, Evermann G, Gales M, et al. The HTK book (v3.4). Cambridge University, 2006.
HTK Book,開源工具包HTK的文檔。雖然現在HTK已經不是最流行的了,但仍然強烈推薦按照書裡的第二章流程做一遍,你可以搭建出一個簡單的數字串識別系統。

4. Graves A. Supervised Sequence Labelling with Recurrent Neural Networks. Springer Berlin Heidelberg, 2012: 15-35.
基於神經網絡的語音識別的入門必讀。從神經網絡的基本結構、BP算法等介紹到 LSTM、CTC。

5. 俞棟, 鄧力. 解析深度學習——語音識別實踐, 電子工業出版社, 2016.
高質量的中文資料非常稀有,推薦買一本。最早把深度學習技術應用於語音識別就是這本書的作者。

(本文轉載自《知乎》:語音識別的技術原理是什麼?——張俊博

相關焦點

  • 語音識別的技術原理是什麼?
    在開始語音識別之前,有時需要把首尾端的靜音切除,降低對後續步驟造成的幹擾。這個靜音切除的操作一般稱為VAD,需要用到信號處理的一些技術。要對聲音進行分析,需要對聲音分幀,也就是把聲音切開成一小段一小段,每小段稱為一幀。分幀操作一般不是簡單的切開,而是使用移動窗函數來實現,這裡不詳述。幀與幀之間一般是有交疊的,就像下圖這樣:
  • 玩人工智慧的你必須知道的語音識別技術原理
    語音識別技術正逐步成為計算機信息處理技術中的關鍵技術,語音技術的應用已經成為一個具有競爭性的新興高技術產業。  1、語音識別的基本原理  語音識別系統本質上是一種模式識別系統,包括特徵提取、模式匹配、參考模式庫等三個基本單元,它的基本結構如下圖所示:
  • 語音識別技術
    以下是機哥在做可科大訊飛研究報告中的PPT內容,可以看到科大訊飛的核心技術就在於語音識別、語義理解、自然語音理解、機器翻譯、聲紋識別,其實在應用上的領域就比較好理解,比如智能可穿戴設備,智慧機器人,智慧型手機上的語音識別,最初級的應用就是語音識別,比如在法庭上的庭審記錄直接就可以把語音轉換為文字作為記錄,省去很大一部分的人力時間提升人工效率,智能語音客服可以回答80%左右的用戶問題等等
  • Skype Translator實時語音翻譯技術原理
    Skype Translator是由Skype和微軟機器翻譯團隊聯合開發,整合了微軟Skype語音和聊天技術、機器翻譯技術、神經網絡語音識別打造了一款面向消費者用戶的產品。  微軟在2012年首次演示了英文和中文普通話之間的實時語音翻譯技術原型。經過多年的研究和投入,完成了普通話的語言模型,使Skype Translator的中文語音翻譯在今天變為現實。不僅如此,得益於深層神經網絡與微軟成熟的統計機器翻譯技術的結合,語音識別能力被進一步提高,翻譯結果將更加準確。
  • GMM-HMM語音識別原理詳解
    本文簡明講述GMM-HMM在語音識別上的原理,建模和測試過程。本文引用地址:http://www.eepw.com.cn/article/201710/368485.htm  1. 什麼是Hidden Markov Model?
  • 語音識別技術簡史
    但是,我們一般理解的語音識別其實都是狹義的語音轉文字的過程,簡稱語音轉文本識別( Speech To Text, STT )更合適,這樣就能與語音合成(Text To Speech, TTS )對應起來。語音識別是一項融合多學科知識的前沿技術,覆蓋了數學與統計學、聲學與語言學、計算機與人工智慧等基礎學科和前沿學科,是人機自然交互技術中的關鍵環節。
  • 語音識別技術原理概述!
    聲學信號預處理作為語音識別的前提與基礎,語音信號的預處理過程至關重要。在最終進行模板匹配的時候,是將輸入語音信號的特徵參數同模板庫中的特徵參數進行對比,因此,只有在預處理階段得到能夠表徵語音信號本質特徵的特徵參數,才能夠將這些特徵參數進行匹配進行識別率高的語音識別。
  • 語音識別技術概述
    除了傳統語音識別技術之外,基於深度學習的語音識別技術也逐漸發展起來。本文對廣義的自然語言處理應用領域之一的語音識別進行一次簡單的技術綜述。概述自動語音識別(Automatic Speech Recognition, ASR),也可以簡稱為語音識別。語音識別可以作為一種廣義的自然語言處理技術,是用於人與人、人與機器進行更順暢的交流的技術。
  • 語音識別技術的發展及難點分析
    語音識別技術難點 語音識別成為爭奪焦點 據悉,全球範圍人工智慧公司多專攻深度學習方向,而我國人工智慧方向的200家左右的創業公司有超過70%的公司主攻圖像或語音識別這兩個分類。全球都有哪些公司在布局語音識別?他們的發展情況又如何?
  • 語音轉文字怎麼實現?如何在線語音轉文字
    語音轉文字怎麼實現?如何在線語音轉文字 2019年06月03日 17:35作者:黃頁編輯:黃頁 語音轉文字怎麼實現
  • 語音如何變成文字?這是一篇你能讀懂的技術原理
    簡要給大家介紹一下語音怎麼變文字的吧。希望這個介紹能讓所有同學看懂。首先,我們知道聲音實際上是一種波。常見的 mp3、wmv 等格式都是壓縮格式,必須轉成非壓縮的純波形文件來處理,比如 Windows PCM 文件,也就是俗稱的 wav 文件。wav 文件裡存儲的除了一個文件頭以外,就是聲音波形的一個個點了。下圖是一個波形的示例。
  • 一文看懂語音識別
    語音識別是什麼?他有什麼價值,以及他的技術原理是什麼?本文將解答大家對語音識別的常見疑問。語音識別技術(ASR)是什麼?機器要與人實現對話,那就需要實現三步:語音識別已經成為了一種很常見的技術,大家在日常生活中經常會用到:蘋果的用戶肯定都體驗過 Siri ,就是典型的語音識別微信裡有一個功能是」文字語音轉文字」,也利用了語音識別最近流行的智能音箱就是以語音識別為核心的產品
  • 實測:語音識別大用處!語音轉文字讓學習更高效
    語音識別,大家都知道是讓機器聽懂人類說的話,從而達到某種需求、目的。當然這是大方面的,小方面的還有語音識別的語音轉文字方面,同樣是讓機器聽懂我們的話,但表現方式不一樣,讓語音轉文字功能有很大用處。小科的哥哥是安醫大學校的研究生,他就告訴我自己在使用語音轉文字的工具,還是他的導師推薦的!導師習慣記一下實驗記錄,但手跟不上腦袋裡的想法,或者實驗流程,所以找到了語音轉文字的工具,幫助自己快速記錄。後來很多同學都在用,尤其是上課的時候,大家基本的都不在記筆記,都是拿著手機放在那,錄下音,課後整理音頻文件,再生成筆記。
  • 百度的語音識別技術或將超越谷歌和蘋果
    但是,現在他終於忍不住披露了更出色的語音識別技術,這是智慧型手機時代引人關注的關鍵領域。 具體來說,Deep Speech在車內或人群中等嘈雜環境下比其他語音識別系統的表現更出色。當然,關鍵是讓語音識別技術在現實世界中真正發揮作用。
  • 5 款不錯的開源語音識別/語音文字轉換系統 | Linux 中國
    語音文字轉換speech-to-text(STT)系統就像它名字所蘊含的意思那樣,是一種將說出的單詞轉換為文本文件以供後續用途的方式。語音文字轉換技術非常有用。它可以用到許多應用中,例如自動轉錄,使用自己的聲音寫書籍或文本,用生成的文本文件和其他工具做複雜的分析等。
  • Nuance語音識別技術
    語音識別概述本文引用地址:http://www.eepw.com.cn/article/268339.htm  語音識別技術,Automatic Speech Recognition,簡稱ASR,是一種讓機器聽懂人類語言的技術。語言是人類進行信息交流的最主要、最長用、最直接的方式。
  • 手機語音轉文字原來這麼簡單!這2個好辦法,輕鬆在線語音轉文字
    比如會議中手寫記錄不僅跟不上會議的節奏,還會錯記漏記,這樣效率非常低下,不過現在可以使用語音轉文字方式進行會議記錄,不僅記錄準確,而且記錄也非常高效。並且語音轉文字也很簡單,筆者這裡分享2個好辦法,大家快來一起學學吧!1.
  • 什麼是自動語音識別?
    自動語音識別(ASR)是一種將口語轉換為文本的過程。該技術正在不斷應用於即時通訊應用程式、搜尋引擎、車載系統和家庭自動化中。儘管所有這些系統都依賴於略有不同的技術流程,但這些所有系統的第一步都是相同的:捕獲語音數據並將其轉換為機器可讀的文本。
  • 淺談語音識別技術的發展趨勢與應用前景
    與說話人識別及說話人確認不同,後者嘗試識別或確認發出語音的說話人而非其中所包含的詞彙內容。   語音識別技術的應用包括語音撥號、語音導航、室內設備控制、語音文檔檢索、簡單的聽寫數據錄入等。語音識別技術與其他自然語言處理技術如機器翻譯及語音合成技術相結合,可以構建出更加複雜的應用,例如語音到語音的翻譯。
  • 語音識別技術離我們有多遠?
    直到今天,像人一樣的機器人依然顯得遙不可及,但作為機器人的耳朵,語音識別技術近幾年有了許多突破性進展,終於從實驗室走進了我們的生活。首先,將隱馬爾科夫模型引入語音識別是該領域的重要突破。它有效體現了語音信號的隨機概率過程,它成熟的訓練算法又為語音模型的建立提供了基礎。