파이썬 AI 실습/chatGPT+구글번역으로 신개념 영어회화 공부하기

파이썬 chatGPT+구글번역으로 신개념 영어회화 공부하기

파기차차 2023. 5. 12. 06:57
728x90
반응형
SMALL

ㅁ 개요

 

O 프로그램 소개

 

 - 이번 프로그램은 이전 글(파이썬 Voice ChatGPT3.5 만들기)에서 배운 '파이썬 Voice ChatGPT3.5 만들기'를 응용하여 chatGPT와 영어회화를 하는 방법에 대하여 알아보겠습니다.

 

 

 

O 사전 준비 작업

 

1. 우리 프로그램은 chatGPT와 음성으로 대화해야 하므로 음성을 전달할 수 있는 마이크가 있어야 합니다. 저의 경우 그냥 저렴한 이어폰(마이크 기능이 달려있는 이어폰)으로 테스트를 하였으며, 잘 동작하는 것을 확인하였습니다.

 

 

2. 오픈AI의 API 키가 있어야 하므로 먼저 아래 사이트에 가서 가입 후 Payment 등록을 하셔야 합니다.(주의 : 유료임)

https://platform.openai.com/account/billing/overview

 

 

3. 본 포스팅을 읽기 전에 우리 블로그의 아래 이전 포스팅을 미리 보고 오시면 크게 도움이 됩니다.

 

1) 파이썬 Voice ChatGPT3.5 만들기

2023.04.10 - [분류 전체보기] - 파이썬 Voice ChatGPT3.5 만들기 - 1.소개편

2023.04.11 - [분류 전체보기] - 파이썬 Voice ChatGPT3.5 만들기 - 2.chatGPT3.5와 음성대화 하기

 

 

 

 

O 완성된 프로그램 실행 화면

 - 최종 완성된 프로그램의 결과화면은 아래와 같습니다.

1. 프로그램을 실행하면 아래와 같이 동작합니다.

1) chatGPT와 대화시 종료하려면 '굿바이'라고 말하면 됩니다

2) 'say something:' 가 보이면 말씀하시면 됩니다.

3) 내가 말을 하고 나면 'Your speech thinks like:' 뒤에 내가 말한 내용이 텍스트로 나오고('너에 대해 소개해 봐')

4) 이를 영어 텍스트로 보여준 후 영어음성으로 읽어 줍니다('Tell me about yourself.')

5) 그리고 조금 기다리면 chatGPT의 응답이 한글 텍스트로 먼저 화면에 쓰여지고, 이후 이 쓰여진 한글을 음성으로 읽어 줍니다.

6) 그리고 이를 다시 영어 텍스트로 화면에 보여주고, 이후 이 쓰여진 영어를 음성으로 읽어 줍니다.

 

D:\100-1 Study\710_Wikidocs\210_wikiDocsAutoBitcoin\620_유튜버&블로그\20230410_chatGPT+구글번역으로 신개념영어공부하기2\최종>python 2.py
chatGPT를 종료하려면 '굿바이'라고 말하세요. -------------------------------1)
say something: -----------------------------------------------------------------------2)
Your speech thinks like:  너에 대해 소개해 봐 ---------------------------------3)
Tell me about yourself. -----------------------------------------------------------4)
--------------------------------
안녕하세요! 저는 OpenAI에서 개발한 인공지능 어시스턴트로, 여러분들이 질문이나 요청하는 작업에 대한 답변을 제공하고 도움을 드리기  위해 만들어졌습니다. 다양한 분야에 대한 지식과 정보를 가지고 있으며, 최대한 정확하고 유익한 답변을 제공하기 위해 항상 노력하고 있 습니다. 무엇이든 물어보세요! ------------------5)
--------------------------------
Hello! I am an AI assistant developed by OpenAI to answer your questions or requests and help you. We have knowledge and information in a variety of areas, and we always strive to provide you with the most accurate and informative answers possible. Ask us anything! --------------------------------------------------6)
say something:
Your speech thinks like:  굿바이
chatGPT를 종료합니다.
end chatGPT.

 

 

 

 

 

 

 

 

 

 

 

 

 

아래 링크에서 무료로 voiceEnglishTeacherChatGPT35.exe 프로그램 다운로드 후 테스트해 보실 수 있습니다.(권한 요청 시 1일내 승인 후 다운로드 가능, 재배포 금지)

 

