englissi commited on
Commit
f174cd2
Β·
verified Β·
1 Parent(s): ee7321f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -39
app.py CHANGED
@@ -1,10 +1,10 @@
1
  import os
 
 
2
  import gradio as gr
3
- from TTS.api import TTS
4
 
5
- # Coqui TTS λͺ¨λΈ μ„€μ • (jenny μŒμ„±)
6
- TTS_MODEL = "tts_models/en/jenny/jenny"
7
- tts = TTS(model_name=TTS_MODEL)
8
 
9
  # μŠ€ν† λ¦¬ 데이터 (ν…μŠ€νŠΈ + 이미지 URL 포함)
10
  image_base_url = "https://huggingface.co/spaces/englissi/englishstories/resolve/main/image/"
@@ -21,13 +21,19 @@ stories = [
21
  {"text": "Fun in the sun is the best!", "image": f"{image_base_url}10.webp"}
22
  ]
23
 
24
- # μŒμ„± 파일 생성 ν•¨μˆ˜ (Coqui TTS 이용)
25
- def generate_audio(text, filename="story.wav"):
26
  try:
27
- tts.tts_to_file(text, file_path=filename)
 
28
  print(f"βœ… μŒμ„± 파일 생성 μ™„λ£Œ: {filename}")
29
  except Exception as e:
30
- print("TTS 생성 였λ₯˜:", e)
 
 
 
 
 
31
  return filename
32
 
33
  # μŠ€ν† λ¦¬ ν…μŠ€νŠΈλ₯Ό HTML μŠ€νƒ€μΌλ‘œ 크게 ν‘œμ‹œν•˜κ³  쀑앙 μ •λ ¬ν•˜λŠ” ν•¨μˆ˜
@@ -51,7 +57,7 @@ def init_story():
51
  story = stories[index]
52
  text = story["text"]
53
  image = story["image"]
54
- audio_file = generate_audio(text, filename="story.wav")
55
  return index, text, image, audio_file
56
 
57
  # "λ‹€μŒ" λ²„νŠΌ 클릭 μ‹œ ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜
@@ -60,12 +66,12 @@ def next_story(current_index):
60
  story = stories[new_index]
61
  text = story["text"]
62
  image = story["image"]
63
- audio_file = generate_audio(text, filename="story.wav")
64
  return new_index, format_story_text(text), image, audio_file, text
65
 
66
  # "μž¬μƒ" λ²„νŠΌ 클릭 μ‹œ ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜
67
  def play_story(current_text):
68
- audio_file = generate_audio(current_text, filename="story.wav")
69
  return audio_file
70
 
71
  # 초기 데이터 μ„€μ •
@@ -114,33 +120,5 @@ with gr.Blocks(title="πŸ“š κ·€μ—¬μš΄ μŠ€ν† λ¦¬ μ•±") as demo:
114
  outputs=[audio_output]
115
  )
116
 
117
- # CSS μŠ€νƒ€μΌ μΆ”κ°€ (κ·€μ—¬μš΄ ν…Œλ§ˆ)
118
- demo.css = """
119
- body {
120
- background-color: #FFFAF0; /* λ”°λœ»ν•œ 크림색 λ°°κ²½ */
121
- }
122
-
123
- #next-btn {
124
- background-color: #FFD700; /* λ…Έλž€μƒ‰ λ²„νŠΌ */
125
- font-size: 1.5em;
126
- font-weight: bold;
127
- border-radius: 20px;
128
- padding: 10px;
129
- }
130
-
131
- #play-btn {
132
- background-color: #90EE90; /* μ—°ν•œ μ΄ˆλ‘μƒ‰ λ²„νŠΌ */
133
- font-size: 1.5em;
134
- font-weight: bold;
135
- border-radius: 20px;
136
- padding: 10px;
137
- }
138
-
139
- img {
140
- border-radius: 10px; /* λ‘₯κ·Ό ν…Œλ‘λ¦¬ */
141
- border: 5px solid #FFFFFF; /* 흰색 ν…Œλ‘λ¦¬ */
142
- }
143
- """
144
-
145
  # μ•± μ‹€ν–‰
146
  demo.launch()
 
1
  import os
2
+ import asyncio
3
+ import edge_tts
4
  import gradio as gr
 
5
 
6
+ # Edge TTS μŒμ„± μ„€μ • (Ryan: 어린이 λͺ©μ†Œλ¦¬)
7
+ VOICE = "en-US-RyanNeural"
 
8
 
9
  # μŠ€ν† λ¦¬ 데이터 (ν…μŠ€νŠΈ + 이미지 URL 포함)
10
  image_base_url = "https://huggingface.co/spaces/englissi/englishstories/resolve/main/image/"
 
21
  {"text": "Fun in the sun is the best!", "image": f"{image_base_url}10.webp"}
22
  ]
23
 
24
+ # Edge TTSλ₯Ό μ‚¬μš©ν•˜μ—¬ μŒμ„± 파일 생성 (비동기 ν•¨μˆ˜)
25
+ async def generate_audio_async(text, filename="story.mp3"):
26
  try:
27
+ tts = edge_tts.Communicate(text, VOICE)
28
+ await tts.save(filename)
29
  print(f"βœ… μŒμ„± 파일 생성 μ™„λ£Œ: {filename}")
30
  except Exception as e:
31
+ print("⚠️ TTS 생성 였λ₯˜:", e)
32
+ return filename
33
+
34
+ # Gradio와 연동을 μœ„ν•΄ 동기 ν•¨μˆ˜λ‘œ λ³€ν™˜
35
+ def generate_audio(text, filename="story.mp3"):
36
+ asyncio.run(generate_audio_async(text, filename))
37
  return filename
38
 
39
  # μŠ€ν† λ¦¬ ν…μŠ€νŠΈλ₯Ό HTML μŠ€νƒ€μΌλ‘œ 크게 ν‘œμ‹œν•˜κ³  쀑앙 μ •λ ¬ν•˜λŠ” ν•¨μˆ˜
 
57
  story = stories[index]
58
  text = story["text"]
59
  image = story["image"]
60
+ audio_file = generate_audio(text, filename="story.mp3")
61
  return index, text, image, audio_file
62
 
63
  # "λ‹€μŒ" λ²„νŠΌ 클릭 μ‹œ ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜
 
66
  story = stories[new_index]
67
  text = story["text"]
68
  image = story["image"]
69
+ audio_file = generate_audio(text, filename="story.mp3")
70
  return new_index, format_story_text(text), image, audio_file, text
71
 
72
  # "μž¬μƒ" λ²„νŠΌ 클릭 μ‹œ ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜
73
  def play_story(current_text):
74
+ audio_file = generate_audio(current_text, filename="story.mp3")
75
  return audio_file
76
 
77
  # 초기 데이터 μ„€μ •
 
120
  outputs=[audio_output]
121
  )
122
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
  # μ•± μ‹€ν–‰
124
  demo.launch()