01/10/2018, 16:33

Giúp đỡ sửa lỗi vấn đề về PockEtSphin (code của bản thân) hay Pyaudio

Khi mình chạy chương trình bên Window thì không có lỗi nhưng khi mình đem qua ubuntu thì gặp lỗi,
Mình cài đặt cho pocketsphinx luôn hoạt động khi mình nói chữ ’ no one " nó sẽ thoát ra và báo một tiếng bip và thực hiện tiếp những câu lệnh sau của mình khi những câu lệnh hoàn thành nó sẽ trả lời lại cho mình câu nói “Xử lí thành công” hay " Vui lòng thử lại
Lỗi ở đây : Khi mình nói no one có khi nó báo 2 tiếng bip và nó nói ra 2 câu nói đè chồng lên nhau
Thật sự thì mình mới học python nên mong các bạn giúp đỡ

# -*- encoding: utf-8 -*-
from pocketsphinx.pocketsphinx import *
from sphinxbase.sphinxbase import *
import pyaudio;import wave;import pydub
import os;import time
class pocketSphinx():#Thư viện pocketsphin
	def __init__(self):
		MODELDIR = "/home/l/Desktop/pocketsphinx/model/en-us"
		# Create a decoder wit/h certain model
		config = Decoder.default_config()
		config.set_string('-hmm', os.path.join(MODELDIR, '/home/l/Desktop/pocketsphinx/model/en-us/en-us/'))
		config.set_string('-lm', os.path.join(MODELDIR, '/home/l/Desktop/pocketsphinx/model/en-us/en-us.lm.bin'))
		config.set_string('-dict', os.path.join(MODELDIR, '/home/l/Desktop/pocketsphinx/model/en-us/cmudict-en-us.dict'))
		config.set_string('-keyphrase', 'no one')
		config.set_float('-kws_threshold', 1e+20)
		decoder = Decoder(config)
		audio = pyaudio.PyAudio()
		stream = audio.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=1024)
		stream.start_stream()
		result = None
		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)
						result = decoder.hyp().hypstr
						decoder.start_utt()
					if "no one" in str(result):
						buf = False;
						stream.stop_stream()
						stream.close()
						audio.terminate()
						return
			else:
				break;
		decoder.end_utt()
# -*- encoding: utf-8 -*-
import pyaudio;import wave;import pydub
import time;import os;import requests;
import audioop;
import pygame, sys
import numpy as np
import WIKIPIA
import Mic
import ModulSearch
import PocketSphinx;import TTS
import Weather
import FPTTTS;import TIME;import json
from pydub import AudioSegment
import sys
reload(sys)
sys.setdefaultencoding('utf8')
pygame.init()

#---------------------------------------------------------------------------------------------------------------------------------------------#
class WitAI():
    def transcribe(self):
        wit_access_token = '"'
        headers = {'authorization': 'Bearer ' + wit_access_token,
               'Content-Type': 'audio/wav'}
    	Mic.Record(1024,pyaudio.paInt16,1,8000,3,"/home/l/Desktop/PROJECT/Audio/output1.wav").profile();
    	with open("/home/l/Desktop/PROJECT/Audio/output1.wav", "rb") as binary_file:
            data = binary_file.read()
    	#try:
        r = requests.post('https://api.wit.ai/speech?v=20180708',data=data,headers=headers)
        data = json.loads(r.content)
        TEXTWIT = format(data['_text']) ;STRINGX = TEXTWIT; TIME.TIME(STRINGX)
        print "WitAi:",STRINGX
        if("tra cứu" in STRINGX or "Tra cứu" in STRINGX):
            FPTTTS.FPTTTS("Đang tải dữ liệu")
            String = ModulSearch.TEXTCUTSearch(STRINGX)
            TTS.PATHTEXT(WIKIPIA.wiKipedia(String))
        elif "Thời tiết" in STRINGX or "thời tiết" in STRINGX:
            String = ModulSearch.TEXTCUTSearch(STRINGX)
            Weather.PATHWEATHER(String)
        elif "nghe nhạc" in STRINGX or "Nghe nhạc" in STRINGX:
            String = ModulSearch.TEXTCUTSearch(STRINGX)
            StringAUDIO = String.encode('utf-8')
            song = AudioSegment.from_mp3("/home/l/Desktop/PROJECT/Audio/"+String+".mp3")
            song.export("/home/l/Desktop/PROJECT/Audio/final.wav", format="wav")
            Mic.playaudiofromAudio().play("/home/l/Desktop/PROJECT/Audio/final.wav")

        else:
            FPTTTS.FPTTTS("Xử lí hoàn tất")
            
    	#except:
            #FPTTTS.FPTTTS("Vui lòng thử lại lần nữa")
            #Running = Setup();Running.Run()
    		
    	#else:
            #Running = Setup();Running.Run()
#---------------------------------------------------------------------------------------------------------------------------------------------#
class Setup():
	def Run(self):
           PocketSphinx.pocketSphinx()
           Mic.playaudiofromAudio().play("/home/l/Desktop/PROJECT/Audio/beep_hi.wav")
           Wit = WitAI();Wit.transcribe()	

Main = Setup();Main.Run()

Bài liên quan
0