Spaces:
Paused
Paused
| #Flask-APScheduler | |
| from flask_basicauth import BasicAuth | |
| from datetime import datetime | |
| from flask_apscheduler import APScheduler | |
| from flask import Flask | |
| from flsak import request | |
| model_name = "inclusionAI/Ring-mini-2.0" | |
| print(f"load model {model_name}") | |
| model = AutoModelForCausalLM.from_pretrained( | |
| model_name, | |
| torch_dtype="auto", | |
| device_map="auto", | |
| trust_remote_code=True | |
| ) | |
| print(f"load tokenizer {model_name}") | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| app = Flask(__name__) | |
| # prompt = "Напиши стих про шинное обучение" | |
| # print(response) | |
| import torch | |
| from qwen_asr import Qwen3ASRModel | |
| model = Qwen3ASRModel.from_pretrained( | |
| "Qwen/Qwen3-ASR-1.7B", | |
| dtype=torch.bfloat16, | |
| device_map="cuda:0", | |
| # device_map="cpu", | |
| # attn_implementation="flash_attention_2", | |
| max_inference_batch_size=32, # Batch size limit for inference. -1 means unlimited. Smaller values can help avoid OOM. | |
| max_new_tokens=256, # Maximum number of tokens to generate. Set a larger value for long audio input. | |
| ) | |
| import datetime | |
| start=datetime.datetime.now() | |
| results = model.transcribe( | |
| audio="https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen3-ASR-Repo/asr_en.wav", | |
| language=None, # set "English" to force the language | |
| ) | |
| # Чтобы защитить паролем конечную точку задания: | |
| # @basic_auth.required | |
| basic_auth = BasicAuth(app) | |
| app.config['BASIC_AUTH_REALM'] = 'realm' | |
| app.config['BASIC_AUTH_USERNAME'] = 'vova' | |
| app.config['BASIC_AUTH_PASSWORD'] = 'vova' | |
| print(f"Flask app") | |
| # Главная страница | |
| # | |
| def root(): | |
| if request.args.get('logs'): #logs=container ?logs=container&__theme=system | |
| return f"<h1>Главная logs</h1>" | |
| else: | |
| return f"<h1>Главная страница</h1><p>Добро пожаловать!</p><p>current model {model_name}</p>" | |
| # Страница "О нас" | |
| def about(): | |
| return "<h1>О нас</h1><p>Мы изучаем Flask!</p>" | |
| # Страница "Контакты" | |
| def contact(): | |
| import datetime | |
| start=datetime.datetime.now() | |
| results = model.transcribe( | |
| audio="https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen3-ASR-Repo/asr_en.wav", | |
| language=None, # set "English" to force the language) | |
| print(f'duration {datetime.datetime.now()-start}') | |
| print(results[0].language) | |
| print(results[0].text) | |
| return f"<h1>Контакты</h1><p>duration {datetime.datetime.now()-start}</p><p>results[0].text</p>" | |
| if __name__ == "__main__": | |
| app.run(debug=False, host='0.0.0.0', port=7860) root@telebot1:/opt/HF/TruVlad/flaskapi# |