File size: 3,034 Bytes
271f307
 
 
 
0064343
 
 
 
0477c9e
271f307
 
 
 
 
 
 
 
 
 
 
 
 
5baa862
271f307
4bb59b6
271f307
 
5baa862
271f307
 
 
 
 
 
 
 
 
fedb67a
9b66a3d
2197af3
8052ea6
9b66a3d
 
aba73cd
9b66a3d
 
37f7a38
c5c3727
 
0064343
c5142ee
0064343
 
 
 
 
 
 
 
 
c5c3727
6299791
c5c3727
 
 
 
 
 
94899af
0064343
 
c56a226
e5ba1e3
0064343
 
 
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
from huggingface_hub import InferenceClient
import gradio as gr
import random
import prompts
from pypipertts import PyPiper
pp=PyPiper()
pp.load_mod(instr="en_US-joe-medium")

#client = InferenceClient("Qwen/QwQ-32B-Preview")
client = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1")

def format_prompt(message, history):

  prompt = "<s>"
  for user_prompt, bot_response in history:
    print (bot_response)
    prompt += f"[INST] {user_prompt} [/INST]"
    prompt += f" {bot_response}</s> "
  prompt += f"[INST] {message} [/INST]"
  return prompt

def generate(prompt,history,max_new_tokens,seed):
    seed = random.randint(1,9999999999999)
    print(seed)
    system_prompt = prompts.ASSISTANT
    generate_kwargs = dict(
        temperature=0.9,
        max_new_tokens=512,
        top_p=0.95,
        repetition_penalty=1.0,
        do_sample=True,
        seed=seed,
    )

    formatted_prompt = format_prompt(f"{system_prompt}, {prompt}", history)
    stream = client.text_generation(formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=False)
    output = ""
    buf = ""
    out_b=[]
    for response in stream:
        output += response.token.text
        buf += response.token.text
        if response.token.text == "\n" or response.token.text == "</s>" or response.token.text == ". ":
            yield [(prompt,output)], output
            buf=""
    
def tts(inp,voice,length,noise,width,sen_pause):
    yield from pp.stream_tts(inp,voice,length,noise,width,sen_pause)

with gr.Blocks() as iface:
    stt=gr.State()
    gr.HTML("""""")
    aud=gr.Audio(streaming=True,autoplay=True)
    #chatbot=gr.Chatbot(show_label=False, show_share_button=False, show_copy_button=True, likeable=True, layout="panel"),
    chatbot=gr.Chatbot()
    msg = gr.Textbox()
    with gr.Row():
        submit_b = gr.Button()
        stop_b = gr.Button("Stop")
        clear = gr.ClearButton([msg, chatbot])
    with gr.Accordion("Voice Controls",open=False):
        names=gr.Dropdown(label="Voice", choices=pp.key_list,value="en_US-joe-medium")
        length=gr.Slider(label="Length", minimum=0.01, maximum=10.0, value=1)
        noise=gr.Slider(label="Noise", minimum=0.01, maximum=3.0, value=0.5)
        width=gr.Slider(label="Noise Width", minimum=0.01, maximum=3.0, value=0.5)
        sen_pause=gr.Slider(label="Sentence Pause", minimum=0.1, maximum=10.0, value=1)
        upd_btn=gr.Button("Update")
    upd_btn.click(pp.load_mod,names,None)
    
    #sub_b = submit_b.click(generate, [msg,chatbot],[msg,chatbot,sumbox,sum_out_box,hist_out_box])
    #sub_e = msg.submit(generate, [msg, chatbot], [msg, chatbot,sumbox,sum_out_box,hist_out_box])    
    #stt.change(tts,[stt,names,length,noise,width,sen_pause],aud) 
    sub_b = submit_b.click(generate, [msg,chatbot],[chatbot,stt]).then(tts,[stt,names,length,noise,width,sen_pause],aud)
    sub_e = msg.submit(generate, [msg, chatbot], aud)
    stop_b.click(None,None,None, cancels=[sub_b,sub_e])
iface.queue(default_concurrency_limit=10).launch()