web-dev-qa-db-fra.com

Python convertir mp3 en wav avec Pydub

Ok, maintenant je suis coincé dans la conversion de mp3 en wav. J'ai vu des réponses différentes mais je pense que j'opterais pour celle de pydub, ce que j'ai déjà fait en utilisant ces quelques lignes

from pydub import AudioSegment

AudioSegment.from_mp3("/input/file.mp3").export("/output/file.wav", format="wav")

mais quand j'exécute le code ci-dessus, j'obtiens l'erreur suivante

C:\Python27\lib\site-packages\pydub-0.14.2-py2.7.Egg\pydub\utils.py: 165: RuntimeWarning: impossible de trouver ffmpeg ou avconv - par défaut à ffmpeg, mais peut ne pas fonctionner

Traceback (dernier appel le plus récent): Fichier "C: /Users/phourlhar/Desktop/VoiceDetector/yeah.py", ligne 7, dans stereo_to_mono ()

Fichier "C:\Users\phourlhar\Desktop\VoiceDetector\utils.py", ligne 25, dans stereo_to_mono

sound = AudioSegment.from_mp3(PROJECT_DIR+'\\files\\rec'+str(c)+'.mp3')

Fichier "build\bdist.win32\Egg\pydub\audio_segment.py", ligne 346, dans from_file

Fichier "C:\Python27\lib\subprocess.py", ligne 711, dans init errread, errwrite)

Fichier "C:\Python27\lib\subprocess.py", ligne 948, dans _execute_child startupinfo)

WindowsError: [Erreur 2] Le système ne peut pas trouver le fichier spécifié

Je ne sais pas pourquoi cela soulève cette erreur car je suis très sûr que le fichier existe. Bien que j'ai des réponses suggérant l'installation de ffmpeg, mais je ne sais pas si cela affectera le déploiement de l'application de quelque manière que ce soit plus tard

17
phourxx

Le module pydub utilise les programmes ffmpeg ou avconf pour effectuer la conversion réelle. Vous devez donc installer ffmpeg pour que cela fonctionne.

Mais si vous n'avez pas besoin de pydub pour autre chose, vous pouvez simplement utiliser le module subprocess intégré pour appeler un programme de conversion comme ffmpeg comme ceci:

  import subprocess

  subprocess.call(['ffmpeg', '-i', '/input/file.mp3',
                   '/output/file.wav'])

Cela nécessite que le binaire ffmpeg soit dans un emplacement dans votre $ PATH, soit dit en passant.

Edit : Avec ffmeg, vous ne pouvez pas convertir stéréo en mono, pour autant que je sache. Vous pouvez uniquement choisir le canal gauche ou droit. Je suppose que ce n'est pas ce que vous voulez.

Le programme sox can convertit la stéréo en mono:

  import subprocess

  subprocess.call(['sox', '/input/file.mp3', '-e', 'mu-law', 
                   '-r', '16k', '/output/file.wav', 'remix', '1,2'])

Cela échantillonnera à 16 kHz, avec 8 bits/échantillon, vous donnant 16 kb/s.

14
Roland Smith

Vous devez opter pour pydub, c'est un excellent module pour les opérations liées aux fichiers audio.

REMARQUE. N'oubliez pas d'installer ffmpeg avant d'utiliser pydub.

Pour obtenir de l'aide concernant l'installation de ffmpeg , vous pouvez utiliser ceci lien .

Ensuite, pour installer pydub, ouvrez simplement votre invite de commande et tapez

pip install pydub

Ensuite, pour convertir n'importe quel fichier mp3 en wav, utilisez simplement pydub comme

import pydub
sound = pydub.AudioSegment.from_mp3("D:/example/Apple.mp3")
sound.export("D:/example/Apple.wav", format="wav")
9
Abhishek Rathore