# 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()