File size: 2,080 Bytes
aa95dd5
 
 
530748c
aa95dd5
02d73d0
7d0efdb
7559f43
7d0efdb
 
e92c6df
7d0efdb
 
90a6bd5
 
02d73d0
a7f8c36
7d0efdb
 
19ee568
90a6bd5
 
aa95dd5
90a6bd5
 
0d80cbf
02d73d0
aa95dd5
 
7559f43
90a6bd5
2240547
90a6bd5
 
02d73d0
 
 
 
 
 
aa95dd5
90a6bd5
ae677e4
aa95dd5
90a6bd5
02d73d0
 
aa95dd5
02d73d0
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
49
50
import gradio as gr
import os
import tempfile
from openai import OpenAI

def tts(text, model, voice, language, api_key):
    if api_key == '':
        raise gr.Error('Please enter your API Key')
    else:
        try:
            client = OpenAI(api_key=api_key)

            response = client.audio.speech.create(
                model=model,
                voice=voice,
                language=language,  # Parametrul adăugat pentru limbă
                input=text,
            )

            with tempfile.NamedTemporaryFile(suffix=".mp3", delete=False) as temp_file:
                temp_file.write(response.content)
                temp_file_path = temp_file.name

            return temp_file_path
        except Exception as error:
            print(str(error))
            raise gr.Error("An error occurred while generating speech. Please check your API key and try again.")

with gr.Blocks() as demo:
    gr.Markdown("# <center> Text-To-Speech API Key </center>")

    with gr.Row(variant='panel'):
        api_key = gr.Textbox(type='password', label='OpenAI API Key', placeholder='Enter your API key to access the TTS')
        model = gr.Dropdown(choices=['tts-1', 'tts-1-hd'], label='Model', value='tts-1-hd')
        voice = gr.Dropdown(choices=['alloy', 'ash', 'coral', 'echo', 'fable', 'onyx', 'nova', 'sage', 'shimmer'], label='Voice Options', value='echo')
        language = gr.Dropdown(
            choices=['en', 'fr', 'es', 'de', 'it', 'ro', 'tr', 'br', 'ru'],
            label='Choose a language',
            value='en'
        )

    text = gr.Textbox(label="Input text", placeholder="Enter your text and then click the 'Text-To-Speech' button or press Enter.")
    btn = gr.Button("Text-To-Speech")
    output_audio = gr.Audio(label="Speech Output")

    text.submit(fn=tts, inputs=[text, model, voice, language, api_key], outputs=output_audio, api_name="tts_enter_key", concurrency_limit=None)
    btn.click(fn=tts, inputs=[text, model, voice, language, api_key], outputs=output_audio, api_name="tts_button", concurrency_limit=None)

demo.launch()