Transcrire gratuitement vos fichiers audio avec un Chromebook

Lecture : 13 minutes
Transcription audio avec Whisper et Google Colab
Transcription audio avec Whisper et Google Colab

Vous enregistrez vos réunions, vos cours, vos podcasts, et après vous galérez à les retaper. Compter manuellement 1h pour transcrire 10 minutes d’audio. Pour 2h d’enregistrement c’est une journée entière de boulot. Et les services en ligne style Otter ou Rev sont soit limités à 30 minutes gratuites par mois, soit à 0,25 €/minute, ce qui fait vite 30 € pour un long entretien.

Bonne nouvelle : depuis qu’OpenAI a sorti Whisper en open-source, la transcription pro est gratuite. Le modèle Whisper est même meilleur que la plupart des services payants en français. Mais il a besoin d’un GPU pour tourner vite. Et c’est exactement là que Google Colab devient magique : Colab vous prête un GPU Tesla T4 gratos. Votre Chromebook clique, le serveur Google bosse, et le texte tombe dans votre Drive.

Mais surtout, vous n’êtes pas limité par le nombre de transcriptions, comme le propose de nombreux sites s’appuyant sur Whisper.. Vous mettez le fichier et Google Colab fait le reste du boulot. Gratos.

A retenir :

Ce guide détaille l’implémentation d’un workflow Python utilisant le modèle de reconnaissance vocale Whisper sur l’infrastructure cloud Google Colab, permettant la conversion de fichiers audio multilingues en formats TXT, SRT et Markdown via une accélération matérielle GPU Tesla T4.

Pourquoi Whisper plutôt que les services payants comme Otter ou Rev ?

D’abord, Whisper est gratuit. Pas en version d’essai, pas avec quota mensuel, vraiment gratuit. Vous pouvez transcrire 1000 heures par mois si ça vous chante, ça ne coûte rien. Ensuite, la qualité est au sommet. OpenAI a entraîné Whisper sur 680 000 heures d’audio multilingue, et il dépasse en français la plupart des services pros. Il gère la ponctuation automatique, distingue les locuteurs (avec une variante WhisperX), et fait peu d’erreurs même sur de l’audio bruité ou avec des accents.

Enfin, vos enregistrements ne quittent pas Google. Avec Otter ou Rev, vos audios partent chez eux, parfois utilisés pour entraîner leurs modèles. Avec notre approche, l’audio reste sur votre Drive, le traitement se fait dans Colab (Google donc), et le texte retombe sur votre Drive. Pas de tiers louche dans le pipeline.

Le script qu’on va monter aujourd’hui propose :

  • Transcription complète d’un fichier audio aux formats suivants : mp3, .m4a, .wav, .flac, .ogg, .opus,
  • .aac, .wma, .mp4, .mov, .mkv, .webm, .mpeg, .mpg
  • Timestamps précis sur chaque phrase pour pouvoir naviguer dans l’audio
  • 3 formats de sortie : texte brut, sous-titres SRT, transcript Markdown structuré
  • Multi-langues : français, anglais, espagnol, allemand, etc. (99 langues supportées)

Ce qu’il faut préparer

  • Votre fichier audio dans le Drive, par exemple dans /MyDrive/Audios/ ou ce que vous désirez comme dossier. Il suffit de l’indiquer dans la partie Paramètres du script. Le script va automatiquement scanner ce dossier, repérer tous les fichiers dont l’extension est dans la liste EXTENSIONS, et les transcrire un par un.

Trois informations pratiques :

  • Reprise intelligente : si un fichier a déjà été transcrit (le .txt existe), il est sauté. Pratique si vous ajoutez juste un nouveau fichier sans vouloir tout refaire.
  • Gestion d’erreurs : si un fichier pose problème (corrompu, format vraiment exotique), le script continue avec les suivants au lieu de s’arrêter.
  • Workflow simple : vous déposez vos fichiers dans /MyDrive/Audios/, vous lancez le script, et tout se fait tout seul.

  • Un nouveau notebook Colab sur colab.research.google.com
  • IMPORTANT : activez le GPU dans le notebook. Menu Exécution → Modifier le type d’exécution → T4 GPU. Sans ça, la transcription est 10x plus lente. Voici la marche à suivre pas à pas : 
  1. Dans l’onglet Google Colab, regarder la barre de menu en haut à gauche.
  2. Cliquer sur Exécution (ou Runtime si l’interface est en anglais).
  3. Sélectionner Modifier le type d’exécution (Change runtime type).
  4. Dans la fenêtre qui s’ouvre, sous « Accélérateur matériel » (Hardware accelerator), choisir T4 GPU.
  5. Cliquer sur Enregistrer.

