Spaces:
Running
on
Zero
Running
on
Zero
File size: 1,629 Bytes
4300fed 610f79e 4300fed 61c12f6 7ffbb2d 4300fed 4fbe883 532dc11 610f79e cd772b1 610f79e 1821dd9 61c12f6 1821dd9 61c12f6 610f79e 4fbe883 61c12f6 4fbe883 61c12f6 4fbe883 cd772b1 4300fed d4fe6cc 4300fed 610f79e 4300fed 610f79e 70cbf96 881961f 532dc11 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
import gradio as gr
import spaces
import os, torch, io
import json
os.system('python -m unidic download')
# print("Make sure you've downloaded unidic (python -m unidic download) for this WebUI to work.")
from melo.api import TTS
import tempfile
import wave
@spaces.GPU
def synthesize(conversation_text, progress=gr.Progress()):
speed=1.0
device = 'cuda' if torch.cuda.is_available() else 'cpu'
models = {
'EN': TTS(language='EN', device=device),
}
speakers = ['EN-US', 'EN-Default']
combined_audio = AudioSegment.empty()
conversation = json.loads(conversation_text)
for i, turn in enumerate(conversation["conversation"]):
bio = io.BytesIO()
text = turn["text"]
speaker = speakers[i % 2]
speaker_id = models['EN'].hps.data.spk2id[speaker]
models['EN'].tts_to_file(text, speaker_id, bio, speed=speed, pbar=progress.tqdm, format='wav')
bio.seek(0)
audio_segment = AudioSegment.from_file(bio, format="wav")
combined_audio += audio_segment
final_audio_path = 'final.mp3'
combined_audio.export(final_audio_path, format='mp3')
return final_audio_path
with gr.Blocks() as demo:
gr.Markdown('# Turn Any Article into Podcast')
gr.Markdown('## Easily convert articles from URLs into listenable audio Podcast.')
with gr.Group():
text = gr.Textbox(label="Article Link")
btn = gr.Button('Podcasitfy', variant='primary')
aud = gr.Audio(interactive=False)
btn.click(synthesize, inputs=[text], outputs=[aud])
demo.queue(api_open=True, default_concurrency_limit=10).launch(show_api=True)
|