transcribe/transcribe.ipynb

201 lines
22 KiB
Plaintext
Raw Permalink Normal View History

2023-11-23 21:25:07 +00:00
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"id": "bc566fe1-26f3-4e4f-9c62-ef5e480e0055",
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"from openai import OpenAI"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b1f11cc6-4daa-4563-8dc0-fcb763b3c44f",
"metadata": {},
"outputs": [],
"source": [
"client = OpenAI()\n",
"client.api_key = os.getenv('OPENAI_API_KEY')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "87169d33-5a39-4270-91d7-50353b888a80",
"metadata": {},
"outputs": [],
"source": [
"def transcrire_audio(fichier_audio):\n",
" reponse = client.audio.transcriptions.create(\n",
" model=\"whisper-1\",\n",
" file=open(fichier_audio, \"rb\"),\n",
" language=\"fr\"\n",
" )\n",
" return reponse.text"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "89eb827d-abb9-4b46-92be-f26c02e3ba4c",
"metadata": {},
"outputs": [],
"source": [
"def resumer_texte(texte):\n",
" completion = client.chat.completions.create(\n",
" model=\"gpt-4\",\n",
" messages=[\n",
" {\"role\": \"system\", \"content\": \"Tu es un assistant personnel compétent, utile et pertinent.\"},\n",
" {\"role\": \"user\", \"content\": \"\"\"\n",
"Tu dois résumer un texte qui est une transcription d'un enregistrement audio d'une intervention faite à l'occasion d'une conférence.\n",
"\n",
"Tu dois d'abord proposer un court paragraphe de résumé du contexte global de l'intervention du conférencier.\n",
"Puis, tu dois proposer une synthèse de l'intervention sous forme d'une liste à puces.\n",
"La liste à puces doit être organisée sur au maximum 2 niveaux hiérarchiques.\n",
"Les entrées de la liste à puces doivent être très synthétiques, exprimées en quelques mots.\n",
"Il est très important que le résumé n'omette pas d'informations importantes.\n",
"Tu dois bien mettre en relief les données chiffrées mentionnés durant le discours. \n",
"\n",
"Le résultat doit être au format Markdown. La réponse doit contenir uniquement le code Markdown et rien d'autre.\n",
"Voici le modèle de réponse au format Markdown :\n",
"\n",
"# Un titre pour le résumé\n",
"## Contexte\n",
"Court paragraphe qui résume le contexte de l'intervention.\n",
"## Synthèse\n",
"- Premier point important\n",
" - Premier détail sur le premier point important.\n",
" - Second détail sur le premier point important.\n",
" - Etc. Etc.\n",
"- Second point important\n",
" - Premier détail sur le second point important.\n",
" - Etc. Etc.\n",
"- Etc. Etc.\n",
" -Etc. Etc.\n",
" - Etc. Etc.\n",
"\n",
"Voici le texte que tu dois résumer :\n",
"\n",
" \"\"\" + texte}\n",
" ]\n",
" )\n",
" return completion.choices[0].message.content"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "279849d5-56f8-4b59-906e-14992ac10c4a",
"metadata": {},
"outputs": [],
"source": [
"texte_transcrit = transcrire_audio('../transcribe_data/jardin_du_carrousel_2.m4a')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "382c92b9-1c28-4906-beff-1d9405b765ee",
"metadata": {},
"outputs": [],
"source": [
"texte_transcrit"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3c5df824-f3cc-4a51-b1ad-c52695fa475f",
"metadata": {},
"outputs": [],
"source": [
"texte_transcrit_2 = transcrire_audio('../transcribe_data/jardin_du_carrousel_1.m4a')"
]
},
{
"cell_type": "code",
2023-11-28 10:04:10 +00:00
"execution_count": 44,
2023-11-23 21:25:07 +00:00
"id": "8db68ab5-7351-4872-b5e7-0fe02c9760cb",
"metadata": {},
2023-11-28 10:04:10 +00:00
"outputs": [
{
"data": {
"text/plain": [
"\"Tant pis, je vous le fais avec les mains, la slide, si vous avez de la mémoire, il y avait « On est parti », « On a réalisé une partie de ce qu'on voulait faire il y a 6 ans », et puis quand on regarde les enjeux d'aujourd'hui, arrivent des nouveaux mots, des nouveaux challenges. C'est-à-dire qu'on ne change plus rien, et normalement vous avez ça. Donc Florent Manigault m'a dit « C'est bien, mais est-ce qu'on peut avoir une feuille de route pour notre comité exécutif, notre conseiller de surveillance qui décrivent un peu qu'est-ce qu'on cherche à faire ? » Dans la slide d'avant, vous l'avez vu très vite, il y a 20 de « Key Capabilities », et là on les a un peu ordonnés, alors ça bouge dans tous les sens, autour de trois piliers. Le premier, c'est le côté « Custom Centric », et c'est essentiel, on va parler de technologie après, mais ça commence par « Custom Centric », et sans rentrer en détail, on s'est dit « Est-ce qu'on est bon en techno de personnalisation, en parcours ? » Voilà, ce qui nous permet de passer du push produit au monde digital, dans lequel le market s'appelle « Conversations », c'est comment on a des conversations, est-ce qu'on sait personnaliser la relation ? Quelle est notre savinesse, notre savoir-faire en termes de technologie d'interaction, et l'arrivée de chat GPT et des LLM est un bon exemple, mais avant il y a eu l'époque métaverse, on est dans un monde où constamment on doit explorer des nouvelles façons d'interagir, et puis, ce qu'on appelle CFRL, « Customer Feedback Learning Loop », c'est-à-dire dans un monde digital, une expérience qui correspond au succès d'un produit, elle n'est jamais designée, elle est construite, elle évolue, elle est cultivée. La très jolie citation qu'il utilise, c'est « Join our design ». Et ça, ça se base sur une boucle continue. Donc ça, c'est notre premier ensemble de skills. On a beaucoup progressé depuis 2016. Je ne vais pas rentrer en détail, mais on s'est évolué. On sait qu'on a un long chemin devant nous. Le deuxième pavé, on va voir avec le LAG, c'est celui « Data-Driven AI », dont je vais plus parler dans la suite, évidemment, de l'exposer, autour des fondations, de ce qu'on a comme stratégie data et comme plateforme pour faire circuler nos datas. Notre utilisation, et ça correspond parfaitement au fil de l'introduction, de l'IA pour transformer Michelin et aller attaquer des nouveaux défis, des nouveaux challenges. Et puis, l'utilisation de l'IA pour bien comprendre le contexte dans lequel on est. Vous l'avez mis en « Marketing Data Intelligence », ça se ressemble avec « Personalization Engine », c'est le point de vue du client versus le point de vue de Michelin. C'est pour ça que c'est dans deux endroits différents. Et puis, on a un troisième aspect qui est fondamental. Et vous avez vu notre petit film, le promotionnel, qui nous sert de recrutement. C'est l'aspect « Software-Driven ». Parce que, comme l'a très bien dit Florian, le monde bouge très très vite et on ne peut pas, chez Michelin, dans la boîte ou une grosse boîte, faire tout tout seul. Donc, on doit absolument avoir une stratégie basée sur les écosystèmes du logiciel. S'appuyer sur des partenaires, comme DataIQ et plein d'autres. Des partenaires qui changent vite, eux aussi. Et donc, pour être capable d'avoir une stratégie logicielle efficace, il faut être très bon dans cette capacité à comprendre le monde du logiciel. C'est pour ça que, dans le petit film, vous avez vu son importance sur le « Software Craftmanship ». Le dernier aspect, c'est le petit « Workplace ». Mais on va plutôt parler un peu de data, maintenant. Alors, on a une stratégie, chez Michelin, qui est de devenir un « Data-Driven Company ». Que mes deux boss, Yves Chapeau et Florian Méliot, expriment souvent. Et c'est basé sur trois piliers de cette transformation « Data-Driven ». Le premier, c'est la plateforme technique. Et c'est une plateforme, en fait, c'est une fédération de plateformes distribuées. C'est gran
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
2023-11-23 21:25:07 +00:00
"source": [
"texte_transcrit_2"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3272e3b0-e758-4d0b-b4bd-01633d2aab20",
"metadata": {},
"outputs": [],
"source": [
"resume_texte_2 = resumer_texte(texte_transcrit_2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0287311f-9c68-4443-bed4-c7fcf2de2344",
"metadata": {},
"outputs": [],
"source": [
"print(resume_texte_2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c4a18f17-1bf6-48e1-a2d2-c850c2d8c266",
"metadata": {},
"outputs": [],
"source": [
"client.api_key"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "af604560-1798-4817-80c4-3be63ea7d8f6",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "TRANSCRIBE_ENV",
"language": "python",
"name": "transcribe_env"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.18"
}
},
"nbformat": 4,
"nbformat_minor": 5
}