Update app.py
Browse files
app.py
CHANGED
@@ -31,6 +31,12 @@ conversation_history = []
|
|
31 |
language_dict = {
|
32 |
'English-Jenny (Female)': 'en-US-JennyNeural',
|
33 |
'English-Guy (Male)': 'en-US-GuyNeural',
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
'Spanish (Mexican)-Dalia (Female)': 'es-MX-DaliaNeural',
|
35 |
'Spanish (Mexican)-Jorge (Male)': 'es-MX-JorgeNeural',
|
36 |
'Korean-Sun-Hi(Female)': 'ko-KR-SunHiNeural',
|
@@ -279,6 +285,8 @@ class MyClient(discord.Client):
|
|
279 |
else:
|
280 |
response = await generate_response(message)
|
281 |
await message.channel.send(response)
|
|
|
|
|
282 |
finally:
|
283 |
self.is_processing = False
|
284 |
|
@@ -288,23 +296,27 @@ class MyClient(discord.Client):
|
|
288 |
isinstance(message.channel, discord.Thread) and message.channel.parent_id == SPECIFIC_CHANNEL_ID
|
289 |
)
|
290 |
|
291 |
-
def contains_korean(self, text):
|
292 |
-
return re.search(r'[κ°-ν£]', text) is not None
|
293 |
-
|
294 |
async def handle_tts_command(self, message):
|
295 |
parts = message.content.split(' ', 3)
|
296 |
-
if len(parts) <
|
297 |
-
await message.channel.send("μ¬λ°λ₯Έ νμμ '!tts μ
λ ₯λ¬Έμμ΄'μ
λλ€. μ: !tts μλ
νμΈμ")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
298 |
return
|
299 |
|
300 |
-
|
|
|
|
|
|
|
301 |
|
302 |
-
|
303 |
-
|
304 |
-
await self.generate_and_send_tts(message.channel, text, 'Korean-InJoon(Male)', language_dict['Korean-InJoon(Male)'])
|
305 |
-
else:
|
306 |
-
available_languages = '\n'.join([f"{key}: {value}" for key, value in language_dict.items()])
|
307 |
-
await message.channel.send(f"νκ΅μ΄κ° μλ μΈμ΄μ μμ± μμ±μ κ΄λ¦¬μμκ² μμ²νμκΈ° λ°λλλ€. μ§μ μΈμ΄ λͺ©λ‘:\n{available_languages}")
|
308 |
|
309 |
async def send_long_message(self, channel, content):
|
310 |
# λ©μμ§λ₯Ό 2000μ λ¨μλ‘ λΆν νμ¬ μ μ‘
|
@@ -313,15 +325,6 @@ class MyClient(discord.Client):
|
|
313 |
await channel.send(part)
|
314 |
content = content[2000:]
|
315 |
|
316 |
-
async def generate_and_send_tts(self, channel, text, language_and_gender, voice):
|
317 |
-
tts_response, audio_path = await text_to_speech_edge(text, voice)
|
318 |
-
if not audio_path:
|
319 |
-
await channel.send(f"TTS μ²λ¦¬ μ€ μ€λ₯κ° λ°μνμ΅λλ€ ({language_and_gender}).")
|
320 |
-
return
|
321 |
-
|
322 |
-
await channel.send(f"{tts_response} ({language_and_gender})", file=discord.File(audio_path))
|
323 |
-
os.remove(audio_path) # μμ νμΌ μμ
|
324 |
-
|
325 |
async def generate_response(message):
|
326 |
global conversation_history # μ μ λ³μ μ¬μ©μ λͺ
μ
|
327 |
user_input = message.content
|
@@ -370,3 +373,4 @@ if __name__ == "__main__":
|
|
370 |
discord_client = MyClient(intents=intents)
|
371 |
discord_client.run(os.getenv('DISCORD_TOKEN'))
|
372 |
|
|
|
|
31 |
language_dict = {
|
32 |
'English-Jenny (Female)': 'en-US-JennyNeural',
|
33 |
'English-Guy (Male)': 'en-US-GuyNeural',
|
34 |
+
'English-Ana (Female)': 'en-US-AnaNeural',
|
35 |
+
'English-Aria (Female)': 'en-US-AriaNeural',
|
36 |
+
'English-Christopher (Male)': 'en-US-ChristopherNeural',
|
37 |
+
'English-Eric (Male)': 'en-US-EricNeural',
|
38 |
+
'English-Michelle (Female)': 'en-US-MichelleNeural',
|
39 |
+
'English-Roger (Male)': 'en-US-RogerNeural',
|
40 |
'Spanish (Mexican)-Dalia (Female)': 'es-MX-DaliaNeural',
|
41 |
'Spanish (Mexican)-Jorge (Male)': 'es-MX-JorgeNeural',
|
42 |
'Korean-Sun-Hi(Female)': 'ko-KR-SunHiNeural',
|
|
|
285 |
else:
|
286 |
response = await generate_response(message)
|
287 |
await message.channel.send(response)
|
288 |
+
except Exception as e:
|
289 |
+
logging.error(f"Error processing message: {e}")
|
290 |
finally:
|
291 |
self.is_processing = False
|
292 |
|
|
|
296 |
isinstance(message.channel, discord.Thread) and message.channel.parent_id == SPECIFIC_CHANNEL_ID
|
297 |
)
|
298 |
|
|
|
|
|
|
|
299 |
async def handle_tts_command(self, message):
|
300 |
parts = message.content.split(' ', 3)
|
301 |
+
if len(parts) < 4:
|
302 |
+
await message.channel.send("μ¬λ°λ₯Έ νμμ '!tts μΈμ΄ μ±λ³ μ
λ ₯λ¬Έμμ΄'μ
λλ€. μ: !tts ko m μλ
νμΈμ")
|
303 |
+
return
|
304 |
+
|
305 |
+
language_and_gender, text = f"{parts[1]} {parts[2]}", parts[3]
|
306 |
+
voice = language_dict.get(language_and_gender)
|
307 |
+
|
308 |
+
if not voice:
|
309 |
+
available_options = ', '.join(language_dict.keys())
|
310 |
+
await self.send_long_message(message.channel, f"μ§μνμ§ μλ μΈμ΄ λλ μ±λ³μ
λλ€. μ¬μ© κ°λ₯ν μ΅μ
: {available_options}")
|
311 |
return
|
312 |
|
313 |
+
tts_response, audio_path = await text_to_speech_edge(text, voice)
|
314 |
+
if not audio_path:
|
315 |
+
await message.channel.send("TTS μ²λ¦¬ μ€ μ€λ₯κ° λ°μνμ΅λλ€.")
|
316 |
+
return
|
317 |
|
318 |
+
await message.channel.send(tts_response, file=discord.File(audio_path))
|
319 |
+
os.remove(audio_path) # μμ νμΌ μμ
|
|
|
|
|
|
|
|
|
320 |
|
321 |
async def send_long_message(self, channel, content):
|
322 |
# λ©μμ§λ₯Ό 2000μ λ¨μλ‘ λΆν νμ¬ μ μ‘
|
|
|
325 |
await channel.send(part)
|
326 |
content = content[2000:]
|
327 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
328 |
async def generate_response(message):
|
329 |
global conversation_history # μ μ λ³μ μ¬μ©μ λͺ
μ
|
330 |
user_input = message.content
|
|
|
373 |
discord_client = MyClient(intents=intents)
|
374 |
discord_client.run(os.getenv('DISCORD_TOKEN'))
|
375 |
|
376 |
+
|