File size: 5,593 Bytes
6f3613a dfc7daf 01313c5 3adf29e 01313c5 6309d39 bf488ff 382c3e9 528d37a 822a1ab 5992ad9 382c3e9 4d3381d 382c3e9 bf488ff 01313c5 dfc7daf 3adf29e 8ee41a1 3adf29e 382c3e9 3adf29e 01313c5 3adf29e 4d3381d 822a1ab 01313c5 382c3e9 bd34b14 |
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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
from flask import Flask, render_template, request, jsonify
import tempfile
import os
import base64
from langdetect import detect
from gtts import gTTS
app = Flask(__name__)
# Словарь с названиями языков
language_names = {
'ru': 'Русский',
'en': 'Английский',
'es': 'Испанский',
'fr': 'Французский',
'de': 'Немецкий',
'it': 'Итальянский',
'pt': 'Португальский',
'ja': 'Японский',
'zh': 'Китайский',
'ko': 'Корейский',
'ar': 'Арабский',
'hi': 'Хинди',
'tr': 'Турецкий',
'nl': 'Голландский',
'sv': 'Шведский',
'fi': 'Финский',
'no': 'Норвежский',
'da': 'Датский',
'pl': 'Польский',
'cs': 'Чешский',
'sk': 'Словацкий',
'hu': 'Венгерский',
'ro': 'Румынский',
'bg': 'Болгарский',
'el': 'Греческий',
'uk': 'Украинский',
'th': 'Тайский',
'vi': 'Вьетнамский',
'id': 'Индонезийский',
'ms': 'Малайский',
'tl': 'Тагальский',
'sw': 'Суахили',
'he': 'Иврит',
'pl': 'Польский',
'et': 'Эстонский',
'lv': 'Латвийский',
'lt': 'Литовский',
'hr': 'Хорватский',
'sr': 'Сербский',
'sl': 'Словенский',
'mk': 'Македонский',
'sq': 'Албанский',
'fa': 'Персидский',
'ur': 'Урду',
'bn': 'Бенгальский',
'gu': 'Гуджарати',
'ta': 'Тамильский',
'te': 'Телугу',
'ml': 'Малаялам',
'kn': 'Каннада',
'mr': 'Маратхи',
'pa': 'Панджаби',
'ne': 'Непальский',
'si': 'Сингальский',
'my': 'Бирманский',
'km': 'Кхмерский',
'lo': 'Лаосский',
'am': 'Амхарский',
'sw': 'Суахили',
'af': 'Африкаанс',
'xh': 'Коса',
'zu': 'Зулу',
'sn': 'Шона',
'yo': 'Йоруба',
'ig': 'Игбо',
'ha': 'Хауса',
'so': 'Сомалийский',
'sq': 'Албанский',
'ka': 'Грузинский',
'hy': 'Армянский',
'az': 'Азербайджанский',
'kk': 'Казахский',
'uz': 'Узбекский',
'tk': 'Туркменский',
'ky': 'Киргизский',
'tg': 'Таджикский',
'uz': 'Узбекский',
'tk': 'Туркменский',
'ky': 'Киргизский',
'tg': 'Таджикский',
'ps': 'Пушту',
'ku': 'Курдский',
'fa': 'Персидский',
'ar': 'Арабский',
'ur': 'Урду',
'hi': 'Хинди',
'bn': 'Бенгальский',
'pa': 'Панджаби',
'gu': 'Гуджарати',
'ta': 'Тамильский',
'te': 'Телугу',
'ml': 'Малаялам',
'kn': 'Каннада',
'mr': 'Маратхи',
'ne': 'Непальский',
'si': 'Сингальский',
'my': 'Бирманский',
'km': 'Кхмерский',
'lo': 'Лаосский',
'am': 'Амхарский',
'sw': 'Суахили',
'af': 'Африкаанс',
'xh': 'Коса',
'zu': 'Зулу',
'sn': 'Шона',
'yo': 'Йоруба',
'ig': 'Игбо',
'ha': 'Хауса',
'so': 'Сомалийский',
'sq': 'Албанский',
'ka': 'Грузинский',
'hy': 'Армянский',
'az': 'Азербайджанский',
'kk': 'Казахский',
'uz': 'Узбекский',
'tk': 'Туркменский',
'ky': 'Киргизский',
'tg': 'Таджикский',
'ps': 'Пушту',
'ku': 'Курдский',
'mn': 'Монгольский',
'ja': 'Японский',
'ko': 'Корейский',
}
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
password = request.form.get('password')
if password != 'gg':
return jsonify({"status": "error", "message": "Неверный пароль"})
input_text = request.form.get('text')
language_code = detect(input_text)
tts = gTTS(text=input_text, lang=language_code, slow=False)
with tempfile.NamedTemporaryFile(suffix=".mp3", mode="wb+", delete=False) as temp_file:
tts.save(temp_file.name)
temp_file.seek(0)
base64_audio = base64.b64encode(temp_file.read()).decode('utf-8')
os.remove(temp_file.name)
return jsonify({"status": "success", "base64_audio": base64_audio})
return render_template('index.html')
@app.route('/language', methods=['GET', 'POST'])
def language_detection():
if request.method == 'POST':
password = request.form.get('password')
input_text = request.form.get('text')
language_code = detect(input_text)
if language_code in language_names:
language_name = language_names[language_code]
return jsonify({"status": "success", "lang_code": language_code, "lang_name": language_name})
else:
return jsonify({"status": "error", "message": "Неизвестный язык"})
return render_template('index.html')
if __name__ == '__main__':
app.run(host="0.0.0.0", port=7860, debug=False)
|