2016-01-04 18 views
6

So come rilevare il parlato con Python ma questa domanda è più specifica: Come posso fare in modo che Python ascolti solo una parola e poi restituisce True se Python riconosce la parola .Come posso rilevare una parola con riconoscimento vocale in Python

so, ho potuto solo lasciare che Python ascoltare tutto il tempo e poi fare qualcosa di simile Pseudocodice:

while True: 
    if stt.listen() == "keyword": 
     return True 

Ho già fatto questo e il programma è appeso dopo alcuni minuti di sempre in ascolto (Vedi alla fine). Quindi ho bisogno di un modo per ascoltare solo una parola specifica.

Che cosa significa "riagganciare"? Il programma non si arresta in modo anomalo ma non risponde. Non sta più ascoltando la mia voce e quando preme STRG + C non fa nulla.

Sto cercando qualcosa di simile:

while True: 
    if stt.waitFor("keyword"): 
     return True 

Spero di aver capito, i migliori saluti

+0

Il pacchetto speech_recognition in Python 2.7. Scusa Ho dimenticato alcuni dettagli tecnici. https://pypi.python.org/pypi/SpeechRecognition/ –

+0

In tempo reale o da un file wav? – erip

+0

Elaborazione in tempo reale con un microfono –

risposta

4
import sys, os 
from pocketsphinx.pocketsphinx import * 
from sphinxbase.sphinxbase import * 
import pyaudio 

modeldir = "../../../model" 
datadir = "../../../test/data" 

# Create a decoder with certain model 
config = Decoder.default_config() 
config.set_string('-hmm', os.path.join(modeldir, 'en-us/en-us')) 
config.set_string('-dict', os.path.join(modeldir, 'en-us/cmudict-en-us.dict')) 
config.set_string('-keyphrase', 'forward') 
config.set_float('-kws_threshold', 1e+20) 


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

# Process audio chunk by chunk. On keyword detected perform action and restart search 
decoder = Decoder(config) 
decoder.start_utt() 
while True: 
    buf = stream.read(1024) 
    if buf: 
     decoder.process_raw(buf, False, False) 
    else: 
     break 
    if decoder.hyp() != None: 
     print ([(seg.word, seg.prob, seg.start_frame, seg.end_frame) for seg in decoder.seg()]) 
     print ("Detected keyword, restarting search") 
     decoder.end_utt() 
     decoder.start_utt() 

Per maggiori dettagli vedi http://cmusphinx.sourceforge.net

+0

Wow, grazie, lo proverò il prima possibile. –

+0

Spiacente, non riesco a installare Pocketsphinx, Sphinxbase e le dipendenze. Potresti aiutarmi? –

+0

Certo, si prega di fornire ciò che hai provato e cosa non ha funzionato. 'pip install pocketphinx' dovrebbe funzionare. –

Problemi correlati