transcribe/audio_summary.py

65 lines
2.2 KiB
Python

import os
from openai import OpenAI
client = OpenAI()
client.api_key = os.getenv('OPENAI_API_KEY')
def transcrire_audio(fichier_audio):
"""
Transcrit un fichier audio en texte.
:param fichier_audio: Chemin vers le fichier audio.
:return: Texte transcrit.
"""
reponse = client.audio.transcriptions.create(
model="whisper-1",
file=open(fichier_audio, "rb"),
language="fr"
)
return reponse.text
def resumer_texte(texte):
"""
Résume le texte donné.
:param texte: Texte à résumer.
:return: Texte résumé.
"""
completion = client.chat.completions.create(
model="gpt-4",
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.
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.
Tu dois bien mettre en relief les données chiffrées mentionnés durant le discours.
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 :
# Titre (maximum 3 mots)
## Contexte
Court paragraphe qui résume le contexte de l'intervention.
## Synthèse
- Premier point important
- Premier détail sur le premier point important.
- Second détail sur le premier point important.
- Etc. Etc.
- Second point important
- Premier détail sur le second point important.
- Etc. Etc.
- Etc. Etc.
-Etc. Etc.
- Etc. Etc.
Voici le texte que tu dois résumer :
""" + texte}
]
)
return completion.choices[0].message.content