audio / app.py
MiklX's picture
Update app.py
3adf29e
raw
history blame
5.59 kB
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)