engdialogue / app 정상작동
englissi's picture
Rename app.py to app 정상작동
f5e8362 verified
raw
history blame
3.8 kB
import gradio as gr
from gtts import gTTS
from pydub import AudioSegment
from io import BytesIO
def multilingual_tts(
korean_text,
british_text, # 기존 영국식 입력란
american_text, # 기존 미국식 입력란
british_text_add1, # 추가 영국식 입력란 1
british_text_add2, # 추가 영국식 입력란 2
australian_text_add1, # 추가 호주식 입력란 1
australian_text_add2, # 추가 호주식 입력란 2
american_text_add1 # 추가 미국식 입력란 1
):
# 각 음성에 대해 (언어 코드, tld, 텍스트) 튜플을 리스트에 저장합니다.
voices = [
("ko", "com", korean_text), # 한국어
("en", "co.uk", british_text), # 기존 영국식
("en", "com", american_text), # 기존 미국식
("en", "co.uk", british_text_add1), # 추가 영국식 1
("en", "co.uk", british_text_add2), # 추가 영국식 2
("en", "com.au", australian_text_add1), # 추가 호주식 1
("en", "com.au", australian_text_add2), # 추가 호주식 2
("en", "com", american_text_add1) # 추가 미국식 1
]
combined_audio = AudioSegment.silent(duration=0) # 빈 오디오
for lang, tld, text in voices:
if text.strip(): # 텍스트가 입력되어 있을 때만 처리
tts = gTTS(text, lang=lang, tld=tld)
audio_file = BytesIO()
tts.write_to_fp(audio_file)
audio_file.seek(0)
tts_audio = AudioSegment.from_file(audio_file, format="mp3")
# 각 음성 사이에 500ms의 침묵 추가
combined_audio += tts_audio + AudioSegment.silent(duration=500)
# 최종 결합된 오디오를 mp3 파일로 저장
output_file = "combined_output.mp3"
combined_audio.export(output_file, format="mp3")
return output_file
with gr.Blocks() as demo:
gr.Markdown("## Multilingual TTS: Generate a Single Audio File (총 8개 음성)")
# 한국어 입력란
korean_input = gr.Textbox(label="Enter Korean Text:", placeholder="안녕하세요")
# 기존 영어 입력란 (영국, 미국)
with gr.Row():
british_input = gr.Textbox(label="Enter British English Text:", placeholder="Hello (British)")
american_input = gr.Textbox(label="Enter American English Text:", placeholder="Hello (American)")
# 추가 영어 입력란
with gr.Row():
british_input_add1 = gr.Textbox(label="Enter Additional British English Text 1:", placeholder="Hi there (British)")
british_input_add2 = gr.Textbox(label="Enter Additional British English Text 2:", placeholder="Good day (British)")
with gr.Row():
australian_input_add1 = gr.Textbox(label="Enter Additional Australian English Text 1:", placeholder="G'day (Australian)")
australian_input_add2 = gr.Textbox(label="Enter Additional Australian English Text 2:", placeholder="How ya going? (Australian)")
with gr.Row():
american_input_add1 = gr.Textbox(label="Enter Additional American English Text:", placeholder="Hey (American)")
output_audio = gr.Audio(label="Generated Speech", type="filepath")
generate_button = gr.Button("Generate Speech")
generate_button.click(
multilingual_tts,
inputs=[
korean_input,
british_input,
american_input,
british_input_add1,
british_input_add2,
australian_input_add1,
australian_input_add2,
american_input_add1
],
outputs=output_audio
)
if __name__ == "__main__":
demo.launch()