seawolf2357 commited on
Commit
11accf8
·
verified ·
1 Parent(s): 2f1f95d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -78
app.py CHANGED
@@ -6,28 +6,22 @@ import time
6
  import tempfile
7
  from huggingface_hub import InferenceClient
8
  from gtts import gTTS
9
-
10
- DESCRIPTION = """ <center><b>JARVIS⚡</b></center> \
11
- ### <center>A personal Assistant of Tony Stark for YOU \
12
- ### <center>Currently It supports text input, But If this space completes 1k hearts than I starts working on Audio Input.</center> \
13
- """
14
-
15
- MORE = """ ## TRY Other Models \
16
- ### Instant Video: Create Amazing Videos in 5 Second -> https://huggingface.co/spaces/KingNish/Instant-Video \
17
- ### Instant Image: 4k images in 5 Second -> https://huggingface.co/spaces/KingNish/Instant-Image \
18
- """
19
-
20
- Fast = """## Fastest Model"""
21
-
22
- Complex = """## Best in Complex Question"""
23
-
24
- Detail = """## Best for Detailed Generation or Long Answers"""
25
-
26
- client1 = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1")
27
-
28
- system_instructions1 = " [SYSTEM] Answer as Real Jarvis JARVIS, Made by 'Tony Stark', Keep conversation very short, clear, friendly and concise. The text provided is a request for a specific type of response from you, the virtual assistant. The request asks you to provide friendly responses as if You are the character Jarvis, made by 'Tony Stark.' The expectation is that I will avoid introductions and start answering the query directly, elaborating on all aspects of the request. As an AI-powered assistant, your task is to generate responses that appear as if they are created by the user and not an AI-powered assistant. [USER]"
29
-
30
- async def generate1(prompt):
31
  generate_kwargs = dict(
32
  temperature=0.6,
33
  max_new_tokens=256,
@@ -36,68 +30,21 @@ async def generate1(prompt):
36
  do_sample=True,
37
  seed=42,
38
  )
39
- formatted_prompt = system_instructions1 + prompt + "[JARVIS]"
40
  stream = client1.text_generation(
41
  formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=True)
42
  output = ""
43
  for response in stream:
44
  output += response.token.text
45
 
 
46
  tts = gTTS(output, lang="ko")
47
  with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as tmp_file:
48
  tmp_path = tmp_file.name
49
  tts.save(tmp_path)
50
- yield tmp_path
51
-
52
- client2 = InferenceClient("meta-llama/Meta-Llama-3-70B-Instruct")
53
-
54
- system_instructions2 = "[SYSTEM] Answer as Real Jarvis JARVIS, Made by 'Tony Stark', Must answer in friendly style and Easy Manner. You can answer Complex Questions. Do not say who are you or Hi, Hello, Just Start answering. Stop, as answer ends. [USER]"
55
-
56
- async def generate2(prompt):
57
- generate_kwargs = dict(
58
- temperature=0.6,
59
- max_new_tokens=512,
60
- top_p=0.95,
61
- repetition_penalty=1,
62
- do_sample=True,
63
- )
64
- formatted_prompt = system_instructions2 + prompt + "[ASSISTANT]"
65
- stream = client2.text_generation(
66
- formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=True)
67
- output = ""
68
- for response in stream:
69
- output += response.token.text
70
-
71
- tts = gTTS(output, lang="ko")
72
- with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as tmp_file:
73
- tmp_path = tmp_file.name
74
- tts.save(tmp_path)
75
- yield tmp_path
76
-
77
- client3 = InferenceClient("meta-llama/Meta-Llama-3-70B-Instruct")
78
-
79
- system_instructions3 = "[SYSTEM]The text provided is a request for a specific type of response from me, the virtual assistant. The request asks me to provide detailed and friendly responses as if I am the character Jarvis, inspired by 'Tony Stark.' The expectation is that I will avoid introductions and start answering the query directly, elaborating on all aspects of the request. As an AI-powered assistant, my task is to generate responses that appear as if they are created by the user and not an AI-powered assistant.[USER]"
80
-
81
- async def generate3(prompt):
82
- generate_kwargs = dict(
83
- temperature=0.6,
84
- max_new_tokens=2048,
85
- top_p=0.95,
86
- repetition_penalty=1,
87
- do_sample=True,
88
- )
89
- formatted_prompt = system_instructions3 + prompt + "[ASSISTANT]"
90
- stream = client3.text_generation(
91
- formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=True)
92
- output = ""
93
- for response in stream:
94
- output += response.token.text
95
 
96
- tts = gTTS(output, lang="ko")
97
- with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as tmp_file:
98
- tmp_path = tmp_file.name
99
- tts.save(tmp_path)
100
- yield tmp_path
101
 
102
  with gr.Blocks(css="style.css") as demo:
103
  gr.Markdown(DESCRIPTION)
@@ -108,12 +55,14 @@ with gr.Blocks(css="style.css") as demo:
108
  interactive=False,
109
  autoplay=True,
110
  elem_classes="audio")
111
- with gr.Row():
112
  translate_btn = gr.Button("Response")
 
113
  translate_btn.click(fn=generate1, inputs=user_input,
114
- outputs=output_audio, api_name="translate")
115
-
116
- gr.Markdown(MORE)
 
 
117
 
118
  if __name__ == "__main__":
119
- demo.queue(max_size=200).launch()
 
6
  import tempfile
7
  from huggingface_hub import InferenceClient
8
  from gtts import gTTS
9
+ import speech_recognition as sr
10
+
11
+ # ...
12
+
13
+ async def generate_audio(prompt):
14
+ # 음성 인식
15
+ r = sr.Recognizer()
16
+ with sr.Microphone() as source:
17
+ print("Speak:")
18
+ audio = r.listen(source)
19
+ try:
20
+ text = r.recognize_google(audio)
21
+ except:
22
+ return "Could not understand audio"
23
+
24
+ # LLM 모델에 입력
 
 
 
 
 
 
25
  generate_kwargs = dict(
26
  temperature=0.6,
27
  max_new_tokens=256,
 
30
  do_sample=True,
31
  seed=42,
32
  )
33
+ formatted_prompt = system_instructions1 + text + "[JARVIS]"
34
  stream = client1.text_generation(
35
  formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=True)
36
  output = ""
37
  for response in stream:
38
  output += response.token.text
39
 
40
+ # 음성 출력
41
  tts = gTTS(output, lang="ko")
42
  with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as tmp_file:
43
  tmp_path = tmp_file.name
44
  tts.save(tmp_path)
45
+ return tmp_path
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
 
47
+ # ...
 
 
 
 
48
 
49
  with gr.Blocks(css="style.css") as demo:
50
  gr.Markdown(DESCRIPTION)
 
55
  interactive=False,
56
  autoplay=True,
57
  elem_classes="audio")
 
58
  translate_btn = gr.Button("Response")
59
+ with gr.Row():
60
  translate_btn.click(fn=generate1, inputs=user_input,
61
+ outputs=output_audio, api_name="translate")
62
+ translate_btn.click(fn=generate_audio, inputs=user_input,
63
+ outputs=output_audio, api_name="generate_audio")
64
+ with gr.Row():
65
+ gr.Markdown(MORE)
66
 
67
  if __name__ == "__main__":
68
+ demo.queue(max_size=200).launch()