fantaxy commited on
Commit
9319004
β€’
1 Parent(s): 75eda34

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -21
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) < 2:
297
- await message.channel.send("μ˜¬λ°”λ₯Έ ν˜•μ‹μ€ '!tts μž…λ ₯λ¬Έμžμ—΄'μž…λ‹ˆλ‹€. 예: !tts μ•ˆλ…•ν•˜μ„Έμš”")
 
 
 
 
 
 
 
 
298
  return
299
 
300
- text = ' '.join(parts[1:])
 
 
 
301
 
302
- if self.contains_korean(text):
303
- await self.generate_and_send_tts(message.channel, text, 'Korean-Sun-Hi(Female)', language_dict['Korean-Sun-Hi(Female)'])
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
+