Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from gtts import gTTS | |
| import io | |
| import os | |
| import librosa | |
| import soundfile as sf | |
| def text_to_speech(text, language_accent, pitch): | |
| lang, tld = language_tld_map[language_accent].split(',') | |
| # create the text-to-speech audio | |
| tts = gTTS(text, lang=lang, tld=tld) | |
| tts.save('gtts.wav') | |
| # Load the audio file | |
| y, sr = librosa.load('gtts.wav') | |
| # Specify the number of semitones to shift | |
| new_y = librosa.effects.pitch_shift(y=y, sr=sr, n_steps=pitch) | |
| sf.write("generated_gtts.wav", new_y, sr) | |
| # return the generated audio | |
| return 'generated_gtts.wav' | |
| language_tld_map = { | |
| "English_Australia": "en,com.au", | |
| "English_United_Kingdom": "en,co.uk", | |
| "English_United_States": "en,com", | |
| "English_Canada": "en,ca", | |
| "English_Nigerian": "en,com.ng", | |
| "English_Ireland": "en,ie", | |
| "English_South Africa": "en,co.za", | |
| "French_Canada": "fr,ca", | |
| "French_France": "fr,fr", | |
| "Mandarin_China_Mainland": "zh-CN,com", | |
| "Mandarin_Taiwan": "zh-TW,com", | |
| "Portuguese_Brazil": "pt,com.br", | |
| "Portuguese_Portugal": "pt,pt", | |
| "Spanish_Mexico": "es,com.mx", | |
| "Spanish_Spain": "es,es", | |
| "Spanish_United_States": "es,com" | |
| } | |
| # create the Gradio interface | |
| iface = gr.Interface(fn=text_to_speech, | |
| inputs=[gr.Textbox(lines=10, label="Enter your text here:"), | |
| gr.Dropdown(choices=list(language_tld_map.keys()), label="Select Language & Accent:", value="English_United_Kingdom", type="value"), | |
| gr.Number(label="Pitch (0 = no variations, negative pitch makes it more masculine, + pitch makes it more feminine):", value=0)], | |
| outputs=[gr.Audio(label="Audio")]) | |
| iface.launch() |