def main(): i=0 gsp = gspeech.Gspeech() while True: stt = gsp.getText() if stt is None: break print(stt) time.sleep(0.01) if(len(stt)==2000): sms_file = open('/home/pi/Desktop/smartcane/main/sms.py','r+') lines = sms_file.readlines() sms_file.close() sms_file = open('/home/pi/Desktop/smartcane/main/sms.py','w+') Text = " params['to'] = '{}'\n" replaceText = Text.format(stt) print(lines[46]) print(replaceText) lines[46] = replaceText lines[53] = replaceText for line in lines: sms_file.write(lines[i]) i+=1 sms_file.close() break else: break if ('종료' in stt): break
def main(): gsp = gspeech.Gspeech() while True: # 음성 인식 될때까지 대기 한다. stt = gsp.getText() if stt is None: break print(stt) time.sleep(0.01) if (u'끝내자' in stt): break
def main(): gsp = gspeech.Gspeech() while True: # 음성 인식 될때까지 대기 한다. print("start") stt = gsp.getText() if stt is None: break print(stt) time.sleep(0.01) #끝내자는 명령이 들어오면 프로그램 종료 if ('끝내자' in stt): break
def main(): i=0 gsp = gspeech.Gspeech() while True: stt = gsp.getText() #stt = u'선풍기 틀어 줘' if stt is None: break print(stt) if stt == turnon_fan or stt == turnon_fan2 stt == turnon_fan3 or stt == turnon_fan4 : os.system("irsend SEND_ONCE sunp KEY_POWER") elif stt== turnoff_fan or stt == turnoff_fan2: os.system("irsend SEND_ONCE sunp KEY_STOP")
def speech(): gsp = gspeech.Gspeech() # 음성->텍스트 sttmsg = "" while True: # 아래 반복 stt = gsp.getText() # 텍스트 가져오기 # 다음 음성 인식까지 대기 if stt is None: # 텍스트 없으면 (음성 없으면) return sttmsg break # 종료 #print(stt) # 텍스트 출력 sttmsg += stt time.sleep(0.01) # 0.01msec 주기 반복 if ('끝내자' in stt): # 종료 명령어들이 불리면 프로그램 종료 return sttmsg break
def main(): gsp = gspeech.Gspeech() print("start program") while True: # 음성 인식 될때까지 대기 한다. stt = gsp.getText() if stt is None: break print(stt) time.sleep(0.01) if ('불 켜' in stt): GPIO.output(21, True) if ('불 꺼' in stt): GPIO.output(21, False) if ('끝' in stt): GPIO.cleanup() break
class ApiConfig(AppConfig): name = 'api' busyLock = threading.Lock() root = os.path.dirname(os.path.realpath(__file__)) + "/../.." config = configparser.ConfigParser() config.read(root + '/config.ini') urlroot = 'http://' + config['GLOBAL']['IP'] + ':' + config['GLOBAL'][ 'PORT'] gspeechsecret = config['DEFAULT']['KEY_ROOT'] + "/" + config['DEFAULT'][ 'KEY_GSPEECH'] gytbsecret = config['DEFAULT']['KEY_ROOT'] + "/" + config['DEFAULT'][ 'KEY_GYTB'] gytbFolder = config['DEFAULT']['GYTB_ROOT'] gshtsecret = config['DEFAULT']['KEY_ROOT'] + "/" + config['DEFAULT'][ 'KEY_GSHEET'] speechDevice = int(config['DEFAULT']['SPEECH_DEVICE']) playerDevice = int(config['DEFAULT']['PLAYER_DEVICE']) sheetId = config['DEFAULT']['SHEET_ID'] modelone = root + "/resources/okzero.pmdl" modeltwo = root + "/resources/tesla.pmdl" spk = speak.Speak(device_index=speechDevice) gytb = gyoutube.Gyoutube(gytbsecret) gsht = gsheet.Gsheet(gshtsecret, defaultId=sheetId) ply = player.Player(gytbFolder, gytb, deviceIndex=playerDevice) act = action.Action(ply=ply, spk=spk, gsht=gsht) gsp = gspeech.Gspeech(gspeechsecret, speak=spk, device=speechDevice) sb = snowboy.Snowboy([modelone], urlroot + "/api/_action", ply, device=speechDevice) sb.start() sb.launch()
def main(): gsp = gspeech.Gspeech() while True: ''' # 음성 인식 될때까지 대기 한다. stt = gsp.getText() #if stt is None: # Google Speech는 1분마다 끊어짐에 유의 # break if stt is not None: print(stt) if (u'끝내자' in stt): break else: # 구글 음성인식기의 경우 1분 제한을 넘으면 None 발생 -> 다시 클래스를 생성시킴 print("Recreate Gspeech()!") del gsp gsp = gspeech.Gspeech() ''' #gsp.resumeMic() try: content = gsp._buff.get(False) # content = gsp.getText(block) if content is not None: print(content) else: # 구글 음성인식기의 경우 1분 제한을 넘으면 None 발생 -> 다시 클래스를 생성시킴 print("Recreate Gspeech()!") del gsp gsp = Gspeech() content = None except: pass time.sleep(0.01)
def main(): gsp = gspeech.Gspeech() BASE_DIR = os.path.dirname(os.path.abspath(__file__)) webbrowser.open('file://' + os.path.join(BASE_DIR, 'voicehelper.html')) while True: # 음성 인식 될때까지 대기 한다. stt = gsp.getText() okt = Okt() nlp = okt.morphs(stt) if stt is None: break print(stt) print(nlp) if stt.find("네이버") > -1: urlNaver = 'https://www.naver.com/' webbrowser.open(urlNaver) gsp.clear() gsp.__eixt__() gsp.__init__() elif stt.find("신문") > -1: urlNews = 'https://news.naver.com/' webbrowser.open(urlNews) gsp.clear() gsp.__eixt__() gsp.__init__() elif stt.find("뉴스") > -1: urlNews = 'https://news.naver.com/' webbrowser.open(urlNews) gsp.clear() gsp.__eixt__() gsp.__init__() elif stt.find("스포츠") > -1: urlSports = 'https://sports.news.naver.com/index.nhn' webbrowser.open(urlSports) gsp.clear() gsp.__eixt__() gsp.__init__() elif stt.find("연예") > -1: urlEt = 'https://entertain.naver.com/home' webbrowser.open(urlEt) gsp.clear() gsp.__eixt__() gsp.__init__() elif stt.find("경제") > -1: urlEc = 'https://news.naver.com/main/main.nhn?mode=LSD&mid=shm&sid1=101' webbrowser.open(urlEc) gsp.clear() gsp.__eixt__() gsp.__init__() elif stt.find("끝내자") > -1: break else: print("DB error, not find data try speach repeat") # mysql db + python conn = pymysql.connect(host="localhost", user="******", password="******", db="voicehelper", charset="utf8") try: curs = conn.cursor() # mysql select start sql = "select keyword, url from command" curs.execute(sql) rows = curs.fetchall() finally: conn.close()
def speech_ui(stt_enable=1, tts_enable=1): # -------------------------------- # Create NaverTTS Class tts = NaverTTS(0, -1) #tts.play("안녕하십니까?") if stt_enable == 1: # 음성인식인 경우 무한 loop flag = True else: # 음성인식 아닌 경우, 테스트 query에 대해 문장 단위로 테스트 query = ["안녕", "사람을 찾으러 왔어요", "최종석 박사님이요", "끝내자"] q_count = len(query) iter = 0 flag = iter < q_count # -------------------------------- # Start Chat with Dialogflow API # -------------------------------- user_key = 'DeepTasK' gsp = gspeech.Gspeech() while flag: # 음성 인식 될때까지 대기 한다. try: if stt_enable == 1: flag = True stt = gsp.getText() else: iter = iter + 1 flag = iter < q_count stt = query[iter - 1] #if stt is None: # break if stt is not None: print(stt) # time.sleep(0.01) if (u'끝내자' in stt): break print("--------") content = stt res = get_answer_danbee(content, user_key) message = res['responseSet']['result']['result'][0][ 'message'] # <- danbee json 포맷 분석 결과 # ------------------------------- # TTS 하는 동안 STT 일시 중지 -- if stt_enable == 1: gsp.pauseMic() # =============================== # TTS if tts_enable == 1: tts.play(message) # ------------------------------- try: name = res['responseSet']['result']['parameters'][ 'person_to_visit'] # <- danbee json 포맷 분석 결과 # ------------------------ # 최종석 박사 -> 최종석 # 최종석 -> 최종석 # ------------------------ name = name.split() name = name[0] if (len(name) > 0): # ------------------------ # getting information of person(name) from database # ------------------------ kind_of_guide = 'person' db = get_datatbase(kind_of_guide) # json_data = json.dumps(db, indent=4, ensure_ascii=False) print( '============= print from internal process ==================' ) # ------------------------ # database에 해당 name의 사람이 있으면 그 사람의 information을 갖고 오고, # '' '' '' '' 없으면 ERROR를 갖고 온다. # ------------------------ try: info = db[name] try: room_num = info["room#"] msg = name + "님은 " + room_num + "호 에 계시며, 자세한 정보는 다음과 같습니다." except: msg = name + "님의 정보는 다음과 같습니다." ''' info = { "name": "최종석", "information": { "center": "지능로봇연구단", "room#": "8402", "phone#": "5618", "e-mail": "*****@*****.**" } } ''' # print(' information about ', name, ': ', json.dumps(info, indent=4, ensure_ascii=False)) except: msg = "죄송합니다만, KIST 국제협력관에서 " + name + "님의 정보를 찾을 수 없습니다." info = 'ERROR' answer = {'name': name, 'information': info} print(msg) # =============================== if tts_enable == 1: tts.play(msg) # ------------------------------- print(json.dumps(answer, indent=4, ensure_ascii=False)) print(info) except Exception as e: pass # ------------------------------- # STT 재시작 if stt_enable == 1: gsp.resumeMic() print(" --") except Exception as e: if stt_enable == 1: # 구글 음성인식기의 경우 1분 제한을 넘으면 오류 발생 -> 다시 클래스를 생성시킴 del gsp gsp = gspeech.Gspeech() pass
def main(): gsp = gspeech.Gspeech() while True: # 음성 인식 될때까지 대기 한다. stt = gsp.getText() if stt is None: break print(stt) time.sleep(0.01) if ('첫 번째' in stt and '방' in stt and '켜' in stt): print("첫 번째 방 불 킵니다") str = "첫 번 째 방 불 킵 니 다" GPIO.output(room1_led, True) play_sound(str) sound_play() if ('첫 번째' in stt and '방' in stt and '꺼' in stt): print("첫 번째 방 불끕니다") str = "첫 번 째 방 불 끕 니 다" GPIO.output(room1_led, False) play_sound(str) sound_play() if ('두 번째' in stt and '방' in stt and '켜' in stt): print("두 번째 방 불킵니다") str = "두 번 째 방 불 킵 니 다" GPIO.output(room2_led, True) play_sound(str) sound_play() if ('두 번째' in stt and '방' in stt and '꺼' in stt): print("두 번째 방 불끕니다") str = "두 번 째 방 불 끕 니 다" GPIO.output(room2_led, False) play_sound(str) sound_play() if ('외출' in stt): print("모든 방 불끕니다") str = "모 든 방 불 끕 니 다" GPIO.output(room2_led, False) GPIO.output(room1_led, False) play_sound(str) sound_play() if ('날씨' in stt): weather_sound() if ('메뉴' in stt or ('먹지' in stt or '음식' in stt or '먹어' in stt or '먹을' in stt)): food_menu = ['한식', '양식', '중식', '밥버거', '햄버거', '빵'] food = random.choice(food_menu) str = food + ' 은 어떤가요?' play_sound(str) sound_play() stt = gsp.getText() if '다른거' in stt or '딴 거' in stt: while '다른거' in stt or '딴거' in stt: stt = gsp.getText() food_index = food_menu.index(food) food_menu.remove(food) food = random.choice(food_menu) str = food + ' 은 어떤가요?' play_sound(str) sound_play() if ('그거' in stt and ('먹을래' in stt or '먹자' in stt or '먹' in stt)): str = '맛있게 드세요' play_sound(str) sound_play() else: str = '맛있게 드세요' play_sound(str) sound_play() if ('문' in stt and '열어' in stt): str = "문을 엽니다." p.start(12.5) time.sleep(0.5) p.stop() play_sound(str) elif ('문' in stt and ('닫어' in stt or '닫아' in stt)): p.start(7.5) time.sleep(0.5) p.stop() str = "문을 닫습니다." play_sound(str) if ('끝내자' in stt): str = "다음에 전원을 켜주세요. 잘있어요" play_sound(str) time.sleep(0.5) sound_play() break #sys.exit(1) stt = ''
import gspeech import naverTTS import os import sys import urllib.request import json client_id = "D60dTOJXcQ1gwlwN8cku" ## papago api id, secret client_secret = "GzYg8Nb5YA" tts = naverTTS.NaverTTS() gsp = gspeech.Gspeech() cmdLists = [ #명령어 대답 종료 리턴값 [u'끝내자', '그럼 이만 물러가겠습니다.', 0], [u'안녕', '안녕하십니까?', 1], [u'앞에 뭐가 있는지 알려 줘', '잠시만 기다려주십시오', 1], [u'전방 탐색', '잠시만 기다려주십시오', 1] ] def CommandProc(stt): cmd = stt.strip() print('나: ' + str(stt)) print(type(cmd)) for cmdList in cmdLists: print("\n cmd: " + cmd + "\n cmdList: " + cmdList[0])