This commit is contained in:
Pierre-Edouard Portier 2023-11-28 11:04:10 +01:00
parent 51f33a9b6c
commit 3efe307ed3
5 changed files with 90 additions and 7 deletions

View File

@ -28,10 +28,11 @@ def resumer_texte(texte):
messages=[
{"role": "system", "content": "Tu es un assistant personnel compétent, utile et pertinent."},
{"role": "user", "content": """
Tu dois résumer un texte qui est une transcription d'un enregistrement audio d'une intervention faite à l'occasion d'une conférence.
Tu dois résumer un texte qui est une transcription d'un enregistrement audio.
Tu dois d'abord proposer un court paragraphe de résumé du contexte global de l'intervention du conférencier.
Puis, tu dois proposer une synthèse de l'intervention sous forme d'une liste à puces.
Tu dois d'abord proposer un titre court, en maximum trois mots, pour identifier cette intervention orale.
Puis, tu dois proposer un court paragraphe de résumé du contexte global de l'intervention.
Enfin, tu dois proposer une synthèse de l'intervention sous forme d'une liste à puces.
La liste à puces doit être organisée sur au maximum 2 niveaux hiérarchiques.
Les entrées de la liste à puces doivent être très synthétiques, exprimées en quelques mots.
Il est très important que le résumé n'omette pas d'informations importantes.
@ -40,7 +41,7 @@ Tu dois bien mettre en relief les données chiffrées mentionnés durant le disc
Le résultat doit être au format Markdown. La réponse doit contenir uniquement le code Markdown et rien d'autre.
Voici le modèle de réponse au format Markdown :
# Un titre pour le résumé
# Titre (maximum 3 mots)
## Contexte
Court paragraphe qui résume le contexte de l'intervention.
## Synthèse

View File

@ -11,10 +11,16 @@
<input type="file" id="audioFile" accept="audio/*" required>
<input type="submit" value="Transcrire et Résumer">
</form>
<!-- Ajout du menu déroulant pour les résumés sauvegardés -->
<select id="savedTasks">
<option value="">Sélectionnez un résumé sauvegardé</option>
<!-- Les options seront ajoutées ici par JavaScript -->
</select>
<button onclick="showSavedResume()">Afficher le Résumé</button>
<div id="result"></div>
<script>
document.getElementById('uploadForm').addEventListener('submit', function(e) {
document.getElementById('uploadForm').addEventListener('submit', function(e) {
e.preventDefault();
var formData = new FormData();
@ -34,6 +40,9 @@
});
function checkResult(taskId) {
// Afficher l'image de chargement
document.getElementById('result').innerHTML = '<img src="static/wait.png" alt="Chargement...">';
fetch(`/result/${taskId}`)
.then(response => response.json())
.then(data => {
@ -47,6 +56,43 @@ function checkResult(taskId) {
})
.catch(error => console.error('Erreur:', error));
}
// Au chargement de la page, récupérer la liste des tâches sauvegardées
window.onload = function() {
fetch('/tasks')
.then(response => response.json())
.then(taskIds => {
var select = document.getElementById('savedTasks');
taskIds.forEach(taskId => {
var option = document.createElement('option');
option.value = taskId;
option.text = taskId;
select.appendChild(option);
});
});
};
// Fonction pour afficher le résumé sauvegardé sélectionné
function showSavedResume() {
var taskId = document.getElementById('savedTasks').value;
if (taskId) {
fetch(`/resume/${taskId}`)
.then(response => response.json())
.then(data => {
if (data.resume) {
var converter = new showdown.Converter();
var html = converter.makeHtml(data.resume);
document.getElementById('result').innerHTML = html;
} else {
document.getElementById('result').innerHTML = 'Résumé non trouvé.';
}
})
.catch(error => {
console.error('Erreur:', error);
document.getElementById('result').innerHTML = 'Erreur lors de la récupération du résumé.';
});
}
}
</script>
</body>
</html>

BIN
static/wait.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

View File

@ -10,9 +10,18 @@ app = Flask(__name__)
tasks = {} # Dictionnaire pour stocker l'état des tâches
def handle_audio_processing(file_path, task_id):
task_folder = os.path.join('../transcribe_data/backup', task_id)
os.makedirs(task_folder, exist_ok=True)
try:
transcription = transcrire_audio(file_path)
with open(os.path.join(task_folder, 'transcription.txt'), 'w') as file:
file.write(transcription)
resume = resumer_texte(transcription)
with open(os.path.join(task_folder, 'resume.md'), 'w') as file:
file.write(resume)
tasks[task_id] = {'status': 'completed', 'result': resume}
except Exception as e:
tasks[task_id] = {'status': 'error', 'error': str(e)}
@ -55,6 +64,22 @@ def get_result(task_id):
else: # Erreur dans le traitement
return jsonify(error=task.get('error', 'Erreur inconnue')), 500
@app.route('/tasks', methods=['GET'])
def list_saved_tasks():
base_path = '../transcribe_data/backup'
task_ids = [d for d in os.listdir(base_path) if os.path.isdir(os.path.join(base_path, d))]
return jsonify(task_ids)
@app.route('/resume/<task_id>', methods=['GET'])
def get_saved_resume(task_id):
resume_path = os.path.join('../transcribe_data/backup', task_id, 'resume.md')
if os.path.exists(resume_path):
with open(resume_path, 'r') as file:
resume = file.read()
return jsonify(resume=resume)
else:
return jsonify(error="Résumé non trouvé"), 404
@app.route('/')
def index():
return app.send_static_file('index.html')

File diff suppressed because one or more lines are too long