Pocketsphinx

Pocketsphinx 是來自卡內基美隆大學(Carnegie Mellon University)的語音辨識工具,許多 Linux 發行版的套件庫已經有收納此工具,以 Fedora 19 為例,執行以下 yum 安裝指令就能夠將所需的套件安裝完畢:

  • sudo yum install pocketsphinx pocketsphinx-python

 

至於未收納此工具的 Linux 發行版,則必須以原始碼編譯的方式安裝。以 64bit 的 CentOS 6.5 為例,首先至官網下載最新版本的 SphinxbasePocketsphinx 原始碼(目前為 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 訊息,最後才是所辨識出的文字。

 

分類: