2013-01-13 1 views
4

최근에는 파이썬으로 포켓 스핑크스로 작업했습니다. 아래에 기록 된 WAV를 인식하기 위해 아래의 예제를 성공적으로 가져 왔습니다.Python과 Pocketsphinx로 라이브 인식

#!/usr/bin/env python 

import sys,os 



def decodeSpeech(hmmd,lmdir,dictp,wavfile): 

    """ 

    Decodes a speech file 

    """ 

    try: 

     import pocketsphinx as ps 

     import sphinxbase 

    except: 

     print """Pocket sphinx and sphixbase is not installed 

     in your system. Please install it with package manager. 

     """ 

    speechRec = ps.Decoder(hmm = hmmd, lm = lmdir, dict = dictp) 

    wavFile = file(wavfile,'rb') 

    wavFile.seek(44) 

    speechRec.decode_raw(wavFile) 

    result = speechRec.get_hyp() 



    return result[0] 



if __name__ == "__main__": 

    hmdir = "/home/jaganadhg/Desktop/Docs_New/kgisl/model/hmm/wsj1" 

    lmd = "/home/jaganadhg/Desktop/Docs_New/kgisl/model/lm/wsj/wlist5o.3e-7.vp.tg.lm.DMP" 

    dictd = "/home/jaganadhg/Desktop/Docs_New/kgisl/model/lm/wsj/wlist5o.dic" 

    wavfile = "/home/jaganadhg/Desktop/Docs_New/kgisl/sa1.wav" 

    recognised = decodeSpeech(hmdir,lmd,dictd,wavfile) 

    print "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" 

    print recognised 

    print "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" 

마이크에서 실시간 음성 인식을 어떻게 할 수 있습니까? 에서 while 문은 if 문을 사용하므로 설정 한 단어가 마이크에서 인식되는 경우 함수를 호출 할 수 있습니까?

답변

2

실시간 인식 코드는 this과 같습니다

config = Decoder.default_config() 
config.set_string('-hmm', path.join(MODELDIR, 'en-us/en-us')) 
config.set_string('-lm', path.join(MODELDIR, 'en-us/en-us.lm.bin')) 
config.set_string('-dict', path.join(MODELDIR, 'en-us/cmudict-en-us.dict')) 
config.set_string('-logfn', '/dev/null') 
decoder = Decoder(config) 

import pyaudio 
p = pyaudio.PyAudio() 
stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=1024) 
stream.start_stream() 

in_speech_bf = False 
decoder.start_utt() 
while True: 
    buf = stream.read(1024) 
    if buf: 
     decoder.process_raw(buf, False, False) 
     if decoder.get_in_speech() != in_speech_bf: 
      in_speech_bf = decoder.get_in_speech() 
      if not in_speech_bf: 
       decoder.end_utt() 
       print 'Result:', decoder.hyp().hypstr 
       decoder.start_utt() 
    else: 
     break 
decoder.end_utt() 

또한, pocketsphinx에서 gstreamer를 파이썬 바인딩을 사용 livedemo.py

+0

답장을 보내 주셔서 감사합니다 .Livedemo 예를 시도했지만 아래 오류가 나타납니다. 당신이 도울 수 있기를 바랍니다. 트레이스 백 (최근 호출 마지막) : 파일 "/home/tonderai/livedemo.py", 줄 113, app = DemoApp() 파일 "/home/tonderai/livedemo.py", 줄 24, __init__ self.init_gst() init_gst에있는 "/home/tonderai/livedemo.py"파일, 줄'! pocketsphinx name = asr! fakesink ') glib.GError : 요소가없는 "vader" –

+0

gstreamer 플러그인을 올바르게 설치하고 gstreamer가 해당 플러그인을 찾았는지 확인해야합니다. 자세한 내용은 GST_PLUGIN_PATH 및 gstreamer 설명서를 참조하십시오. –

+0

안녕하세요, 고맙습니다. apptitude를 사용하여 패키지를 설치하십시오. 음성 인식은 보통의 마이크를 사용하는 것만 큼 대단한 것은 아닙니다. 제가 인식을 향상시킬 수있는 방법을 모르십니까? 건배. –

1

this을 시도 확인할 수 있습니다. Pocketsphinx는 이제 GStreamer 플러그인입니다.