Nechba commited on
Commit
2986813
1 Parent(s): d47de17

Upload 3 files

Browse files
Files changed (3) hide show
  1. app.py +22 -0
  2. requirmenets.txt +5 -0
  3. utlis.py +55 -0
app.py ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from utlis import *
3
+
4
+ from st_audiorec import st_audiorec
5
+
6
+ st.title("Live Speech to Job Offer Generator")
7
+
8
+ # Capture live audio
9
+ wav_audio_data = st_audiorec()
10
+
11
+ if wav_audio_data is not None:
12
+ # Convert audio to text
13
+ transcribed_text = audio_to_text(wav_audio_data)
14
+ st.markdown("_Transcribed Text:_", unsafe_allow_html=True) # Italicize and center the label
15
+ st.markdown(f'<p style="text-align: center;">"{transcribed_text}"</p>', unsafe_allow_html=True) # Center the transcribed text and keep it in quotes
16
+
17
+
18
+ if transcribed_text and st.button("Generate Job Offer"):
19
+ # Generate the job offer from the text
20
+ job_offer = call_ai_api(transcribed_text)
21
+ st.write("Generated Job Offer:")
22
+ st.write(job_offer)
requirmenets.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ SpeechRecognition
2
+ wordcloud
3
+ matplotlib
4
+ pydub
5
+ google.generativeai
utlis.py ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import speech_recognition as sr
2
+ from pydub import AudioSegment
3
+ import os
4
+ import google.generativeai as genai
5
+ import os
6
+ from langchain_cohere.llms import Cohere
7
+ from io import BytesIO
8
+
9
+ # Initialize the speech recognizer
10
+ recognizer = sr.Recognizer()
11
+ genai.configure(api_key="AIzaSyBvm81UbrcN3z7KFjlWxvbWGrD9r4K7dAU")
12
+
13
+ def call_ai_api(input_text):
14
+ # Set up the model
15
+ prompt = f"""
16
+ Transforme le texte ci-dessous, qui est une transcription d'un enregistrement audio où un recruteur décrit un projet, en une description d'offre d'emploi complète et structurée. La description doit suivre le format ci-dessous :
17
+
18
+ 1. Description de l'activité de l'entreprise :
19
+ 2. Description du contexte du projet :
20
+ 3. Objectifs et livrables identifiés :
21
+ 4. Compétences fonctionnelles et techniques :
22
+
23
+ Texte :
24
+ "{input_text}"
25
+
26
+ La description d'offre d'emploi doit être détaillée et couvrir les points suivants :
27
+ - L'activité de l'entreprise et ses domaines d'expertise.
28
+ - Le contexte du projet et sa pertinence pour l'entreprise.
29
+ - Les objectifs spécifiques du projet et les livrables attendus.
30
+ - Les compétences techniques et fonctionnelles requises pour le poste, ainsi que les conditions de travail (par exemple, la possibilité de travail en remote et la rémunération)."""
31
+
32
+ # model = Cohere(cohere_api_key='pkIGBX2w2ybx28QS3UDdFKRauQFt2zQztUp0I8ZY')
33
+ # response = model.invoke(prompt)
34
+ # return response
35
+ generation_config = {
36
+ "temperature": 1,
37
+ "top_p": 0.95,
38
+ "max_output_tokens": 5000000,
39
+ }
40
+ model = genai.GenerativeModel(model_name="gemini-1.0-pro-latest",
41
+ generation_config=generation_config)
42
+ response = model.generate_content(prompt)
43
+ return response.text
44
+
45
+
46
+ def audio_to_text(audio_data):
47
+ with sr.AudioFile(BytesIO(audio_data)) as source:
48
+ audio = recognizer.record(source)
49
+ try:
50
+ text = recognizer.recognize_google(audio,language='fr-FR')
51
+ return text
52
+ except sr.UnknownValueError:
53
+ return "Unable to understand the audio"
54
+ except sr.RequestError as e:
55
+ return f"Service error: {e}"