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
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.
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")