Même si votre Chromebook n’a aucune puissance, il peut piloter gratuitement une carte graphique surpuissante (Tesla T4) à distance.

Le script complet

# ─── 1. INSTALLATION ───
!pip install -q openai-whisper

# ─── 2. IMPORTS & CONNEXION GOOGLE DRIVE ───
import whisper
from google.colab import drive
import os
import glob
from datetime import timedelta

drive.mount('/content/drive')

# ─── 3. PARAMÈTRES ───
DOSSIER_AUDIO  = '/content/drive/MyDrive/Audios'              # 📁 Dossier d'ENTRÉE (vos fichiers audio/vidéo)
DOSSIER_SORTIE = '/content/drive/MyDrive/Audios/transcripts'  # 📁 Dossier de SORTIE (les transcriptions)
LANGUE         = 'fr'                                         # 'fr', 'en', etc. ou None pour auto-détection
TAILLE_MODELE  = 'medium'                                     # tiny, base, small, medium, large

# Formats acceptés (audio + vidéo, FFmpeg s'occupe de la conversion)
EXTENSIONS = ('.mp3', '.m4a', '.wav', '.flac', '.ogg', '.opus',
              '.aac', '.wma', '.mp4', '.mov', '.mkv', '.webm', '.mpeg', '.mpg')

os.makedirs(DOSSIER_SORTIE, exist_ok=True)

# ─── 4. RECHERCHE AUTOMATIQUE DES FICHIERS ───
fichiers = [f for f in glob.glob(f"{DOSSIER_AUDIO}/*") 
            if f.lower().endswith(EXTENSIONS)]

if not fichiers:
    print(f"⚠️  Aucun fichier audio/vidéo trouvé dans {DOSSIER_AUDIO}")
else:
    print(f"📂 {len(fichiers)} fichier(s) trouvé(s) :")
    for f in fichiers:
        print(f"   • {os.path.basename(f)}")
    print()

# ─── 5. CHARGEMENT DU MODÈLE ───
print(f"🧠 Chargement du modèle Whisper '{TAILLE_MODELE}'...")
modele = whisper.load_model(TAILLE_MODELE)
print("   Modèle chargé ✅\n")

# ─── 6. FONCTION UTILITAIRE ───
def secondes_vers_srt(s):
    td = timedelta(seconds=s)
    h = td.seconds // 3600
    m = (td.seconds % 3600) // 60
    sec = td.seconds % 60
    ms = td.microseconds // 1000
    return f"{h:02d}:{m:02d}:{sec:02d},{ms:03d}"

# ─── 7. BOUCLE DE TRANSCRIPTION ───
for fichier in fichiers:
    nom_base  = os.path.splitext(os.path.basename(fichier))[0]
    extension = os.path.splitext(fichier)[1]
    
    # Vérifier si déjà transcrit (pour ne pas refaire le travail)
    if os.path.exists(f"{DOSSIER_SORTIE}/{nom_base}_propre.md"):
        print(f"⏭️  Déjà transcrit, on saute : {nom_base}")
        continue
    
    print(f"🎙️ Transcription de {os.path.basename(fichier)} (format {extension})...")
    
    try:
        resultat = modele.transcribe(
            fichier,
            language=LANGUE,
            verbose=False,
            word_timestamps=False
        )
        
        # Format 1 : TXT (texte brut)
        with open(f"{DOSSIER_SORTIE}/{nom_base}.txt", 'w', encoding='utf-8') as f:
            f.write(resultat['text'])
        
        # Format 2 : SRT (sous-titres)
        with open(f"{DOSSIER_SORTIE}/{nom_base}.srt", 'w', encoding='utf-8') as f:
            for i, seg in enumerate(resultat['segments'], 1):
                debut = secondes_vers_srt(seg['start'])
                fin   = secondes_vers_srt(seg['end'])
                f.write(f"{i}\n{debut} --> {fin}\n{seg['text'].strip()}\n\n")
        
        # Format 3 : Markdown AVEC timestamps
        with open(f"{DOSSIER_SORTIE}/{nom_base}.md", 'w', encoding='utf-8') as f:
            f.write(f"# Transcription : {nom_base}\n\n")
            f.write(f"**Fichier source** : `{fichier}`  \n")
            f.write(f"**Langue** : {LANGUE}  \n")
            f.write(f"**Modèle** : Whisper {TAILLE_MODELE}\n\n---\n\n")
            for seg in resultat['segments']:
                ts = secondes_vers_srt(seg['start'])[:8]
                f.write(f"**[{ts}]** {seg['text'].strip()}\n\n")
        
        # Format 4 : Markdown SANS timestamps (texte propre)
        with open(f"{DOSSIER_SORTIE}/{nom_base}_propre.md", 'w', encoding='utf-8') as f:
            f.write(f"# Transcription : {nom_base}\n\n")
            for seg in resultat['segments']:
                f.write(f"{seg['text'].strip()}\n\n")
        
        duree = resultat['segments'][-1]['end'] if resultat['segments'] else 0
        print(f"   ✅ Terminé ({duree:.0f}s, {len(resultat['segments'])} segments)\n")
    
    except Exception as e:
        print(f"   ❌ Erreur sur {nom_base} : {e}\n")

