Spaces:
Sleeping
Sleeping
File size: 4,866 Bytes
9c4bf4f 26ff9be 9c4bf4f 26ff9be 9c4bf4f 26ff9be 9c4bf4f 26ff9be a359a1a 26ff9be 9c4bf4f 4835adc 9c4bf4f 4835adc 9c4bf4f 4835adc 26ff9be a359a1a 26ff9be 1ce0f2e 26ff9be cf86894 53f3bc6 26ff9be a359a1a 26ff9be 5808bd1 26ff9be bf2199e 26ff9be cf86894 9c4bf4f 7758f6a 4835adc bf2199e a359a1a 9c4bf4f 7758f6a 26ff9be |
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 |
import gradio as gr
import os
from transformers import AutoTokenizer,VitsModel
import google.generativeai as genai
import torch
api_key =os.environ.get("id_gmkey")
token=os.environ.get("key_")
genai.configure(api_key=api_key)
tokenizer = AutoTokenizer.from_pretrained("asg2024/vits-ar-sa-huba",token=token)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model_vits=VitsModel.from_pretrained("asg2024/vits-ar-sa-huba",token=token).to(device)
generation_config = {
"temperature": 1,
"top_p": 0.95,
"top_k": 64,
"max_output_tokens": 8192,
"response_mime_type": "text/plain",
}
model = genai.GenerativeModel(
model_name="gemini-1.5-flash",
generation_config=generation_config,
# safety_settings = Adjust safety settings
# See https://ai.google.dev/gemini-api/docs/safety-settings
)
def create_chat_session():
chat_session = model.start_chat(
history=[
{
"role": "user",
"parts": [
"السلام عليكم اريد منك ان ترد على اسئلتي دائما باللهجة السعودية النجدية \n\n",
],
},
{
"role": "model",
"parts": [
"هلا والله، إسأل ما في خاطرك وأنا حاضر أساعدك، بس بشرط واحد، أسئلتك تكون واضحة عشان أفهم عليك عدل وأعطيك الجواب الزين. قل وش تبي وأنا حاضر! \n",
],
},
{
"role": "user",
"parts": [
"كيف حالك اخبارك\n",
],
},
{
"role": "model",
"parts": [
"هلا والله وغلا، أنا طيب وبخير الحمد لله، انت كيفك؟ عساك طيب؟ \n \n وش عندك أخبار؟ عسى كلها زينة. \n",
],
},
{
"role": "user",
"parts": [
"اريد ايضا ان تكون اجابتك مختصره على سبيل المثال ااكثر اجابة سطرين\n",
],
},
{
"role": "model",
"parts": [
"خلاص، فهمتك. من عيوني، أسئلتك من اليوم وطالع أجوبتها ما تتعدى سطرين. \n \n إسأل وشف! \n",
],
},
]
)
return chat_session
AI=create_chat_session()
def get_answer_ai(text):
global AI
try:
response = AI.send_message(text,stream=True)
return response
except :
AI=create_chat_session()
response = AI.send_message(text,stream=True)
return response
def modelspeech(text):
with torch.no_grad():
inputs = tokenizer(text, return_tensors="pt")#.cuda()
wav = model_vits(input_ids=inputs["input_ids"]).waveform.cpu().numpy().reshape(-1)
# display(Audio(wav, rate=model.config.sampling_rate))
return model_vits.config.sampling_rate,wav#remove_noise_nr(wav)
import re
def clean_text(text):
# Remove symbols and extra spaces
cleaned_text = re.sub(r'[^\w\s]', ' ', text) # Remove symbols
cleaned_text = re.sub(r'\s+', ' ', cleaned_text) # Normalize spaces
return cleaned_text.strip() # Remove leading/trailing spaces
def text_to_speech(text):
response = dash(text)
pad_text=''
k=0
for chunk in response:
pad_text+=str(clean_text(chunk))
if pad_text!='' and len(pad_text)>10:
out=pad_text
pad_text=''
k+=1
yield modelspeech(out)
if pad_text!='':
yield modelspeech(pad_text)
def dash(text):
response=get_answer_ai(text)
for chunk in response:
yield chunk.text
# demo = gr.Interface(fn=dash, inputs=["text"], outputs=['text'])
# demo.launch()
with gr.Blocks() as demo:
with gr.Tab("AI Text "):
gr.Markdown("# Text to Speech")
text_input = gr.Textbox(label="Enter Text")
text_out = gr.Textbox()
text_input.submit(dash, text_input, text_out)
with gr.Tab("AI Speech"):
gr.Markdown("# Text to Speech")
text_input2 = gr.Textbox(label="Enter Text")
audio_output = gr.Audio(streaming=True)
text_input2.submit(text_to_speech, text_input2, audio_output)
demo.launch(show_error=True)
|