https://drive.google.com/file/d/1VB-V5CHNLcZQDxRkSDMd4toZGMdjGAMp/view?usp=sharing 

 

Google Drive: 로그인

이메일 또는 휴대전화

accounts.google.com

 

 

 

 

2. 다운로드 받은 프로그램을 실행하면 오픈AI의 API키를 물어봅니다.

여기에 '본인의 API키'를 넣어 줍니다.

(주의 : 많이는 아니지만, 사용량에 따라 과금이 발생하니, 조절하여 사용하시기 바랍니다.)

 

 

 

 

3. API 키 입력 후 정상적으로 chatGPT와 대화할 수 있습니다.

(대화 도중 화면이 멈추거나 예기치 않은 오류 발생시 Ctrl+C를 눌러 종료 후 다시 실행합니다.)

 

 

 

 

 


 

 

ㅁ 세부 내용

 

O 완성된 소스

 

 

소스 : 1.py

 

 

import openai
from config import *
import time
openai.api_key = OPENAI_API_KEY



# 음성번역관련 구글 모듈
import speech_recognition as sr
from gtts import gTTS
import os
import time
import playsound
from translate import Translator

# text To Voice
def textToVoice(text):
     tts = gTTS(text=text, lang='ko')
     filename='voice3.mp3'
     tts.save(filename) # 파일을 만들고,
     playsound.playsound(filename) # 해당 음성파일을 실행(즉, 음성을 말함)
     os.remove(filename)

def speak2(text):
    tts = gTTS(text=text, lang='en')
    filename='voice2.mp3'
    tts.save(filename) # 파일을 만들고,
    playsound.playsound(filename) # 해당 음성파일을 실행(즉, 음성을 말함)
    os.remove(filename)


# mike To Speech
def voiceToText():
    r = sr.Recognizer()
    with sr.Microphone() as source:
        print("say something: ")
        audio = r.listen(source)
        said = " "

        try:
            said = r.recognize_google(audio, language="ko-KR")
            print("Your speech thinks like: ", said)
        except:
            pass
            time.sleep(0.1)
        # except Exception as e:
        #     print("Exception: " + str(e))
    
    return said

print("chatGPT를 종료하려면 '굿바이'라고 말하세요.")
textToVoice("chatGPT를 종료하려면 '굿바이'라고 말하세요.\n")
content = ''

while True:

    prompt = voiceToText() 
    # print(prompt)
    # prompt = input("명령을 내려 주세요: ")
    
    # 2.번역 부분(한글->영어로)
    translator = Translator(from_lang="ko", to_lang="en")


    if '굿바이' in prompt:
        print("chatGPT를 종료합니다.")  
        textToVoice("chatGPT를 종료합니다.")
              
        translation = translator.translate("chatGPT를 종료합니다.")
        print(translation)
        speak2(translation)
        break

    
    translation = translator.translate(prompt) # 한글 텍스트 ->영어 텍스트
    print(translation)
    try:
        pass
        speak2(translation) # 영어 텍스트 -> 영어 음성
    except:
        pass
        print("말씀 해주세요:")
        textToVoice("말씀 해주세요\n")
    


    try:
        messages = [
                {'role': 'system', 'content': 'You are a helpful assistant.'},
                # {'role': 'system', 'content': content},
                {'role': 'user', 'content': content},
            ]
        messages.append({'role': 'assistant', 'content': 'You are a helpful assistant.' })
        # messages.append({'role': 'assistant', 'content': msg })

        messages.append({'role': 'user', 'content': prompt })
    except:
        messages = [
                {'role': 'system', 'content': 'You are a helpful assistant.'},
                {'role': 'user', 'content': prompt},
            ]

    response = openai.ChatCompletion.create(
        model='gpt-3.5-turbo',
        messages=messages
    )

    # print(response)
    print("--------------------------------")
    print(str(response['choices'][0]['message']['content']).strip())
    msg = str(response['choices'][0]['message']['content']).strip()
    print("--------------------------------")

    # print(msg)
    textToVoice(msg)



    translation = translator.translate(msg) # 한글 텍스트 ->영어 텍스트
    print(translation)
    speak2(translation) # 영어 텍스트 -> 영어 음성





    time.sleep(0.1)

    content = content + msg

 

 

 

 

 - 소스파일을 cmd, 파워쉘 또는 vscode 등에서 아래와 같이 실행하시기 바랍니다.

 

 

 

 > python 1.py

 

 


 