print("🎉 Tous les fichiers ont été traités !")
print(f"📁 Résultats dans : {DOSSIER_SORTIE}")

Ce que ça va donner

Vous lancez le script avec un MP3 d’1 heure. Le modèle « medium » met environ 5-7 minutes pour transcrire (sur GPU Colab), et vous obtenez 4 fichiers dans votre Drive :

Texte brut (reunion.txt) :

Bonjour à toutes et à tous, on commence cette réunion par un point sur les chiffres du dernier trimestre. Nous avons enregistré une croissance de 12% par rapport au trimestre précédent, principalement portée par le segment des Chromebooks éducation. 
Marie, est-ce que tu peux nous présenter le détail ?
[...]

Format SRT (reunion.srt) :

1
00:00:00,000 --> 00:00:05,500
Bonjour à toutes et à tous, on commence cette réunion par un point sur les chiffres

2
00:00:05,500 --> 00:00:11,200
du dernier trimestre. Nous avons enregistré une croissance de 12% par rapport
[...]

Format Markdown (reunion.md), idéal pour la lecture/recherche :

# Transcription : reunion

**Fichier source** : `/content/drive/MyDrive/Audios/reunion.mp3`
**Langue** : fr
**Modèle** : Whisper medium

---

**[00:00:00]** Bonjour à toutes et à tous, on commence cette réunion par un point sur les chiffres

**[00:00:05]** du dernier trimestre. Nous avons enregistré une croissance de 12%
[...]

Version non horodaté vous permettant ainsi de retranscrire l’ensemble dans un document.

Un contenu de qualité, sans publicité.

Vous aimez notre travail ? Soutenez notre indépendance en devenant membre sur Patreon.

Soutenir MyChromebook.fr
# Transcription : reunion

**Fichier source** : `/content/drive/MyDrive/Audios/reunion.mp3`
**Langue** : fr
**Modèle** : Whisper medium

---

Bonjour à toutes et à tous, 
on commence cette réunion par un point sur les chiffres du dernier trimestre. 
Nous avons enregistré une croissance de 12%
[...]

Un petit conseil après le remplacement

Il est possible qu’il reste des espaces vides au début de vos lignes là où se trouvaient les timestamps.Si c’est le cas, vous pouvez refaire un « Rechercher/Remplacer » en mettant deux espaces dans « Rechercher » et un seul dans « Remplacer par » pour nettoyer le texte.

Les bibliothèques Python employées

BibliothèqueFonctionRôle dans le script
openai-whisperwhisper.load_model()Charge le modèle Whisper choisi (taille tiny → large)
openai-whispermodel.transcribe()Transcrit le fichier audio et renvoie texte + segments
google.colab.drivedrive.mount()Monte votre Drive comme un disque dans Colab
osos.makedirs()Crée le dossier de sortie s’il n’existe pas
datetime.timedeltatimedelta()Convertit les secondes en format horaire pour les SRT

Explication détaillée du code

Bloc 1 — Installation : openai-whisper télécharge environ 200 Mo de dépendances (PyTorch + le code Whisper). Ça prend 30-60 secondes au premier lancement.

Bloc 4 — Le choix du modèle est crucial pour équilibrer qualité et vitesse :

