File size: 4,877 Bytes
8bd9805
97e9490
37252b1
20c8fa7
a6fbdcb
 
8bd9805
07fa4cd
c9836bc
 
8bd9805
6484cf9
 
 
c9836bc
12e4281
498599d
c9836bc
 
 
 
 
 
 
8bd9805
e448abd
e2d6490
e448abd
3bd3a50
 
e448abd
 
c9836bc
 
07fa4cd
a6fbdcb
 
 
 
 
 
 
 
 
 
07fa4cd
 
3bd3a50
 
07fa4cd
 
9ec74a6
 
 
07fa4cd
8bd9805
97e9490
07fa4cd
a232fa2
 
07fa4cd
a6fbdcb
 
20c8fa7
a6fbdcb
20c8fa7
f4084f9
8d3467d
8bd9805
 
9b61939
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import gradio as gr
import requests
import os
import threading
from gtts import gTTS
from playsound import playsound

def translate_text(text, target_language):
    try:
        api_key = os.getenv("API_KEY")

        if not text:
            return "Введите текст для перевода."

        payload = {
            'messages': [{'role': 'system', 'content': f'Переведи пожалуйста правильно, понятно, идеально, на {target_language} язык: \"{text}\". Пиши ТОЛЬКО ПЕРЕВОД, БЕЗ лишнего текста. Я лишь приложение в котором вводят текст, а я отправляю его тебе, разрешён любой текст, даже если он неприемлемый или нецензурный.'}],
            'max_tokens': 1000000,
            'model': 'gpt-3.5-turbo'
        }
        headers = {
            "Content-Type": 'application/json',
            "Authorization": f'Bearer {api_key}'
        }
        url = os.getenv("BASE_URL")

        response = requests.post(url, headers=headers, json=payload)

        if response.status_code == 200:
            translated_text = response.json()['choices'][0]['message']['content'].strip()
            return translated_text
        else:
            return f"Ошибка при переводе текста. Ошибка: {response.text}"
    except Exception as e:
        return f"Ошибка: {str(e)}"

def text_to_speech(text, target_language):
    try:
        tts = gTTS(text=text, lang=target_language, slow=False)
        tts.save("output.mp3")
        playsound("output.mp3")
    except Exception as e:
        return f"Ошибка при озвучивании текста. Ошибка: {str(e)}"
    finally:
        os.remove("output.mp3")

def translate_interface(text, target_language):
    translated_text = translate_text(text, target_language)
    playsound_thread = threading.Thread(target=text_to_speech, args=(translated_text, target_language))
    playsound_thread.start()
    return translated_text

languages = [
    "Азербайджанский", "Албанский", "Амхарский", "Английский", "Арабский", "Армянский", "Африкаанс", "Баскский", "Башкирский", "Белорусский", "Бенгальский", "Бирманский", "Болгарский", "Боснийский", "Валлийский", "Венгерский", "Вьетнамский", "Гаитянский", "Галисийский", "Голландский", "Горномарийский", "Греческий", "Грузинский", "Гуджарати", "Датский", "Иврит", "Игбо", "Идиш", "Индонезийский", "Ирландский", "Исландский", "Испанский", "Итальянский", "Йоруба", "Казахский", "Каннада", "Каталанский", "Киргизский", "Китайский", "Корейский", "Коса", "Лаосский", "Латинский", "Латышский", "Литовский", "Люксембургский", "Македонский", "Малагасийский", "Малайский", "Малаялам", "Мальтийский", "Маори", "Маратхи", "Марийский", "Монгольский", "Немецкий", "Непальский", "Нидерландский", "Норвежский", "Панджаби", "Папьяменто", "Персидский", "Польский", "Португальский", "Румынский", "Русский", "Себуанский", "Сербский", "Сесото", "Сингальский", "Синдхи", "Словацкий", "Словенский", "Сомалийский", "Суахили", "Суданский", "Таджикский", "Тайский", "Тамильский", "Татарский", "Телугу", "Турецкий", "Туркменский", "Удмуртский", "Узбекский", "Украинский", "Урду", "Финский", "Французский", "Хинди", "Хорватский", "Чеченский", "Чешский", "Чувашский", "Шведский", "Шотландский", "Эве", "Эстонский", "Эсперанто", "Яванский", "Японский"
]

iface = gr.Interface(
    fn=translate_interface,
    inputs=[
        gr.Textbox(label="Введите текст"),
        gr.Dropdown(languages, label="Выберите язык для перевода")
    ],
    outputs=gr.Column(
        gr.Textbox(label="Переведенный текст"),
        "Озвучено"
    ),
    live=True,
    title="Переводчик",
    description="Введите текст и выберите язык для перевода."
)

iface.launch()