HayZun commited on
Commit
0d26a7d
1 Parent(s): 9e10b64

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +64 -11
app.py CHANGED
@@ -1,24 +1,71 @@
1
  import gradio as gr
2
  from transformers import pipeline
3
- import tempfile
 
4
  import edge_tts
 
 
 
5
  import inflect
 
 
 
 
6
 
7
  number_to_word = inflect.engine()
8
 
9
- # Modèle de langue français
10
- model = pipeline("text-generation", model="dbddv01/gpt2-french-small")
11
 
12
- async def transcribe(audio):
 
 
13
  lang = "fr"
14
- # Supposons que vous avez déjà défini la fonction de transcription transcribe() dans votre code
15
- text = transcribe(audio)
16
  return text
17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  async def respond(audio):
19
- user = await transcribe(audio)
20
- reply = model(user, max_length=50, num_return_sequences=1)[0]['generated_text']
21
- communicate = edge_tts.Communicate(reply)
 
22
  with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as tmp_file:
23
  tmp_path = tmp_file.name
24
  await communicate.save(tmp_path)
@@ -34,8 +81,14 @@ MORE = """ ## TRY Other Models
34
  ### Instant Image: 4k images in 5 Second -> https://huggingface.co/spaces/KingNish/Instant-Image
35
  """
36
 
 
 
37
  FAST = """## Fastest Model"""
38
 
 
 
 
 
39
  base_loaded = "mistralai/Mixtral-8x7B-Instruct-v0.1"
40
 
41
  client1 = InferenceClient(base_loaded)
@@ -78,7 +131,7 @@ with gr.Blocks(css="style.css") as demo:
78
  outputs=output_audio, api_name=False)
79
  gr.Markdown(FAST)
80
  with gr.Row():
81
- user_input = gr.Textbox(label="Prompt", value="Qu'est-ce que Wikipedia")
82
  input_text = gr.Textbox(label="Input Text", elem_id="important")
83
  output_audio = gr.Audio(label="JARVIS", type="filepath",
84
  interactive=False,
@@ -92,4 +145,4 @@ with gr.Blocks(css="style.css") as demo:
92
  gr.Markdown(MORE)
93
 
94
  if __name__ == "__main__":
95
- demo.queue(max_size=200).launch()
 
1
  import gradio as gr
2
  from transformers import pipeline
3
+ import requests
4
+ import json
5
  import edge_tts
6
+ import asyncio
7
+ import tempfile
8
+ import os
9
  import inflect
10
+ from huggingface_hub import InferenceClient
11
+ import re
12
+ import time
13
+ from streaming_stt_nemo import Model
14
 
15
  number_to_word = inflect.engine()
16
 
17
+ default_lang = "fr"
 
18
 
19
+ engines = { default_lang: Model(default_lang) }
20
+
21
+ def transcribe(audio):
22
  lang = "fr"
23
+ model = engines[lang]
24
+ text = model.stt_file(audio)[0]
25
  return text
26
 
27
+ client1 = InferenceClient("dbddv01/gpt2-french-small")
28
+
29
+ system_instructions1 = "<s>[SYSTEM] Répondez comme le vrai Jarvis JARVIS, fabriqué par 'Tony Stark'. La conversation doit être très courte, claire, amicale et concise. Le texte fourni est une demande de réponse spécifique de votre part, en tant qu'assistant virtuel. Il vous demande de fournir des réponses amicales comme si vous étiez le personnage Jarvis, créé par « Tony Stark ». On s'attend à ce que j'évite les présentations et que je réponde directement à la requête, en développant tous les aspects de la demande. En tant qu'assistant doté d'une IA, votre tâche consiste à générer des réponses qui semblent avoir été créées par l'utilisateur et non par un assistant doté d'une IA.[USER]"
30
+
31
+ def model(text):
32
+ generate_kwargs = dict(
33
+ temperature=0.7,
34
+ max_new_tokens=512,
35
+ top_p=0.95,
36
+ repetition_penalty=1,
37
+ do_sample=True,
38
+ seed=42,
39
+ )
40
+
41
+ formatted_prompt = system_instructions1 + text + "[JARVIS]"
42
+ stream = client1.text_generation(
43
+ formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=False)
44
+ output = ""
45
+ for response in stream:
46
+ if not response.token.text == "</s>":
47
+ output += response.token.text
48
+
49
+ return output
50
+
51
+ def number_to_words(str):
52
+ words = str.split(' ')
53
+ result = []
54
+
55
+ for word in words:
56
+ if( any(char.isdigit() for char in word) ):
57
+ word = number_to_word.number_to_words(word)
58
+
59
+ result.append(word)
60
+
61
+ final_result = ' '.join(result).replace('point', '')
62
+ return final_result
63
+
64
  async def respond(audio):
65
+ user = transcribe(audio)
66
+ reply = model(user)
67
+ reply2 = number_to_words(reply)
68
+ communicate = edge_tts.Communicate(reply2)
69
  with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as tmp_file:
70
  tmp_path = tmp_file.name
71
  await communicate.save(tmp_path)
 
81
  ### Instant Image: 4k images in 5 Second -> https://huggingface.co/spaces/KingNish/Instant-Image
82
  """
83
 
84
+ BETA = """ ### Voice Chat (BETA)"""
85
+
86
  FAST = """## Fastest Model"""
87
 
88
+ Complex = """## Best in Complex Question"""
89
+
90
+ Detail = """## Best for Detailed Generation or Long Answers"""
91
+
92
  base_loaded = "mistralai/Mixtral-8x7B-Instruct-v0.1"
93
 
94
  client1 = InferenceClient(base_loaded)
 
131
  outputs=output_audio, api_name=False)
132
  gr.Markdown(FAST)
133
  with gr.Row():
134
+ user_input = gr.Textbox(label="Prompt", value="What is Wikipedia")
135
  input_text = gr.Textbox(label="Input Text", elem_id="important")
136
  output_audio = gr.Audio(label="JARVIS", type="filepath",
137
  interactive=False,
 
145
  gr.Markdown(MORE)
146
 
147
  if __name__ == "__main__":
148
+ demo.queue(max_size=200).launch()