Pocketsphinx
由 darkranger 在 週六, 07/12/2014 - 16:29 發表,更新日期:週六, 07/12/2014 - 16:57
Pocketsphinx 是來自卡內基美隆大學(Carnegie Mellon University)的語音辨識工具,許多 Linux 發行版的套件庫已經有收納此工具,以 Fedora 19 為例,執行以下 yum 安裝指令就能夠將所需的套件安裝完畢:
- sudo yum install pocketsphinx pocketsphinx-python
至於未收納此工具的 Linux 發行版,則必須以原始碼編譯的方式安裝。以 64bit 的 CentOS 6.5 為例,首先至官網下載最新版本的 Sphinxbase 與 Pocketsphinx 原始碼(目前為 0.8 版)。在進行編譯之前,由於 DR 需要 Pocketsphinx 的 Python 模組,所以得先用 yum 安裝 Python 的開發套件:
- yum install python-devel
如果沒有安裝該套件,則在編譯時會跳過 Python 模組的編譯。接著便先後對 Sphinxbase 與 Pocketsphinx 進行編譯與安裝:
- tar -zxvf sphinxbase-0.8.tar.gz
- cd sphinxbase-0.8
- ./configure --prefix=/usr --libdir=/usr/lib64
- make
- make install
- tar -zxvf pocketsphinx-0.8.tar.gz
- cd pocketsphinx-0.8
- ./configure --prefix=/usr --libdir=/usr/lib64
- make
- make install
安裝完畢後就可以開始撰寫程式碼了,以下的 Python 程式(transcript.py)在使用時得先確認聲音模組與字典檔所指向的路徑是確實存在的:
#!/usr/bin/python # -*- coding: utf-8 -*- import sys import pocketsphinx HMM = "/usr/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k/" LM = "/usr/share/pocketsphinx/model/lm/en_US/hub4.5000.DMP" DICT = "/usr/share/pocketsphinx/model/lm/en_US/hub4.5000.dic" def get_transcript(filename): process = pocketsphinx.Decoder(hmm = HMM, lm = LM, dict = DICT) audio = file(filename, "rb") process.decode_raw(audio) result = process.get_hyp() return result[0] if __name__ == "__main__": if len(sys.argv) >= 2: print get_transcript(sys.argv[1])
Pocketsphinx 所容許的聲音檔格式為 16000 Hz、單聲道、PCM 編碼的 WAV。執行方式如下:
- chmod +x transcript.py
- ./transcript.py test.wav
執行時會先輸出一大串的 Pocketsphinx 訊息,最後才是所辨識出的文字。