ㅁ 개요
O 프로그램 소개
- 이번 글은 이전글( [분류 전체보기] - 파이썬 Voice ChatGPT3.5 만들기 - 1.소개편)에 이은 2번째 마지막 글로 실제로 chatGPT와 음성으로 대화하는 방법에 대하여 알아보겠습니다.
O 완성된 프로그램 실행 화면
1.프로그램을 실행하면 아래와 같이 동작 합니다.
1) chatGPT와 대화시 종료하려면 '굿바이'라고 말하면 됩니다
2) 'say something:' 가 보이면 말씀하시면 됩니다.
3) 내가 말을 하고 나면 'Your speech thinks like:' 뒤에 내가 말한 내용이 텍스트로 나옵니다.
4) 그리고 조금 기다리면 chatGPT의 응답이 텍스트로 먼저 화면에 쓰여지고, 이후 이 쓰여진 글을 읽어 줍니다.
1)chatGPT를 종료하려면 '굿바이'라고 말하세요. 2)say something: 3)Your speech thinks like: 너 돈까스 좋아하지 -------------------------------- 4)저는 인공지능 챗봇이기 때문에, 음식을 먹을 수 없으므로 돈까스를 좋아하거나 안 좋아하는 개념이 없습니다. 하지만 돈까스를 좋아하는 분들은 많기 때문에 저의 주인인 사용자분이 돈까스를 좋아할 가능성이 높을 것입니다. -------------------------------- |
O 사전 준비
2. 오픈AI의 API 키가 있어야 하므로 먼저 아래 사이트에 가서 가입 후 Payment 등록을 하셔야 합니다.(주의 : 유료임)
https://platform.openai.com/account/billing/overview
3. 본 포스팅을 읽기 전에 우리 블로그의 아래 이전 포스팅을 미리 보고 오시면 크게 도움이 됩니다. 다만, 보지 않더라도 크게 어렵지는 않으므로 어렵지 않게 따라오실 수 있습니다.
1) 파이썬 실시간 번역기
2022.11.14 - [파이썬 실습/음성인식 프로그램 만들기] - 파이썬 실시간 번역기(한국어->영어로 말해주는) 만들기
2) 파이썬 음성메모 프로그램 만들기
2023.01.19 - [파이썬 실습/실시간 음성메모 프로그램 만들기] - 파이썬 실시간 음성메모 프로그램 만들기 - 1.소개편
2023.01.26 - [파이썬 실습/실시간 음성메모 프로그램 만들기] - 파이썬 실시간 음성메모 프로그램 만들기 - 2.음성<->텍스트 변환 후 파일로 저장
2023.01.26 - [파이썬 실습/실시간 음성메모 프로그램 만들기] - 파이썬 실시간 음성메모 프로그램 만들기 - 2.음성<->텍스트 변환 후 파일로 저장(계속)
2023.01.26 - [파이썬 실습/실시간 음성메모 프로그램 만들기] - 파이썬 실시간 음성메모 프로그램 만들기 - 3.실시간 음성 메모
ㅁ 세부 내용
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
# text To Voice
def textToVoice(text):
tts = gTTS(text=text, lang='ko')
filename='voice3.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(3)
# except Exception as e:
# print("Exception: " + str(e))
return said
print("chatGPT를 종료하려면 '굿바이'라고 말하세요.")
textToVoice("chatGPT를 종료하려면 '굿바이'라고 말하세요.\n")
content = ''
while True:
prompt = voiceToText() #<----------------- 이 녀석을 적극 활용할것
# print(prompt)
# prompt = input("명령을 내려 주세요: ")
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},
]
# if prompt == 'bye':
# print("chatGPT를 종료합니다.")
# break
if '굿바이' in prompt:
textToVoice("chatGPT를 종료합니다.")
print("chatGPT를 종료합니다.")
break
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("--------------------------------")
textToVoice(msg)
time.sleep(0.1)
content = content + msg
O 주요 내용
1.소스코드에 대해 간략히 설명 드리겠습니다.
관련 모듈을 임포트 해줍니다.
2. 아래 음성 변환 관련 내용은 이전 글(아래)에서 아주 자세한 설명을 보실 수 있으니, 참고하여 주시기 바랍니다.
2023.01.26 - [파이썬 실습/실시간 음성메모 프로그램 만들기] - 파이썬 실시간 음성메모 프로그램 만들기 - 2.음성<->텍스트 변환 후 파일로 저장
3. while문으로 chatGPT와 계속해서 대화할 수 있게 합니다.(line 47)
voiceToText()함수를 호출하고, 화면에 'say something:' 이 나오면 말을 합니다. (line 23 ~ 39)
말한 내용(텍스트)이 prompt변수에 저장됩니다. (line 49)
chatGPT에게 API 요청을 위해 역할을 설정하고, try~except 구문에서 처음에는 messages가 없으므로(거짓) except 구문이 실행 됩니다. (line 53 ~67)
4.내가 말한 내용 중 '굿바이'라는 텍스트가 있으면 break에 의해 루프를 종료합니다.(line 72~75)
그리고 나서 chatGPT에게 API요청(messages를 던짐)을 하고, 응답값을 response변수에 저장합니다.(line 77~80)
response변수에 저장된 응답값 중 필요한 부분(content)만 필터링 후 msg변수에 넣습니다.(line 85)
msg변수 담긴 내용(텍스트, chatGPT의 답변)를 textToVoice(msg)함수를 이용하여 음성으로 읽어 줍니다.(line 89)
아래와 같이 chatGPT가 이전 대화내용을 이해하고 스마트한 답변할 수 있도록 content에 msg(chatGPT의 답변)를 누적해서 담아둡니다.(매우 중요, line 93)
content = content + msg
ㅁ 정리
O 우리가 배운 내용
> 2.while루프로 chatGPT와 계속해서 대화할 수 있게 하고,
> 3.chatGPT3.5 형식에 맞게 역할을 정의 후 API 요청/응답을 받아 필요한 부분만 가져와서 텍스트를 음성을 변환해 줍니다.
이것으로 간단하게 '파이썬 Voice ChatGPT3.5 만들기' 편을 마칩니다.
댓글과 하트는 제가 이글을 지속할 수 있게 해주는 힘이 됩니다.
위의 내용이 유익하셨다면, 댓글과 하트 부탁드립니다.
감사합니다.
※ 추가적인 정보는 아래 유튜브 영상에서 해당 내용을 더욱 자세히 보실 수 있습니다.
'파이썬 AI 실습 > Voice ChatGPT3.5 만들기' 카테고리의 다른 글
파이썬 Voice ChatGPT3.5 만들기 - 1.소개편 (0) | 2023.05.05 |
---|