? ?CMU Sphinx是目前語音識別技術中比較熱門的開源技術之一。CMU Sphinx 是一款源于卡內基梅隆大學的產品。它的研發歷史大約可以追溯到1988年李開復的一篇論文,目前在 GitHub 和 SourceForge 平臺同步更新。在 GitHub 平臺有 C 和 Java 兩個版本,而且據說分別只有一個管理員維護。但在 SourceForge 平臺卻有 9 個管理員和十幾個開發者。CMU Sphinx 具有包括普通話、英語、法語、西班牙語和意大利語在內的諸多語音可以直接使用的模型。
? ?在介紹如何使用CMU Sphinx之前,先簡單了解一下語音識別的相關概念。
Structure of speech
??在目前的實踐中,語音結構可以理解如下:
??語音是一種由穩定狀態和動態變化的狀態混合而成的連續音頻流(audio stream)。在這一系列狀態中,可以對聲音和音素定義若干相似的類別。聲波往往由語音內容,發言者和發音方式等各種音素決定。
Recognition process
??識別語音的一般方法如下:針對一段聲波,使用沉默將其分割成若干短發音,然后試著去識別每段發音中的內容。為此,可以用盡可能的單詞組合去匹配音頻,然后選出最佳的匹配方案,作為語音識別的結果。
??在這個匹配過程中幾個比較重要的概念。首先介紹“特征”的概念。首先語音需要被分解成一系列“幀”,每10毫秒一幀,然后對于每一幀,提取39個數字來表征該段語音,這39個數字稱之為“特征向量”。如何從音頻的每幀中提取數字是個廣泛研究的話題,一種簡單的方式就是由聲譜衍生出來。
??接下來介紹一下“模型”的概念。模型是一種匯集了語音的共同屬性的數學模型。實際應用中,一個音素的聲學模型往往是其最可能的特征向量的高斯混合模型。該語音模型通常稱之為隱馬爾可夫模型( Hidden Markov Model,HMM),HMM是語音識別領域中一種常用的模型。
??然后就是“匹配過程”的概念,匹配過程是將特征向量與所有坑你的模型進行比較,然后得出最佳的匹配方案。
Models
??根據語音的結構,語音識別過程中需要用到三種不同的模型。
- 聲學模型(Acoustic Model )
??聲學包含每個語素的聲學特性。聲學模型主要分為:內容獨立的模型(每段發音的特征向量)和內容依賴的模型(基于音素和內容構建的模型)。 - 拼音字典(Phonetic Dictionary)
??拼音字典包含了單詞與發音之間的映射。當然,這種映射并不是一直有效的。例如,其中只有兩到三個發音變體。但是,這種映射大部分時間都很實用。字典映射并不是映射文字和發音的唯一方式,也可以使用機器學習算法學習得出的一些復雜的函數。 - 語言模型(Language Model)
??語音模型主要用于約束單詞的檢索范圍。它定義了那些單詞可以在之前識別出來的單詞的額后面,并通過去掉不可能的詞來顯著地約束匹配過程。語音模型通常限制了語音識別的詞匯表,不出現在語音模型中的詞匯往往不會被識別出來。
??在一個語音引擎中,這三個模型是綁在一起的。針對一個新語音,需要同時構建這三個不同的模型。