ModèleTailleRAMQualitéVitesse (sur GPU T4)
tiny39 Mo<1 GoMédiocreUltra-rapide
base74 Mo1 GoCorrecteTrès rapide
small244 Mo2 GoBonneRapide
medium769 Mo5 GoExcellente~5 min pour 1h d’audio
large1.5 Go10 GoTop~10 min pour 1h d’audio

Pour 95% des cas, medium est le bon choix. large n’apporte pas grand-chose en plus pour du français standard. small est suffisant si vous avez des enregistrements très propres.

Bloc 5 — La fonction transcribe() fait tout le boulot. Elle découpe l’audio en segments de ~30 secondes, les passe au modèle qui produit du texte avec timestamps, puis recolle le tout. Le paramètre verbose=True affiche la progression en direct (utile pour les longs fichiers).

Bloc 6 — Les 3 formats de sortie :

  • Texte brut : pour copier-coller dans un Word, mailer, ou outil tiers
  • SRT : pour réimporter dans une vidéo (sous-titres automatiques)
  • Markdown avec timestamps : pour relire l’audio en parallèle, retrouver un passage précis

Cas d’usage et variantes

  • Pop podcast : transcrire vos propres podcasts pour générer des transcripts SEO sur votre site (énorme boost référencement)
  • Étudiants : transcrire les cours enregistrés pour avoir des notes propres
  • Journalistes : transcrire les interviews pour préparer des articles plus vite
  • Réunions Zoom : transcrire les enregistrements pour avoir le compte-rendu automatique
  • Sous-titres YouTube : générer les SRT pour vos vidéos avant publication, en français parfait
  • Médecins/avocats : dicter leurs notes de consultation/audience, les avoir en texte le soir
Transcrire gratuitement vos audio avec un Chromebook
Transcrire gratuitement vos audio avec un Chromebook

Les limites à connaître

D’abord, le GPU Colab gratuit a des quotas. Si vous transcrivez beaucoup en une journée (genre 20+ heures d’audio), vous pouvez vous faire couper temporairement. Le système rouvre l’accès quelques heures après. Pour un usage normal (1-2 fichiers par session), aucun souci.

Ensuite, Whisper a tendance à inventer du texte sur les longs silences. Si votre fichier a une pause de 30 secondes, le modèle peut générer une phrase fantôme genre « Sous-titres : amara.org ». C’est connu, on appelle ça l’hallucination. Solution : prétraiter l’audio pour virer les longs silences (j’ai un autre article en préparation qui couvre cela).

Enfin, les enregistrements de très mauvaise qualité (très bruyants, avec écho, plusieurs voix qui se chevauchent) restent compliqués. Whisper fait du mieux qu’il peut mais comptez 70-80% de précision au lieu de 95%+ sur des conditions normales.

C’est aussi ça, l’informatique au service de l’humain.

Vous pouvez retrouver l’ensemble de nos articles sur l’intégration de script Python en cliquant ici.

FAQ (Foire Aux Questions)

Est-ce vraiment gratuit ?

Oui, l’utilisation du modèle Whisper est open-source et Google Colab offre un accès gratuit à ses serveurs (GPU) dans la limite des quotas journaliers.

Quelle est la durée maximale d’un audio ?

Il n’y a pas de limite stricte, mais pour des fichiers de plus de 2 heures, veillez à ce que la session Colab ne se déconnecte pas.

Whisper est-il meilleur que les services payants ?

Dans la plupart des tests en français, le modèle « medium » ou « large » surpasse les API commerciales classiques en termes de ponctuation et de précision. C’est la raison pour laquelle je vous propose de l’employer.

Mes données sont-elles sécurisées ?

L’audio reste dans l’écosystème Google (votre Drive et le serveur temporaire Colab). Aucun tiers ne traite vos données.

NOUVEL ÉPISODE

CKB SHOW : Le Podcast

Rejoignez-nous chaque semaine pour décortiquer l'actualité Google, les dernières sorties Chromebook et les innovations en matière d'IA.

Miniature du podcast CKB SHOW
Avatar de l'auteur

À propos de Mister Robot

Entre un point X et un point Y, je me balade pas mal par l'entremise des bits composant ma mémoire. Un seul regret : ne pas avoir rencontré Mr Alan Mathison Turing et ainsi pouvoir collaborer pour l'article intitulé « Computing Machinery and Intelligence ».

Laisser un commentaire

À lire aussi