2016-06-22 14 views
1

Ich versuche, die Start-und Endzeitstempel jedes Segments mit Pocketsphinx zu extrahieren. Der folgende Code dient zum Extrahieren des Wort-Tokens. Wie kann ich auf die Zeitstempel zugreifen?Segment-Zeitstempel in Taschensphinx

ich in der Dokumentation hier http://cmusphinx.sourceforge.net/doc/pocketsphinx/index.html suchen habe versucht, konnte aber die Methode nicht gefunden

#!/usr/bin/env python 
import os 

import sphinxbase as sb 
import pocketsphinx as ps 

MODELDIR = 'deps/pocketsphinx/model' 
DATADIR = 'deps/pocketsphinx/test/data' 

# Create a decoder with certain model 
config = ps.Decoder.default_config() 
config.set_string('-hmm', os.path.join(MODELDIR, 'en-us/en-us')) 
config.set_string('-lm', os.path.join(MODELDIR, 'en-us/en-us.lm.bin')) 
config.set_string('-dict', os.path.join(MODELDIR, 'en-us/cmudict-en-us.dict')) 
decoder = ps.Decoder(config) 

# Decode streaming data. 
decoder.start_utt() 
stream = open(os.path.join(DATADIR, 'goforward.raw'), 'rb') 
while True: 
    buf = stream.read(1024) 
    if buf: 
     decoder.process_raw(buf, False, False) 
    else: 
     break 
decoder.end_utt() 
stream.close() 
print('Best hypothesis segments:', [seg.word for seg in decoder.seg()]) 

Antwort

1

Sie Segment

print('Best hypothesis segments:', [(seg.word, seg.start_frame, seg.end_frame) for seg in decoder.seg()]) 

Rahmengröße ist 1/100 Sekunde in ipython erkunden.

+0

Großartig, danke. Ist die Zeit von end_frame_i bis start_frame_i + 1 immer 1 Frame? Was ist, wenn zwischen den Segmenten eine lange Pause besteht? –

+0

Für kontinuierliche Rede benötigen Sie kontinuierliche Verarbeitung wie in https://github.com/cmusphinx/pocketsphinx/blob/master/swig/python/test/continuous_test.py Zeiten werden ordnungsgemäß vom Anfang des Streams gemeldet. Ruhezeiten sind leer. –

+0

Ok, danke. Und wie würde ich auf die Zeitstempel zugreifen? Tut mir leid, ich habe Probleme mit der Dokumentation –