
20230311 개발시작
OpenAI API → Python
목표 : ChatGPT를 파이썬으로 구동해 보기
튜토리얼
[Python] pip 개념 및 설치 방법(pip, pip3)
본 포스팅에서는 pip 개념과 pip/pip3 설치 방법을 알아봅니다. 1. pip 개념 Pip Installs Packages의 약자 Python 패키지를 설치하고 관리하는 패키지 매니저(Package Manager) MacOS에서 brew, node의 npm, yarn, Linux에
heytech.tistory.com
ChatGPT API Python 사용법 (feat.DALL-E, Karlo)
ChatGPT API Python 사용법 (feat.DALL-E, Karlo)
wooiljeong.github.io
용어 정리
System
전역적인 규칙
한 80% 정도 들어먹는다.
User
사용자가 GPT에게 할 말.
Assistant
이전에 GPT가 응답했던 말을 기억. 다음에 응답할 말에 대한 힌트로 작용.
Token
단어의 길이
- 너무 길면 잘릴 수도
- Assistant로 받은 단어도 토큰으로 계산되는가?
실험
Assistant도 토큰에 포함될까?
GitHub - openai/tiktoken: tiktoken is a fast BPE tokeniser for use with OpenAI's models.
tiktoken is a fast BPE tokeniser for use with OpenAI's models. - openai/tiktoken
github.com
tiktoken으로 계산한 결과 : 743
실제 요청 : 3288
- 결론 : 아무래도 실제 토큰에는 Assistant list 도 포함되어 있는 걸로 추정.
- 토큰을 절약하면서 기억을 보존할 수는 없을까?
소스코드
import openai
import tiktoken
# 발급받은 API 키 설정
OPENAI_API_KEY = "-------------------"
# openai API 키 인증
openai.api_key = OPENAI_API_KEY
# 모델 - GPT 3.5 Turbo 선택
model = "gpt-3.5-turbo"
messages = [
{
"role": "system",
"content": "---------------------"
}
]
# To get the tokeniser corresponding to a specific model in the OpenAI API:
enc = tiktoken.encoding_for_model(model)
tokens = 0
def num_tokens_from_string(string: str, encoding_name: str) -> int:
"""Returns the number of tokens in a text string."""
encoding = tiktoken.get_encoding(encoding_name)
num_tokens = len(encoding.encode(string))
return num_tokens
while True:
# 질문 작성하기
query = input("나 : ")
tokens += num_tokens_from_string(query, "cl100k_base")
messages.append(
{
"role": "user",
"content": query
}
)
# ChatGPT API 호출하기
response = openai.ChatCompletion.create(
model=model,
messages=messages
)
answer = response['choices'][0]['message']['content']
print("AI : " + answer)
tokens += num_tokens_from_string(answer, "cl100k_base")
messages.append( # 리스트에 추가되는 거라서 role 중복 가능. 아마 모든 assistant를 순회 하는것으로 추정.
{
"role": "assistant",
"content": answer
},
)
print("현재토큰 : " + str(tokens))
결과
Voicevox → Python
목표 : 오픈소스 TTS인 Voicevox를 파이썬으로 구동해 보기
튜토리얼
GPT-3とVoiceVoxを活用してAIエージェントを作る!【Unity】|ねぎぽよし
何を作ったのか? OpenAI GPT-3+VoiceVoxで、3D AIエージェントを作ってLooking Glassで良い感じに表示させてみた! ふとした時に何か会話するの楽しいし、自分の作業してるすぐ横で見守ってくれる
note.com
VOICEVOXのサーバー(エンジン)をWindowsで立てる - Qiita
経緯Raspberry PiでVOICEVOXの音声を扱いたく、インストールしたが、"テスト"の3文字の音声合成に、1分程度かかってしまったため、ほかのPCに処理してもらう。したかったことWi…
qiita.com
Voicevox Engine
GitHub - VOICEVOX/voicevox_engine: 無料で使える中品質なテキスト読み上げソフトウェア、VOICEVOXの音声
無料で使える中品質なテキスト読み上げソフトウェア、VOICEVOXの音声合成エンジン. Contribute to VOICEVOX/voicevox_engine development by creating an account on GitHub.
github.com
VOICEVOXエンジンを使ったPythonでの「高」品質音声合成API
VOICEVOXは、商用利用が可能である無料のテキスト読み上げソフトです。ホームページ上では中品質と言われていますが、実際にはかなりの高品質の読み上げソフトです。今回はVOICEVOXエンジン
happy-shibusawake.com
플로우차트
소스코드
import requests
import json
import pyaudio # wav 파일 없이 오디오 재생
import time
text = "こんにちは!"
params = {
'speaker': '1',
'text': text,
}
resAudioQuery = requests.post(
'http://----------/audio_query', params=params)
# print(resAudioQuery)
resSynthesis = requests.post('http://----------/synthesis',
params={'speaker': '1'}, headers={'Content-Type': 'application/json'}, data=json.dumps(resAudioQuery.json()))
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16,
channels=1,
rate=24000,
output=True)
time.sleep(0.2) # 앞에 이상한 기계음 섞여서 0.2초 정도 쉬어준다음에 오디오 작성
stream.write(resSynthesis.content)
stream.stop_stream()
stream.close()
# 재생
p.terminate()
결과
- 문제점 : Text는 일본어만 인식가능
- 한국어 대안으로 네이버 CLOVA 사용
(비싸다) - 다른 방안이 필요.
'개인 프로젝트 > KarinAI' 카테고리의 다른 글
KarinAI :: Voice conversion (2) (0) | 2024.02.22 |
---|---|
KarinAI :: Voice conversion (1) (0) | 2024.02.22 |
KarinAI :: STT & IOS Build (1) | 2024.02.22 |
KarinAI :: MMD Model Import with Oculus Lipsync (0) | 2024.02.22 |
KarinAI :: OpenAI & VoiceVox & NaverDev Papago with Unity (1) | 2024.02.22 |
틀린 부분은 언제든지 말씀해주세요!!! 감사합니다!