Spaces:
Running
Running
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()
|