語音如何變成文字?這是一篇你能讀懂的技術原理

2021-02-14 極客公園

 極客公園微信號:geekpark

編輯註:本文為知乎用戶張俊博原創,極客公園已獲作者轉載許可,原文連結:https://www.zhihu.com/question/20398418/answer/18080841。

簡要給大家介紹一下語音怎麼變文字的吧。希望這個介紹能讓所有同學看懂。

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

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

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

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

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

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

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

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

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

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

第一步,把幀識別成狀態(難點);

第二步,把狀態組合成音素;

第三步,把音素組合成單詞。

如下圖所示:

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

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

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

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

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

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

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

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

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

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

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

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

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

以上介紹的是傳統的基於 HMM 的語音識別。事實上,HMM 的內涵絕不是上面所說的「無非是個狀態網絡」那麼簡單。以上的文字只是想讓大家容易理解,並不追求嚴謹。

NOTICE:


7 月 15-16 日,奇點●創新者峰會將首度來到上海,與 50+ 國內外最值得關注的科技商業變量、200+ 技術領袖、500+ 上市公司高管及千億產業資本共同探討「幸福科技」。

想與周鴻禕、徐滬生、王小川、羅永浩等嘉賓共同探討下一個技術和商業的引爆點,就抓緊點擊閱讀原文限時免費報名吧。


演講嘉賓報導

特斯拉  JB Straubel|一條 徐滬生

……

