Spaces:
Sleeping
Sleeping
File size: 4,500 Bytes
9fed6cd 4f6e6aa 7ea5fab aed3f20 66d3d20 abd2b7a 224fa84 092b591 3d14d30 f004881 7e35d12 3d14d30 aed3f20 494ef37 092b591 d5c8eb9 092b591 494ef37 d5c8eb9 092b591 78badb3 f0dd428 092b591 224fa84 092b591 224fa84 d3c7ce9 092b591 224fa84 f0dd428 98cb312 5f59609 98cb312 f0dd428 494ef37 3d14d30 9fed6cd 4f6e6aa 494ef37 7ea5fab 016850e 4f6e6aa 9fed6cd 4f6e6aa 3d14d30 ed41d7d 092b591 02e7e58 3d14d30 092b591 3d14d30 ae9dde4 092b591 ed41d7d 494ef37 ed41d7d 12d60b3 ed41d7d 494ef37 ed41d7d aed3f20 ed41d7d f0dd428 ed41d7d d27a194 f0dd428 092b591 a3a5713 d85b3ab 092b591 9fed6cd |
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 |
import gradio as gr
from llama_cpp import Llama
import os
from groq import Groq
import numpy as np
import wave
import uuid
from nemoguardrails import LLMRails, RailsConfig
from GoogleTTS import GoogleTTS
from langchain_openai import ChatOpenAI
os.system("pip uninstall multipart")
os.system("pip install python-multipart")
os.environ["TOKENIZERS_PARALLELISM"] = "false"
#tts
#import torchaudio
#from speechbrain.inference.TTS import FastSpeech2
# from speechbrain.inference.TTS import Tacotron2
# from speechbrain.inference.vocoders import HIFIGAN
#fastspeech2 = FastSpeech2.from_hparams(source="speechbrain/tts-fastspeech2-ljspeech", savedir="pretrained_models/tts-fastspeech2-ljspeech")
# tacotron2 = Tacotron2.from_hparams(source="speechbrain/tts-tacotron2-ljspeech", savedir="tmpdir_tts")
# hifi_gan = HIFIGAN.from_hparams(source="speechbrain/tts-hifigan-ljspeech", savedir="pretrained_models/tts-hifigan-ljspeech")
#google tts
tts = GoogleTTS()
def text_to_speech(text):
# mel_output, mel_length, alignment = tacotron2.encode_text(text)
# Running Vocoder (spectrogram-to-waveform)
# waveforms = hifi_gan.decode_batch(mel_output)
# Save the waverform
outfile = f"{os.path.join(os.getcwd(), str(uuid.uuid4()))}.wav"
# torchaudio.save(outfile, waveforms.squeeze(1), 22050)
if len(text) > 5000:
text_str = text[0:4999]
else:
text_str = text
ret = tts.tts(text_str, outfile)
return outfile
def combine_audio_files(audio_files):
data= []
outfile = "sounds.wav"
for infile in audio_files:
w = wave.open(infile, 'rb')
data.append([w.getparams(), w.readframes(w.getnframes())] )
w.close()
#os.remove(infile) # Remove temporary files
output = wave.open(outfile, 'wb')
output.setparams(data[0][0])
for i in range(len(data)):
output.writeframes(data[i][1])
output.close()
return outfile
#client
# client = Groq(
# api_key=os.getenv("GROQ_API_KEY"),
# )
llm = Llama.from_pretrained(
repo_id="amir22010/fine_tuned_product_marketing_email_gemma_2_9b_q4_k_m", #custom fine tuned model
filename="unsloth.Q4_K_M.gguf", #model file name
cache_dir=os.path.abspath(os.getcwd()),
n_ctx=2048,
n_batch=126,
verbose=False
)
#marketing prompt
marketing_email_prompt = """Below is a product and description, please write a marketing email for this product.
### Product:
{}
### Description:
{}
### Marketing Email:
{}"""
async def greet(product,description):
user_reques = marketing_email_prompt.format(
product, # product
description, # description
"", # output - leave this blank for generation!
)
messages=[
{"role": "user", "content": user_reques},
]
#nemo guard
config = RailsConfig.from_path("guard")
#config = RailsConfig.from_content(yaml_content=YAML_CONFIG)
client = ChatOpenAI(openai_api_key=os.getenv("GROQ_API_KEY"), model_name="llama-3.2-11b-text-preview")
app = LLMRails(config=config, llm=client)
options = {"output_vars": ["triggered_input_rail", "triggered_output_rail"]}
output = await app.generate_async(messages=messages, options=options)
print(output)
warning_message = output.output_data["triggered_input_rail"] or output.output_data["triggered_output_rail"]
if warning_message:
gr.Warning(f"Guardrail triggered: {warning_message}")
chat = [output.response[0]['content']]
yield chat[0]
else:
output = llm.create_chat_completion(
messages=[
{
"role": "system",
"content": "Your go-to Email Marketing Guru - I'm here to help you craft short and concise compelling campaigns, boost conversions, and take your business to the next level.",
},
{"role": "user", "content": user_reques},
],
max_tokens=2048,
temperature=0.7,
stream=True
)
partial_message = ""
audio_list = []
for chunk in output:
delta = chunk['choices'][0]['delta']
if 'content' in delta:
#audio_list.append([text_to_speech(delta.get('content', ''))])
#processed_audio = combine_audio_files(audio_list)
partial_message = partial_message + delta.get('content', '')
yield partial_message
audio = gr.Audio()
demo = gr.Interface(fn=greet, inputs=["text","text"], concurrency_limit=10, outputs=["text"])
demo.launch() |