import numpy as np
import tempfile
import gradio as gr
from neon_tts_plugin_coqui import CoquiTTS
LANGUAGES = list(CoquiTTS.langs.keys())
default_lang = "en"
# ChatGPT
from pyChatGPT import ChatGPT
import whisper
whisper_model = whisper.load_model("small")
import os
session_token = os.environ.get('SessionToken')
# Creating an HTML file
Func = open("GFG-1.html","w")
# Adding input data to the HTML file
Func.write("\n
\n \nOutput Data in an HTML file \
\n Welcome to GeeksforGeeks \
\nA CS Portal for Everyone \n")
# Saving the data into the HTML file
Func.close()
count = 0
def translate_language(text_prompts):
global count
try:
count += 1
tips_text = None
language_code = language_recognition_model.recognize(text_prompts)
if language_code != 'zh':
text_prompts = language_translation_model.translate(text_prompts, language_code, 'zh')
except Exception as e:
error_text = str(e)
return {status_text:error_text, language_tips_text:gr.update(visible=False)}
if language_code in tips:
tips_text = tips[language_code]
else:
tips_text = tips['en']
if language_code == 'zh':
return {language_tips_text:gr.update(visible=False), translated_language:text_prompts, trigger_component: gr.update(value=count, visible=False)}
else:
return {language_tips_text:gr.update(visible=True, value=tips_text), translated_language:text_prompts, trigger_component: gr.update(value=count, visible=False)}
def inference(text_prompts, style_indx):
try:
model.token = model._apply_token(model.ak, model.sk)
style = style_list[style_indx]
results = model.generate_image(
text_prompts=text_prompts, style=style, visualization=False, topk=4)
except Exception as e:
error_text = str(e)
return {status_text:error_text, gallery:None}
return {status_text:'Success', gallery:results[:4]}
title="بسم الله الرحمن الرحيم"
description="ERNIE-ViLG model, which supports text-to-image task."
css = """
.gradio-container {
font-family: 'IBM Plex Sans', sans-serif;
}
.gr-button {
color: white;
border-color: black;
background: black;
}
input[type='range'] {
accent-color: black;
}
.dark input[type='range'] {
accent-color: #dfdfdf;
}
.container {
max-width: 730px;
margin: auto;
padding-top: 1.5rem;
}
#gallery {
min-height: 22rem;
margin-bottom: 15px;
margin-left: auto;
margin-right: auto;
border-bottom-right-radius: .5rem !important;
border-bottom-left-radius: .5rem !important;
}
#gallery>div>.h-full {
min-height: 20rem;
}
.details:hover {
text-decoration: underline;
}
.gr-button {
white-space: nowrap;
}
.gr-button:focus {
border-color: rgb(147 197 253 / var(--tw-border-opacity));
outline: none;
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
--tw-border-opacity: 1;
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px var(--tw-ring-offset-width)) var(--tw-ring-color);
--tw-ring-color: rgb(191 219 254 / var(--tw-ring-opacity));
--tw-ring-opacity: .5;
}
.footer {
margin-bottom: 45px;
margin-top: 35px;
text-align: center;
border-bottom: 1px solid #e5e5e5;
}
.footer>p {
font-size: .8rem;
display: inline-block;
padding: 0 10px;
transform: translateY(10px);
background: white;
}
.dark .footer {
border-color: #303030;
}
.dark .footer>p {
background: #0b0f19;
}
.prompt h4{
margin: 1.25em 0 .25em 0;
font-weight: bold;
font-size: 115%;
}
"""
block = gr.Blocks(css=css)
examples = [
[
'戴着眼镜的猫',
'油画(Oil painting)'
],
]
with block:
gr.HTML(
"""
ERNIE-ViLG 2.0 is a state-of-the-art text-to-image model that generates
images from Chinese text.
"""
)
gr.HTML(
"""
Prompt format
Prompt = object, details, description
For more details, please refer to
YouPromptMe Guide .
There are more interesting models in PaddleHub, if you think it's great, welcome to star
PaddleHub .
Stars Stars 8.4k 8.4k
Besides, you can use free GPU resourses in
aistudio to enjoy more cases, have fun.
"""
)
#info = "more info at [Neon Coqui TTS Plugin](https://github.com/NeonGeckoCom/neon-tts-plugin-coqui), [Coqui TTS](https://github.com/coqui-ai/TTS)"
#badge = "https://visitor-badge-reloaded.herokuapp.com/badge?page_id=neongeckocom.neon-tts-plugin-coqui"
#coquiTTS = CoquiTTS()
# ChatGPT
def chat_hf(audio, custom_token, language):
try:
whisper_text = translate(audio)
api = ChatGPT(session_token)
resp = api.send_message(whisper_text)
api.refresh_auth() # refresh the authorization token
api.reset_conversation() # reset the conversation
gpt_response = resp['message']
except:
whisper_text = translate(audio)
api = ChatGPT(custom_token)
resp = api.send_message(whisper_text)
api.refresh_auth() # refresh the authorization token
api.reset_conversation() # reset the conversation
gpt_response = resp['message']
# to voice
with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as fp:
coquiTTS.get_tts(gpt_response, fp, speaker = {"language" : language})
return whisper_text, gpt_response, fp.name
# whisper
def translate(audio):
print("""
—
Sending audio to Whisper ...
—
""")
audio = whisper.load_audio(audio)
audio = whisper.pad_or_trim(audio)
mel = whisper.log_mel_spectrogram(audio).to(whisper_model.device)
_, probs = whisper_model.detect_language(mel)
transcript_options = whisper.DecodingOptions(task="transcribe", fp16 = False)
transcription = whisper.decode(whisper_model, mel, transcript_options)
print("language spoken: " + transcription.language)
print("transcript: " + transcription.text)
print("———————————————————————————————————————————")
return transcription.text
with gr.Blocks() as blocks:
gr.Markdown(""
+ title
+ " ")
#gr.Markdown(description)
with gr.Row(equal_height=True):# equal_height=False
with gr.Column():# variant="panel"
audio_file = gr.inputs.Audio(source="microphone", type="filepath")
custom_token = gr.Textbox(label='إذا حدث فشل خلال الاتصال ، قم باستخدام رمز الجلسة "session" الخاص بك', placeholder="ادخل رمز الجلسة الخاص بك هنا session code")
with gr.Row():# mobile_collapse=False
submit = gr.Button("اتمام", variant="primary")
with gr.Column():
text1 = gr.Textbox(label="صوت لنص")
text2 = gr.Textbox(label="chatGPT اجابة الـ")
audio = gr.Audio(label="النتيجة", interactive=False)
#gr.Markdown(info)
#gr.Markdown(""
# +f' '
# +" ")
# actions
submit.click(
chat_hf,
[audio_file, custom_token],
[text1, text2, audio],
)
#radio.change(lambda lang: CoquiTTS.langs[lang]["sentence"], radio, text2)
gr.HTML(
"""
Prompt format
Prompt = object, details, description
For more details, please refer to
YouPromptMe Guide .
There are more interesting models in PaddleHub, if you think it's great, welcome to star
PaddleHub .
Stars Stars 8.4k 8.4k
Besides, you can use free GPU resourses in
aistudio to enjoy more cases, have fun.
"""
)
gr.HTML('''
''')
blocks.launch(debug=True)