import gradio as gr from gtts import gTTS import librosa import os def text_to_speech(prompt): # gTTS를 사용하여 Bulgarian 텍스트를 음성으로 변환 tts = gTTS(text=prompt, lang="bg") # 'bg'는 Bulgarian 언어 코드입니다. audio_file = "output.mp3" tts.save(audio_file) # librosa를 사용하여 mp3 파일을 numpy 배열과 샘플레이트로 로드합니다. # sr=None로 설정하면 원본 샘플레이트를 유지합니다. audio_array, sample_rate = librosa.load(audio_file, sr=None) # 임시 mp3 파일 삭제 os.remove(audio_file) # gr.Audio(type="numpy")는 (numpy array, sample_rate) 튜플을 기대합니다. return audio_array, sample_rate with gr.Blocks() as demo: gr.Markdown("## Bulgarian Text-to-Speech (TTS)") with gr.Row(): input_prompt = gr.Textbox(label="Enter a prompt in Bulgarian:") # type을 "numpy"로 설정하여 numpy 배열을 사용합니다. output_audio = gr.Audio(label="Generated Speech", type="numpy") generate_button = gr.Button("Generate Speech") generate_button.click(text_to_speech, inputs=input_prompt, outputs=output_audio) if __name__ == "__main__": demo.launch()