Spaces:
Running
Running
# AUTOGENERATED! DO NOT EDIT! File to edit: app.ipynb. | |
# %% auto 0 | |
__all__ = ['tts_voices', 'create_speech', 'get_input_text_len'] | |
# %% app.ipynb 1 | |
#tts_openai_secrets.py content: | |
#import os | |
#os.environ['OPENAI_API_KEY'] = 'sk-XXXXXXXXXXXXXXXXXXXXXX' | |
try: | |
import os | |
_ = os.environ['OPENAI_API_KEY'] | |
print('OPENAI_API_KEY var was found.') | |
except: | |
print('OPENAI_API_KEY var not found. Trying import tts_openai_secrets') | |
try: | |
import tts_openai_secrets | |
print('import tts_openai_secrets succeeded') | |
except: | |
print('secret import from tts_openai_secrets.py failed - env var must be previously set') | |
# %% app.ipynb 3 | |
import gradio as gr | |
import openai | |
# %% app.ipynb 4 | |
try: | |
tts_models = [o.id for o in openai.models.list().data if 'tts' in o.id] | |
print('successfully got tts model list:', tts_models) | |
except: | |
tts_models = ['tts-1'] | |
# %% app.ipynb 5 | |
tts_voices = ['alloy', 'echo', 'fable', 'onyx', 'nova', 'shimmer'] | |
# %% app.ipynb 6 | |
def create_speech(input_text, model='tts-1', voice='alloy'): | |
client = openai.OpenAI() | |
response = client.audio.speech.create( | |
model=model, | |
voice=voice, | |
input=input_text, | |
speed=1.0 | |
) | |
client.close() | |
return response.content | |
# %% app.ipynb 7 | |
def get_input_text_len(input_text): | |
return len(input_text) | |
# %% app.ipynb 8 | |
with gr.Blocks(title='OpenAI TTS', head='OpenAI TTS') as app: | |
gr.Markdown("# OpenAI TTS") | |
gr.Markdown("Start typing below and then click **Go** to create the speech from your text. The current limit is 4,000 characters.") | |
with gr.Row(): | |
input_text = gr.Textbox(max_lines=100, label="Enter text here") | |
with gr.Row(): | |
tts_model_dropdown = gr.Dropdown(value='tts-1',choices=tts_models, label='Model') | |
tts_voice_dropdown = gr.Dropdown(value='alloy',choices=tts_voices,label='Voice') | |
input_text_length = gr.Label(label="Number of characters") | |
output_audio = gr.Audio() | |
input_text.input(fn=get_input_text_len, inputs=input_text, outputs=input_text_length) | |
go_btn = gr.Button("Go") | |
go_btn.click(fn=create_speech, inputs=[input_text, tts_model_dropdown, tts_voice_dropdown], outputs=[output_audio]) | |
clear_btn = gr.Button('Clear') | |
clear_btn.click(fn=lambda: '', outputs=input_text) | |
# %% app.ipynb 9 | |
app.launch() | |