v3.5 现在还支持 Twitch Streamer
v3.0 现在不仅支持使用 VoiceVox 的日语 TTS。但还支持 RU(俄语)、EN(英语)、DE(德语)、ES(西班牙语)、FR(法语)、TT(鞑靼语)、UA(乌克兰语)、UZ(乌兹别克语)、XAL(卡尔梅克语)的 TTS,印度语(印地语),使用 Seliro TTS。将run.py
上的voicevox_tts
更改为seliro_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"]
改变你的助手的传说或身份。更改 txt 文件: characterConfigPinaidentity.txt
如果您想在 Twitch 上进行流式传输,则需要更改utils/twitch_config.py
中的配置文件。从这里获取您的令牌。您的令牌应类似于 oauth:43rip6j6fgio8n5xly1oum1lph8ikl1 (本教程中为假)。更改配置文件后,可以使用Mode - 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
。取消注释和注释以在它们之间切换 # 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 Engine。您可以使用 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 语音示例,您可以查看此 Seliro 示例
VoiceVox
,您需要将答案转换为日语,因为 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
上创建该函数。我使用DeepLx
是因为我无法在我的国家/地区注册DeepL
。 DeepL
的翻译结果比谷歌翻译更准确、更随意。但如果你想要简单的方法,只需使用谷歌翻译即可。
如果您想使用程序的音频输出作为Vtubestudio
的输入。您需要使用Virtual Cable
捕获桌面音频并将其用作 VtubeStudio 麦克风的输入。
如果您打算使用此程序进行实时流式传输使用chat.txt
和output.txt
作为OBS文本上的实时字幕/字幕的输入
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。