O 주요 내용

 

1.소스코드에 대해 간략히 설명 드리겠습니다.

(대부분의 내용은 이전 글( [분류 전체보기] - 파이썬 Voice ChatGPT3.5 만들기 - 2.chatGPT3.5와 음성대화 하기)의 내용과 중복되는 내용이므로 이전글을 참고하여 주시기 바라며, 이전 내용과 다른 부분만 설명드리겠습니다.)

 

 

관련 모듈을 임포트 해줍니다.

 

 

 

 

 

 

 

 

 2. 한글텍스트를 음성으로 변환하는 함수(textToVoice)와 영어 텍스트를 음성으로 변환하는 함수(speak2())를 만듭니다.

 

 

 

 

 3.추가로 음성을 텍스트로 변환하는 함수(voiceToText())를 만듭니다.

 

 

 

 

 

 4. speak2()함수는 영어 텍스트를 영어음성으로 변환하는 함수이므로 인자로 영어가 들어가야 합니다.

처음에 한국어 음성으로 말하고, 이를 한국어 텍스트로 변환하므로, 이를 다시 영어 텍스트로 바꾸어 주어야 speak2()함수에 사용할 수 있습니다.

 

따라서 아래와 같이 translator 객체를 만들고 이 객체의 translate(prompt)함수로 한글 텍스트를 -> 영어 텍스트로 바꿔 줍니다.(line 76~77)

 

그리고 위와 같이 try ~ except 구문으로 에러가 없으면 speak2(translation)으로 영어 음성을 말해 줍니다.

만일 어떤 이유(머뭇거리다가 말을 못하는 경우 등)로 에러가 발생한다면 except~구문을 실행하는데,

여기서는 다시 "말씀 해주세요"라고 안내 방송을 해줍니다.

 

 

 

 

 5. chatGPT에게 API요청을 하기위해 역할을 설정합니다.(line 90~103)

 

그리고 API 요청 후 응답을 response 변수로 받습니다.(line 105~109)

받은 내용 중 content 부분만 뽑아낸 후(line 113) 이를 한국어 음성으로 말해 줍니다.(line 117)

 

 

 

 

 6. 영어 음성으로 들려주기위해서 translator객체의 translate(msg)함수로 먼저 한글을 영어로 번역 후 (line 121)

print()문으로 화면에 찍어준 후(line 122) 영어 음성으로 들려 줍니다.(line 123)

 

 

 

 


 

ㅁ 정리

 

O 우리가 배운 내용

 
 - 오늘은 이전 포스팅을 응용하여 chatGPT와 영어회화를 하는 방법에 대하여 알아보겠습니다.
 

 - 오늘 우리가 배운 내용을 간략히 정리해 보면 아래와 같습니다.
 
 > 1.영어 텍스트를 영어 음성으로 바꿔주기 위해서 speak2(text)함수를 사용했습니다.
 
def speak2(text):
    tts = gTTS(text=text, lang='en')
    filename='voice2.mp3'
    tts.save(filename) # 파일을 만들고,
    playsound.playsound(filename) # 해당 음성파일을 실행(즉, 음성을 말함)
    os.remove(filename)
 
 > 2.한글 텍스트를 영어 텍스트로 번역하기 위해서 translator객체를 생성 후 translate() 함수를 사용했습니다.

translator = Translator(from_lang="ko", to_lang="en")
translation = translator.translate(prompt) # 한글 텍스트 ->영어 텍스트
print(translation)
speak2(translation) # 영어 텍스트 -> 영어 음성

 

이것으로 간단하게  '파이썬 chatGPT+구글번역으로 신개념 영어회화 공부하기' 편을 마칩니다.

오늘은 여기까지이며, 위의 내용이 유익하셨다면, 좋아요와 구독 부탁드립니다.

 

 

댓글하트는 제가 이글을 지속할 수 있게 해주는 힘이 됩니다.

위의 내용이 유익하셨다면, 댓글과 하트 부탁드립니다.

 

 

 

감사합니다.

 

 

 

 

 

※ 추가적인 정보는 아래 유튜브 영상에서 해당 내용을 더욱 자세히 보실 수 있습니다.

 

 

 

728x90
반응형
LIST