Пример #1
0
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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
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")
Пример #5
0
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
Пример #6
0
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
Пример #7
0
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()
Пример #8
0
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()
Пример #10
0
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
Пример #11
0
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 = ''
Пример #12
0
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])