I have the following code to convert a set of .wma files to a correspnding .wav file.
import os
from pydub import AudioSegment
# Define the directory containing the audio files
directory = r"C:\Users\test\MFG\audio_files/"
# Iterate through the folder and convert all .wma and .wav files to .mp3
for file in os.listdir(directory):
if file.endswith(".wma"):
wma_audio = AudioSegment.from_file(os.path.join(directory, file), format="asf")
wma_audio.export(os.path.join(directory, file.replace(".wma", ".wav")), format="wav")
print("Converted " + file + " to wav")
Getting error that is triggered from this line
wma_audio = AudioSegment.from_file(os.path.join(directory, file), format="asf")
error:
FileNotFoundError Traceback (most recent call last)
Cell In[1], line 11
9 for file in os.listdir(directory):
10 if file.endswith(".wma"):
---> 11 wma_audio = AudioSegment.from_file(os.path.join(directory, file), format="asf")
12 wma_audio.export(os.path.join(directory, file.replace(".wma", ".wav")), format="wav")
13 print("Converted " + file + " to wav")
File C:\Users\test\MFG\myenv\Lib\site-packages\pydub\audio_segment.py:728, in AudioSegment.from_file(cls, file, format, codec, parameters, start_second, duration, **kwargs)
726 info = None
727 else:
--> 728 info = mediainfo_json(orig_file, read_ahead_limit=read_ahead_limit)
729 if info:
730 audio_streams = [x for x in info['streams']
731 if x['codec_type'] == 'audio']
File C:\Users\test\MFG\myenv\Lib\site-packages\pydub\utils.py:274, in mediainfo_json(filepath, read_ahead_limit)
271 file.close()
273 command = [prober, '-of', 'json'] + command_args
--> 274 res = Popen(command, stdin=stdin_parameter, stdout=PIPE, stderr=PIPE)
275 output, stderr = res.communicate(input=stdin_data)
276 output = output.decode("utf-8", 'ignore')
File C:\Python312\Lib\subprocess.py:1026, in Popen.__init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, user, group, extra_groups, encoding, errors, text, umask, pipesize, process_group)
1022 if self.text_mode:
1023 self.stderr = io.TextIOWrapper(self.stderr,
1024 encoding=encoding, errors=errors)
-> 1026 self._execute_child(args, executable, preexec_fn, close_fds,
1027 pass_fds, cwd, env,
1028 startupinfo, creationflags, shell,
1029 p2cread, p2cwrite,
1030 c2pread, c2pwrite,
1031 errread, errwrite,
1032 restore_signals,
1033 gid, gids, uid, umask,
1034 start_new_session, process_group)
1035 except:
1036 # Cleanup if the child failed starting.
1037 for f in filter(None, (self.stdin, self.stdout, self.stderr)):
File C:\Python312\Lib\subprocess.py:1538, in Popen._execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, unused_restore_signals, unused_gid, unused_gids, unused_uid, unused_umask, unused_start_new_session, unused_process_group)
1536 # Start the process
1537 try:
-> 1538 hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
1539 # no special security
1540 None, None,
1541 int(not close_fds),
1542 creationflags,
1543 env,
1544 cwd,
1545 startupinfo)
1546 finally:
1547 # Child is launched. Close the parent's copy of those pipe
1548 # handles that only the child should have open. You need
(...)
1551 # pipe will not close when the child process exits and the
1552 # ReadFile will hang.
1553 self._close_pipe_fds(p2cread, p2cwrite,
1554 c2pread, c2pwrite,
1555 errread, errwrite)
FileNotFoundError: [WinError 2] The system cannot find the file specified
Modify Your Code:
import os
from pydub import AudioSegment
# Define the directory containing the audio files
directory = r"C:\Users\test\MFG\audio_files/"
# Iterate through the folder and convert all .wma and .wav files to .mp3
for file in os.listdir(directory):
filepath = os.path.join(directory, file)
if file.endswith(".wma"):
wma_audio = AudioSegment.from_file(filepath, format="asf")
wma_audio.export(filepath.replace(".wma", ".mp3"), format="mp3")
print(f"Converted {file} to mp3")
elif file.endswith(".wav"):
wav_audio = AudioSegment.from_file(filepath, format="wav")
wav_audio.export(filepath.replace(".wav", ".mp3"), format="mp3")
print(f"Converted {file} to mp3")
# if the file is already a .mp3, ignore it
elif file.endswith(".mp3"):
continue