2016-06-28 20 views
-1

Bei der Analyse einer etwa 1 Minute langen Audiodatei bricht pocketsphinx die Datei in mehrere Ergebnisse auf. Gibt es eine Möglichkeit, den Code zu ändern, um eine einzelne Äußerung zurückzugeben? Ich verwende Code basierend auf continuous_test.py.pocketsphinx: lange Äußerung als einzelnes Ergebnis zurückgeben

#!/usr/bin/python 

from os import environ, path 

from pocketsphinx.pocketsphinx import * 
from sphinxbase.sphinxbase import * 

MODELDIR = "../../../model" 
DATADIR = "../../../test/data" 

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) 

stream = open(path.join(DATADIR, 'goforward.raw'), 'rb') 
#stream = open('10001-90210-01803.wav', 'rb') 

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() 
+0

Sie könnten in der Lage sein, einen langen Wert setzen für 'secondsOfSilenceToDetect' –

Antwort

-1
result = "" 

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() 
       result = result + decoder.hyp().hypstr 
       decoder.start_utt() 
    else: 
     break 
decoder.end_utt() 

return result 
+0

Diese verkettet nur jedes Ergebnis. Sie erhalten zum Beispiel immer noch alle Tags. –

+0

result.replace ('', '') –

+0

Danke, aber es lässt mich immer noch nicht die Gesamt-Konfidenzwerte usw. sehen. Warum und wie unterbricht es die Äußerung, anstatt ein Ergebnis zurückzugeben? –