相關焦點

  • 語音是如何變為文字的?詳解語音識別技術原理
    簡要給大家介紹一下語音怎麼變文字的吧。需要說明的是,這篇文章為了易讀性而犧牲了嚴謹性,因此文中的很多表述實際上是不準確的。
  • 語音識別的技術原理是什麼?
    簡要給大家介紹一下語音怎麼變文字的吧。需要說明的是,這篇文章為了易讀性而犧牲了嚴謹性,因此文中的很多表述實際上是不準確的。
  • 玩人工智慧的你必須知道的語音識別技術原理
    本文引用地址:http://www.eepw.com.cn/article/201612/342190.htm  我們都希望像《鋼鐵俠》中那樣智能先進的語音助手,在與機器人進行語音交流時,讓它聽明白你在說什麼。語音識別技術將人類這一曾經的夢想變成了現實。語音識別就好比「機器的聽覺系統」,該技術讓機器通過識別和理解,把語音信號轉變為相應的文本或命令。
  • Skype Translator實時語音翻譯技術原理
    【IT168 評論】近日,微軟正式宣布在中國市場推出Skype Translator實時語音翻譯技術的中文預覽版。對於英文不好的小夥伴們,這無疑是個利好,從此中英文溝通無障礙。
  • 吳恩達盛讚的Deep Voice詳解教程,教你快速理解百度的語音合成原理...
    而近日,百度首席科學家吳恩達在 Twitter 上轉發了MIT Dhruv Parthasarathy 的一篇medium 文章,其詳細闡述了Baidu Deep Voice 的具體原理及操作方法。吳恩達表示,「如果你是語音合成的新手,那麼這篇文章便是 Deep Voice 優秀且可讀性強的一個總結。感謝@dhruvp!
  • 如何把語音轉變成文字
    速錄師這個職業大家平時應該很少有接觸到的職業,或許你第一次聽說這個職業,首先從字面上來理解這三個字,就是快速記錄師,速錄師的工作就是把聽到的聲音變成文字來記錄,比如新聞發布會,學術交流會,或者公司的重要會議都要把會議內容記錄下來,說一個題外話同聲傳譯可能大家知道的比較多,比如把新聞發布會發言的內容同步翻譯成不同國家的語言
  • 手機中的Siri是如何讀懂你的話的,原來是NPL
    我們不需要手動設置即可通過Siri幫助我們完成部分的手機業務,那麼手機中的Siri是如何聽懂我們說的話,又是如何幫助我們做事的?這篇文章將告訴你答案。一、Siri技術的基石——自然語言處理(NPL)Siri,全名叫做蘋果智能語音助手。
  • 吳恩達盛讚的DeepVoice詳解教程,教你快速理解百度的語音合成原理上
    《從SwiftScribe說起,回顧百度在語音技術的七年積累》而近日,百度首席科學家吳恩達在 Twitter 上轉發了MIT Dhruv Parthasarathy 的一篇medium 文章,其詳細闡述了Baidu Deep Voice 的具體原理及操作方法。吳恩達表示,「如果你是語音合成的新手,那麼這篇文章便是 Deep Voice 優秀且可讀性強的一個總結。感謝@dhruvp!
  • 如何實現語音翻譯文字?實現語音翻譯文字這兩招你會嗎?
    如何在不用抄的情況下將語音翻譯成文字呢?下面是今天為大家分享的兩個小妙招,一起來看看吧! 第一招:利用文檔翻譯器1.雙擊打開文檔翻譯器,在跳轉的頁面左側有四個功能選項,點擊選擇語音翻譯;2.在右邊出現的工具欄中通過點擊上傳音頻按鈕,將需要進行翻譯的文件進行上傳;3.然後點擊上方語言欄目
  • 語音轉文字怎麼實現?如何在線語音轉文字
    語音轉文字怎麼實現?如何在線語音轉文字 2019年06月03日 17:35作者:黃頁編輯:黃頁 語音轉文字怎麼實現
  • 文字轉語音在線轉換如何操作?一款文字轉語音助手就夠了
    文字轉語音在線轉換如何操作?下面我就給大家分享一個非常不錯的文字語音轉換工具,語音輸出有感情不死板,保證讓你百分百滿意! 應用介紹:手機應用市場或瀏覽器都可搜索到此應用,它採用智能的文字識別技術,為你精準的將文本轉換為音頻播放。
  • 我是如何寫好一篇技術博客的
    今天我來和同學們分享一下,如何去寫好一篇技術文章。目錄比如我的即學即用Android Jetpack系列:《即學即用Android Jetpack - Navigation》https://www.jianshu.com/p/66b93df4b7a6(2)技術深入型這類文章通常是從原理的角度深入分析某項技術
  • 語音轉文字評測:幾款語音轉文字app,你了解多少?
    語音轉文字有必要嗎?能用在哪裡?這是大多數人對於語記類app的疑問所在,今天為大家簡單介紹一下幾款實用的語記app以及簡單的應用描述。1.訊飛語記訊飛語記是訊飛旗下的語音轉文字產品,如我們所知,科大訊飛是國內最大的語音技術提供商,在智能語音技術領域有著卓越的成績。訊飛聽見優勢就在於有品牌後盾以及成熟的技術支持,光是「訊飛」就讓產品質量有了保證。
  • 語音識別技術
    什麼叫自然語音交互,為什麼喚醒詞都需要四個字以上,為什麼方言也能識別,喚醒詞和後面的語音識別有什麼區別,這期的內容給你精彩答案。我們單從指紋庫來說,自己使用到的手機錄的指紋不會太多,一般就左右手大拇指,想想如果是公司的指紋打卡,需要比對的資料庫就比非常龐大,所以耗費的時間就會更久一些,類似你要拿一把鑰匙去找到整個酒店哪個房間們能打開一樣的原理,需要一個一個去比對,當然如果你開每一道門的速度快,也就是比對的資料庫的速度快,此時耗費的時間就會更少。
  • 在線語音轉文字的方法推薦:如何實現在線語音轉文字?
    如何實現在線語音轉文字?前段時間,朋友小清向我訴說了一個煩惱:在大學課堂上,上課氣氛較為鬆散且老師講課比較隨心。稍不留神,她總會把重要知識點給漏聽掉,沒能記下來重要內容。因此,她最近在尋找能把課堂錄音轉文字的方法。
  • 在線語音轉文字的方法推薦:如何實現在線語音轉文字?
    如何實現在線語音轉文字?前段時間,朋友小清向我訴說了一個煩惱:在大學課堂上,上課氣氛較為鬆散且老師講課比較隨心。稍不留神,她總會把重要知識點給漏聽掉,沒能記下來重要內容。因此,她最近在尋找能把課堂錄音轉文字的方法。
  • 如何把文字轉換成語音?這裡給出答案
    對於一些老人小孩來說,聽也是他們獲得重要資訊的渠道,小孩識字不多就喜歡聽故事會,老人視力退化,看不了報紙,就喜歡聽廣播戲曲,對於他們來講,要是可以把文字變成語音的來說那就更方便了,現在的技術也可以做到了。
  • 文字在線轉語音,那些免費的神操作丨微課配音
    這幾年,有很多教師問過關於文字轉語音的問題,尤其是在微課的過程中,由於自己的發音不標準,或者音色不佳,從而寄希望於到一個工具把文字變成聲音代替自己配音。相信很多做自媒體的朋友在做短視頻的時候,也有這個方面的困擾,需要根據不同的素材內容進行錄製音頻。
  • 語音轉文字如何實現?你一定得知道的簡單方法
    語音轉文字、音頻轉文字該如何實現?手機端又該怎麼進行操作?有很多小夥伴會因為職業的關係需要進行語音轉文字,但卻又不知道該怎麼操作?今天就分享給大家一些簡單又高效的方法,只要你能掌握透徹,保證你以後可以快速效率工作學習效率!
  • 讀懂這一段文字,方能完全讀懂《紅樓夢》
    《紅樓夢》開篇,有這樣一段文字,甲戌本作為全書「凡例」的第五條,放在第一回回目前,另有回前詩,其餘版本則是放在回目之後,作為正文的開頭。但許多人認為這是脂批,《紅樓夢》正文應是從「列位看官,你道此書從何而來?「開始的。