rick commited on
Commit
6971407
·
unverified ·
1 Parent(s): e9e63dd

update demorrha

Browse files
Files changed (2) hide show
  1. app.py +53 -12
  2. requirements.txt +2 -1
app.py CHANGED
@@ -5,6 +5,9 @@ from audiorecorder import audiorecorder
5
  import tempfile
6
  import base64
7
 
 
 
 
8
  # fonction pour lire et retourner le contenu de fichiers textes
9
  def lire_fichier(nom_fichier):
10
  try:
@@ -16,24 +19,44 @@ def lire_fichier(nom_fichier):
16
  except Exception as e:
17
  return f"Une erreur s'est produite lors de la lecture du fichier : {str(e)}"
18
 
19
- # Configuration de la clé API OpenAI
20
- client = OpenAI(api_key=getenv("OPENAI_API_KEY"))
21
-
22
- # Définition du prompt système initial
23
- SYSTEM_PROMPT = f"{lire_fichier('linguascribe.prompt')}"
24
-
25
- def transcribe_audio(audio_file):
26
  with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as temp_audio:
27
  audio_file.export(temp_audio.name, format="wav")
28
 
29
  with open(temp_audio.name, "rb") as audio_file:
30
  transcript = client.audio.transcriptions.create(
31
  model="whisper-1",
32
- file=audio_file
 
33
  )
34
 
35
  return transcript.text
36
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  def text_to_speech(text):
38
  response = client.audio.speech.create(
39
  model="tts-1",
@@ -77,9 +100,18 @@ def process_message(message, operation_prompt="", is_audio_input=False):
77
  tts_audio = text_to_speech(full_response)
78
  st.audio(tts_audio, format="audio/mp3", autoplay=True)
79
 
 
 
 
 
 
80
  def main():
81
- st.title("Application de Chat avec GPT-4")
82
 
 
 
 
 
83
  # Initialisation de l'historique des messages avec le prompt système
84
  if "messages" not in st.session_state:
85
  st.session_state.messages = [
@@ -104,12 +136,21 @@ def main():
104
 
105
  if len(audio) > 0:
106
  # st.audio(audio.export().read(), autoplay=False)
107
- transcription = transcribe_audio(audio)
 
 
 
108
  st.write(f"Transcription : {transcription}")
109
  process_message(transcription, operation_prompt=f"{OP_PROMPT}", is_audio_input=True)
110
 
111
- st.sidebar.markdown("## À propos")
112
- st.sidebar.info("Cette application utilise Streamlit et OpenAI GPT-4 pour créer un chat interactif avec un modèle de langage avancé.")
 
 
 
 
 
 
113
 
114
  if __name__ == "__main__":
115
  main()
 
5
  import tempfile
6
  import base64
7
 
8
+ # Configuration de la clé API OpenAI
9
+ client = OpenAI(api_key=getenv("OPENAI_API_KEY"))
10
+
11
  # fonction pour lire et retourner le contenu de fichiers textes
12
  def lire_fichier(nom_fichier):
13
  try:
 
19
  except Exception as e:
20
  return f"Une erreur s'est produite lors de la lecture du fichier : {str(e)}"
21
 
22
+ def transcribe_audio(audio_file, language=None):
 
 
 
 
 
 
23
  with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as temp_audio:
24
  audio_file.export(temp_audio.name, format="wav")
25
 
26
  with open(temp_audio.name, "rb") as audio_file:
27
  transcript = client.audio.transcriptions.create(
28
  model="whisper-1",
29
+ file=audio_file,
30
+ language=language
31
  )
32
 
33
  return transcript.text
34
 
35
+ def language_detection(input_text, temperature=0.01):
36
+ system_prompt = "".join([
37
+ "Je souhaite que vous agissiez en tant que fonction linguistique.",
38
+ "Je m'exprimerai dans n'importe quelle langue, et vous en détecterez la langue.",
39
+ "Vous fournirez le resultat de votre detection au format ISO-639-1.",
40
+ "Votre reponse dois representer l'argument `language` et contenir seulement sa valeur de type chaine de caracteres.",
41
+ "La langue de l'audio d'entrée. Fournir la langue d'entrée au format ISO-639-1 améliorera la précision et la latence."
42
+ ])
43
+ response = client.chat.completions.create(
44
+ model="gpt-4o",
45
+ temperature=temperature,
46
+ messages=[
47
+ {
48
+ "role": "system",
49
+ "content": system_prompt
50
+ },
51
+ {
52
+ "role": "user",
53
+ "content": f"{input_text}"
54
+ }
55
+ ]
56
+ )
57
+ return response.choices[0].message.content
58
+
59
+
60
  def text_to_speech(text):
61
  response = client.audio.speech.create(
62
  model="tts-1",
 
100
  tts_audio = text_to_speech(full_response)
101
  st.audio(tts_audio, format="audio/mp3", autoplay=True)
102
 
103
+
104
+ # Définition du prompt système initial
105
+ SYSTEM_PROMPT = f"{lire_fichier('linguascribe.prompt')}"
106
+
107
+
108
  def main():
109
+ st.title("------- DEMORRHA -------")
110
 
111
+ # Initialisation des variables d'état de la session
112
+ if "language_detected" not in st.session_state:
113
+ st.session_state["language_detected"] = None
114
+
115
  # Initialisation de l'historique des messages avec le prompt système
116
  if "messages" not in st.session_state:
117
  st.session_state.messages = [
 
136
 
137
  if len(audio) > 0:
138
  # st.audio(audio.export().read(), autoplay=False)
139
+ transcription = transcribe_audio(audio, language=st.session_state.language_detected)
140
+ if None == st.session_state.language_detected:
141
+ st.session_state.language_detected = language_detection(input_text=transcription, temperature=0.01)
142
+ st.write(f"Language Detected: {st.session_state.language_detected}")
143
  st.write(f"Transcription : {transcription}")
144
  process_message(transcription, operation_prompt=f"{OP_PROMPT}", is_audio_input=True)
145
 
146
+ with st.sidebar:
147
+ st.header("DEMORRHA - v1")
148
+ st.markdown("## À propos")
149
+ st.info("\n".join([
150
+ "Cette application utilise Streamlit et l'API de OpenAI pour créer un chat interactif avec des modèles de langages avancé dans le but de fournir un outil permettant la communication entre les etres humains.",
151
+ "Cet outil a pour objectif de montrer la voie dans un acte saint de la volontee de son auteur: ",
152
+ "Abattre les barrieres linguistiques entre les hommes."
153
+ ]))
154
 
155
  if __name__ == "__main__":
156
  main()
requirements.txt CHANGED
@@ -1,4 +1,5 @@
1
  streamlit
2
  streamlit-audiorecorder
3
  streamlit-autorefresh
4
- openai
 
 
1
  streamlit
2
  streamlit-audiorecorder
3
  streamlit-autorefresh
4
+ replicate
5
+ openai