S'inscrire
section-icon

Forums

Parlez de tout ce que vous voulez!

  • Ce sujet contient 7 replies, 2 voix et a été mis à jour pour la dernière fois 1 an ago par
Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • Membres

      Bonjour,

      Je souhaite savoir si quelqu’un pourrait m’aider à créer un script Python pour extraire l’audio d’une vidéo, le transcrire dans une autre langue, puis réintégrer cet audio modifié dans la vidéo d’origine.

      Merci d’avance pour votre assistance !

      Admin

        Bonsoir,
        Voici les étapes après quelques recherches :

        1- Extraire l’audio de la vidéo : Utilise moviepy pour ça.
        2- Transcrire l’audio : Google Speech-to-Text peut faire l’affaire. Mais attention, il faut un compte Google Cloud.
        3- Traduire le texte : Google Translate API est une bonne option.
        4- Synthétiser l’audio traduit : Google Text-to-Speech, par exemple.
        5- Réintégrer l’audio dans la vidéo : Retourne sur moviepy.

        Voici un exemple de code :

        # On importe VideoFileClip depuis moviepy.editor
        # C'est la classe utilisée pour manipuler des vidéos
        from moviepy.editor import VideoFileClip
        
        # Cette fonction extrait l'audio d'une vidéo
        # Elle prend en paramètre le chemin de la vidéo et où sauvegarder l'audio
        def extraire_audio(video_path, audio_path):
            # Charge la vidéo depuis le chemin spécifié
            video = VideoFileClip(video_path)
        
            # Extrait la piste audio de cette vidéo
            audio = video.audio
        
            # Sauvegarde la piste audio dans le chemin spécifié
            # Le format du fichier (comme .wav ou .mp3) est déduit de l'extension du fichier
            audio.write_audiofile(audio_path)
        
        # Chemin vers le fichier vidéo source
        # Remplace cette chaîne par le chemin vers ta propre vidéo
        video_path = "chemin/vers/ta/video.mp4"
        
        # Chemin où l'audio extrait sera sauvegardé
        # Remplace cette chaîne par le chemin et le nom de fichier souhaités pour ton fichier audio
        audio_path = "chemin/vers/le/fichier/audio.wav"
        
        # Appelle la fonction avec les chemins définis
        extraire_audio(video_path, audio_path)
        
        

        Je reste disponible pour toutes questions !
        Bon courage.

        Membres

          Est-il possible de modifier ce script pour effectuer une traduction dans n’importe quelles langues, et d’effectuer cette opération sur un ensemble de vidéos dans un dossier.

          Pour cela il faudrait ajouter un input et une boucle fort avec un os.listdir()

          Par ailleurs, est-il possible plutôt d’utiliser pyttsx3 ou gTTS.

          Je pense que ce serait mieux.

          Merci pour votre réponse, en tout cas !

          PS : Est-il possible d’avoir l’intégralité du code source car je suis débutant en informatique et aimerais traduire des vidéos en lien avec la cybersécurité.

          Merci de votre compréhension !

          • Cette réponse a été modifiée 1 an ago par avatar-image an0n3c_ .
          Admin

            Alors là, c’est plus que de la bidouille !

            Je te laisse chercher un peu, c’est comme ça qu’on apprend.

            En tout cas, pyttsx3 ou gTTS sont de bonnes idées.

            En attendant, je regarde, mais je ne suis pas un expert.

            Admin

              Petite parenthèse, ton projet est sympa, mais je sais que Google, donc YouTube, travaille activement sur ce format avec leur IA.

              J’espère pour toi qu’ils ne sortiront pas cette fonctionnalité dans quelques mois !!!

              As-tu regardé sur GitHub s’il y avait des projets similaires ?

              Membres

                Oui, j’ai trouvé un modèle de deep learning permettant de détecter la langue de l’audio d’une vidéo, mais celui-ci demande énormément de ressource en RAM. (Utilisation de CUDA et de DLL)

                Le modèle se nomme faster-whisper, voici le GitHub : https://github.com/SYSTRAN/faster-whisper

                Par ailleurs, je viens de programmer un script.

                Est-il possible de me dire si celui-ci est fonctionnel ou les éventuelles améliorations ? :

                from moviepy.editor import VideoFileClip, AudioFileClip
                from gtts import gTTS
                from deep_translator import GoogleTranslator
                import os
                from typing import Tuple

                def extraire_audio(video_path: str, audio_path: str) -> None:
                try:
                with VideoFileClip(video_path) as video:
                audio = video.audio
                audio.write_audiofile(audio_path)
                except Exception as e:
                print(f”Erreur lors de l’extraction audio : {e}”)

                def transcrire_audio(audio_path: str, langue_cible: str) -> str:
                # Utiliser une alternative pour la transcription dans la langue cible si nécessaire
                pass

                def traduire_texte(texte: str, langue_source: str, langue_destination: str) -> Tuple[str, str]:
                translator = GoogleTranslator(source=langue_source, target=langue_destination)
                texte_traduit = translator.translate(texte)
                return texte, texte_traduit

                def synthetiser_audio(texte: str, chemin_sortie: str) -> None:
                try:
                tts = gTTS(text=texte, lang=’fr’)
                tts.save(chemin_sortie)
                except Exception as e:
                print(f”Erreur lors de la synthèse audio : {e}”)

                def supprimer_audio(audio_path: str) -> None:
                try:
                os.remove(audio_path)
                except Exception as e:
                print(f”Erreur lors de la suppression audio : {e}”)

                # Dossier de sortie (le bureau)
                output_folder = os.path.join(os.path.expanduser(“~”), “Desktop”)
                os.makedirs(output_folder, exist_ok=True)

                video_path = os.path.join(output_folder, “video.mp4”)
                audio_path = os.path.join(output_folder, “audio.wav”)
                extraire_audio(video_path, audio_path)

                # Demander la langue source
                langue_source = input(“Veuillez entrer la langue source (par exemple, ‘fr’ pour le français): “)
                # Demander la langue de traduction
                langue_cible = input(“Veuillez entrer la langue de traduction (par exemple, ‘en’ pour l’anglais): “)

                transcription_texte = transcrire_audio(audio_path, langue_cible)

                texte_source, texte_traduit = traduire_texte(transcription_texte, langue_source, langue_cible)
                chemin_audio_traduit = os.path.join(output_folder, “audio_traduit.mp3”)
                synthetiser_audio(texte_traduit, chemin_audio_traduit)

                # Réintégration de l’audio traduit dans la vidéo
                video_audio_traduit = VideoFileClip(video_path).set_audio(AudioFileClip(chemin_audio_traduit))

                # Sauvegarde de la vidéo avec traduction sur le bureau
                chemin_video_traduite = os.path.join(output_folder, “video_traduite.mp4”)
                video_audio_traduit.write_videofile(chemin_video_traduite, codec=’libx264′, audio_codec=’aac’)

                # Suppression de l’audio de transcription
                supprimer_audio(audio_path) `

                Admin

                  Après lecture, le code semble pas mal, mais :

                  – Tu pourrais améliorer la gestion des chemins des vidéos pour en traiter plusieurs dans un dossier, afin d’éviter un traitement trop long et d’économiser de la RAM !
                  – Pour le moment, le code ne gère que la langue française (fr). Il faudrait la remplacer par la variable “langue_cible”.

                  Membres

                    Est-ce que le script fonctionne parfaitement pour l’instant, sans erreurs ?

                    D’accord, je ferais ça !

                    Merci !

                  2

                  Voix

                  7

                  Réponses

                  Mots clés

                  Viewing 8 posts - 1 through 8 (of 8 total)
                  • Vous devez être connecté pour répondre à ce sujet.