from diffusers import DiffusionPipeline from typing import List, Optional, Tuple, Union import torch import gradio as gr import spaces css=""" #input-panel{ align-items:center; justify-content:center } """ modelnames=[ "ahmedfaiyaz/OkkhorDiffusion", "ahmedfaiyaz/OkkhorDiffusion-CMATERdb", "ahmedfaiyaz/OkkhorDiffusion-Ekush" ] current_model="ahmedfaiyaz/OkkhorDiffusion" #updated username pipeline = DiffusionPipeline.from_pretrained(current_model,custom_pipeline="ahmedfaiyaz/OkkhorDiffusion",embedding=torch.float16) character_mappings = { 'অ': 0, 'আ': 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, 'ক্ষ(ksa)': 60, 'ব্দ(bda)': 61, 'ঙ্গ': 62, 'স্ক': 63, 'স্ফ': 64, 'স্থ': 65, 'চ্ছ': 66, 'ক্ত': 67, 'স্ন': 68, 'ষ্ণ': 69, 'ম্প': 70, 'হ্ম': 71, 'প্ত': 72, 'ম্ব': 73, 'ন্ড': 74, 'দ্ভ': 75, 'ত্থ': 76, 'ষ্ঠ': 77, 'ল্প': 78, 'ষ্প': 79, 'ন্দ': 80, 'ন্ধ': 81, 'ম্ম': 82, 'ন্ঠ': 83, } ekush_mappings = {'অ': 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} cmaterdb_mappings={ 'প্র': 0, 'ঙ্গ': 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, 'এ': 178, 'ঐ': 179, 'ও': 180, 'ঔ': 181, 'ক': 182, 'খ': 183, 'গ': 184, 'ঘ': 185, 'ঙ': 186, 'চ': 187, 'ছ': 188, 'জ': 189, 'ঝ': 190, 'ঞ': 191, 'ট': 192, 'ঠ': 193, 'ড': 194, 'ঢ': 195, 'ণ': 196, 'ত': 197, 'থ': 198, 'দ': 199, 'ধ': 200, 'ন': 201, 'প': 202, 'ফ': 203, 'ব': 204, 'ভ': 205, 'ম': 206, 'য': 207, 'র': 208, 'ল': 209, 'শ': 210, 'ষ': 211, 'স': 212, 'হ': 213, 'ড়': 214, 'ঢ়': 215, 'য়': 216, 'ৎ': 217, 'ং': 218, 'ঃ': 219, 'ঁ': 220} character_mappings_model_wise={ "ahmedfaiyaz/OkkhorDiffusion":character_mappings, "ahmedfaiyaz/OkkhorDiffusion-CMATERdb":cmaterdb_mappings, "ahmedfaiyaz/OkkhorDiffusion-Ekush":ekush_mappings } @spaces.GPU def generate(modelname:str,input_text:str,batch_size:int,inference_steps:int): batch_size=int(batch_size) inference_steps=int(inference_steps) print(f"Generating image with label:{character_mappings_model_wise[current_model][input_text]} batch size:{batch_size}") label=int(character_mappings_model_wise[current_model][input_text]) pipeline.embedding=torch.tensor([label],device="cuda") #testing zero gpu generate_image=pipeline(batch_size=batch_size,num_inference_steps=inference_steps).images return generate_image def switch_pipeline(modelname:str): global pipeline pipeline = DiffusionPipeline.from_pretrained(modelname,custom_pipeline="ahmedfaiyaz/OkkhorDiffusion",embedding=torch.int16) pipeline.to('cuda') global current_model current_model=modelname return f"""