移至主內容
DarkRanger's Secret Area

主導覽

  • 首頁
  • 關於本站
  • Linux
  • 程式開發
  • N900
  • 譯文
  • 資訊技術辭典

文章分類

  • 影劇
  • 遊戲
  • 筆記
  • 雜文
  • 資訊技術
  • 站務訊息

最新內容

  • How-To:Linux 安裝 DevilutionX
  • 於 2012 年建立的一份音樂播放清單
  • How-To:Linux 安裝 Medal of Honor: Allied Assault
  • Fallout 4 (2015)
  • How-To:Linux 安裝 Blood
  • 《終極動員令》系列早期作品原始碼釋出
  • How-To:Linux 安裝 Doom 3
  • Nausicaä of the Valley of the Wind (1984)
  • Intel 內顯與 Linux 桌面死當問題排解
  • 《哥吉拉 -1.0》心得補遺

Pocketsphinx

發表日期:星期六, 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 訊息,最後才是所辨識出的文字。

 

筆記