v3.5 이제 Twitch Streamer도 지원됩니다.
v3.0 이제 VoiceVox를 사용하여 일본어 TTS만 지원하는 것이 아닙니다. 또한 RU(러시아어), EN(영어), DE(독일어), ES(스페인어), FR(프랑스어), TT(타타르어), UA(우크라이나어), UZ(우즈베크어), XAL(칼미크어)에 대한 TTS도 지원합니다. 인도어(힌디어), Seliro TTS 사용. Seliro TTS 사용 방법에 대한 자세한 내용을 보려면 run.py
의 voicevox_tts
seliro_tts
로 변경하세요.
이 프로젝트는 shioridotdev에서 영감을 얻었으며 VoiceVox Engine, DeepL, Whisper OpenAI, Seliro TTS 및 VtubeStudio와 같은 다양한 기술을 활용하여 AI waifu 가상 YouTuber를 만듭니다.
pip install -r requirements.txt
api_key = 'yourapikey'
owner_name = "Ardha"
실시간 스트리밍에 사용하려면 run.py
에서 블랙리스트에 추가할 사용자 목록을 만드세요.
blacklist = ["Nightbot", "streamelements"]
조수의 지식이나 정체성을 바꾸십시오. characterConfigPinaidentity.txt
에서 txt 파일을 변경하세요.
Twitch에서 스트리밍하려면 utils/twitch_config.py
에서 구성 파일을 변경해야 합니다. 여기에서 토큰을 받으세요. 토큰은 oauth:43rip6j6fgio8n5xly1oum1lph8ikl1(이 튜토리얼에서는 가짜)과 유사해야 합니다. 구성 파일을 변경한 후 모드 - 3을 사용하여 프로그램을 시작할 수 있습니다.
server = 'irc.chat.twitch.tv'
port = 6667
nickname = 'testing' # You don't need to change this
token = 'oauth:43rip6j6fgio8n5xly1oum1lph8ikl1' # get it from https://twitchapps.com/tmi/.
user = 'ardha27' # Your Twitch username
channel = '#aikohound' # The channel you want to retrieve messages from
VoiceVox
또는 Silero
중에서 사용하려는 TTS를 선택하세요. 주석을 해제하고 댓글을 달면 둘 사이를 전환할 수 있습니다. # Choose between the available TTS engines
# Japanese TTS
voicevox_tts(tts)
# Silero TTS, Silero TTS can generate English, Russian, French, Hindi, Spanish, German, etc. Uncomment the line below. Make sure the input is in that language
# silero_tts(tts_en, "en", "v3_en", "en_21")
VoiceVox를 사용하려면 먼저 VoiceVox 엔진을 실행해야 합니다. VoiceVox Docker를 사용하여 로컬에서 실행하거나 VoiceVox Colab을 사용하여 Google Colab에서 실행할 수 있습니다. Colab을 사용하는 경우 Colab에서 얻은 링크를 사용하여 utilsTTS.py
에서 voicevox_url
변경하세요.
voicevox_url = 'http://localhost:50021'
VoiceVox의 음성 목록을 보려면 이 VoiceVox를 확인하고 speaker.json
에서 스피커 ID를 확인한 다음 utils/TTS.py
에서 변경할 수 있습니다. Seliro Voice 샘플의 경우 Seliro 샘플을 확인할 수 있습니다.
VoiceVox
사용하려면 답변을 일본어로 변환해야 합니다. OpenAI의 언어 답변은 보조 지식 언어 characterConfigPinaidentity.txt
및 입력 언어에 따라 달라집니다. tts = translate_deeplx(text, f"{detect}", "JA")
tts = translate_google(text, f"{detect}", "JA")
DeepLx
DeepL
의 무료 버전입니다(API 키가 필요하지 않음). docker에서 Deeplx를 실행할 수 있습니다. 또는 deepl의 일반 버전을 사용하려는 경우 utilstranslate.py
에서 해당 기능을 만들 수 있습니다. 우리나라에서는 DeepL
에 등록할 수 없어서 DeepLx
사용하고 있습니다. DeepL
의 번역 결과는 Google 번역보다 더 정확하고 캐주얼합니다. 하지만 간단한 방법을 원한다면 Google 번역을 사용하세요.
프로그램의 오디오 출력을 Vtubestudio
의 입력으로 사용하려는 경우. Virtual Cable
사용하여 데스크톱 오디오를 캡처하고 이를 VtubeStudio 마이크의 입력으로 사용해야 합니다.
이 프로그램을 라이브 스트리밍에 사용할 계획이라면 실시간 캡션/자막용 OBS 텍스트 입력으로 chat.txt
및 output.txt
사용하세요.
def transcribe_audio(file):
global chat_now
try:
audio_file= open(file, "rb")
# Translating the audio to English
# transcript = openai.Audio.translate("whisper-1", audio_file)
# Transcribe the audio to detected language
transcript = openai.Audio.transcribe("whisper-1", audio_file)
chat_now = transcript.text
print ("Question: " + chat_now)
except:
print("Error transcribing audio")
return
result = owner_name + " said " + chat_now
conversation.append({'role': 'user', 'content': result})
openai_answer()
이 코드 줄을 이것으로 변경하십시오. 이렇게 하면 오류에 대한 자세한 정보를 얻는 데 도움이 됩니다.
def transcribe_audio(file):
global chat_now
audio_file= open(file, "rb")
# Translating the audio to English
# transcript = openai.Audio.translate("whisper-1", audio_file)
# Transcribe the audio to detected language
transcript = openai.Audio.transcribe("whisper-1", audio_file)
chat_now = transcript.text
print ("Question: " + chat_now)
result = owner_name + " said " + chat_now
conversation.append({'role': 'user', 'content': result})
openai_answer()
이 문제를 해결하는 또 다른 옵션은 OpenAI 라이브러리를 최신 버전으로 업그레이드하는 것입니다. 프로그램이 음성/문장을 캡처하는지 확인하고 input.wav
를 들어보십시오.
이 라이브러리는 설치가 약간 까다롭습니다. 이 문제가 발생하면 utils/TTS.py
에서 katakana_converter
를 삭제하고 사용하지 마세요. 해당 기능은 선택 사항이므로 해당 기능 없이도 프로그램을 실행할 수 있습니다. utils/TTS.py
에서 이 두 줄을 삭제하세요.
from utils.katakana import *
katakana_text = katakana_converter(tts)
tts
코드의 다음 줄에 전달하면 됩니다.
params_encoded = urllib.parse.urlencode({'text': tts, 'speaker': 46})
이 프로젝트는 shioridotdev의 작업에서 영감을 받았습니다. VoiceVox Engine, DeepL, Whisper OpenAI 및 VtubeStudio를 포함하여 이 프로젝트에 사용된 기술의 제작자에게 특별히 감사드립니다.