尝试遍历目录中的 .wav 文件 (Python)
Trying to iterate through .wav files in a directory (Python)
我正在尝试遍历包含 wav 文件列表的目录,如下所示:
我的目标是遍历每个 wav 文件并将其添加到名为 transcript.wav 的 wav 文件中,该文件位于其父目录中。
例如,我希望得到的输出是,对于每个块,都有一个相应的 "new_audio" 文件,其中包含正确的编号。所以 "chunk0.wav" 变成 "new_audio0.wav", "chunk1.wav" 变成 "new_audio1.wav"等等。
这是我的代码:
import os
from pydub import AudioSegment
directory = "C:/Users/Nahuel/Workfiles/audio_chunks"
for file in sorted(os.listdir(directory)):
filename = os.fsdecode(file)
if filename.endswith(".wav"):
p1 = AudioSegment.from_wav(filename)
p2 = AudioSegment.from_wav("C:/Users/Nahuel/Workfiles/transcript.wav")
newAudio = p1 + p2
newAudio.export('new_audio.wav', format="wav")
continue
else:
continue
这是我得到的错误。它说找不到文件 'chunk0.wav'。但它在目录中,所以我摸不着头脑。
如有任何帮助,我们将不胜感激。感谢您的帮助。
看来你只是 运行 你的代码不在 wav 目录中。 listdir
只是return文件名,不是整个路径,需要和目录一起加入
p1 = AudioSegment.from_wav(os.path.join(directory, filename))
您可能需要为 filename
使用绝对路径,具体取决于 Python 程序的存储位置。你应该使用:
filename = os.path.join(directory, file)
而不是:
filename = os.fsdecode(file)
旁注,检查 for 循环中的缩进。
您可以使用 glob
包和 os.path.join()
来提供帮助。此代码也删除了对 .wav
文件的一些检查,因为您可以使用 glob.glob()
函数显式搜索这些文件。
import os
import glob
from pydub import AudioSegment
directory = os.path.join('c:/', 'Users', 'Nahuel', 'Workfiles')
for file in sorted(glob.glob(os.path.join(directory, 'audio_chunks', '*.wav'))):
p1 = AudioSegment.from_wav(file)
p2 = AudioSegment.from_wav(os.path.join(directory, 'transcript.wav')
newAudio = p1 + p2
newAudio.export('new_audio.wav', format="wav")
我正在尝试遍历包含 wav 文件列表的目录,如下所示:
我的目标是遍历每个 wav 文件并将其添加到名为 transcript.wav 的 wav 文件中,该文件位于其父目录中。
例如,我希望得到的输出是,对于每个块,都有一个相应的 "new_audio" 文件,其中包含正确的编号。所以 "chunk0.wav" 变成 "new_audio0.wav", "chunk1.wav" 变成 "new_audio1.wav"等等。
这是我的代码:
import os
from pydub import AudioSegment
directory = "C:/Users/Nahuel/Workfiles/audio_chunks"
for file in sorted(os.listdir(directory)):
filename = os.fsdecode(file)
if filename.endswith(".wav"):
p1 = AudioSegment.from_wav(filename)
p2 = AudioSegment.from_wav("C:/Users/Nahuel/Workfiles/transcript.wav")
newAudio = p1 + p2
newAudio.export('new_audio.wav', format="wav")
continue
else:
continue
这是我得到的错误。它说找不到文件 'chunk0.wav'。但它在目录中,所以我摸不着头脑。
如有任何帮助,我们将不胜感激。感谢您的帮助。
看来你只是 运行 你的代码不在 wav 目录中。 listdir
只是return文件名,不是整个路径,需要和目录一起加入
p1 = AudioSegment.from_wav(os.path.join(directory, filename))
您可能需要为 filename
使用绝对路径,具体取决于 Python 程序的存储位置。你应该使用:
filename = os.path.join(directory, file)
而不是:
filename = os.fsdecode(file)
旁注,检查 for 循环中的缩进。
您可以使用 glob
包和 os.path.join()
来提供帮助。此代码也删除了对 .wav
文件的一些检查,因为您可以使用 glob.glob()
函数显式搜索这些文件。
import os
import glob
from pydub import AudioSegment
directory = os.path.join('c:/', 'Users', 'Nahuel', 'Workfiles')
for file in sorted(glob.glob(os.path.join(directory, 'audio_chunks', '*.wav'))):
p1 = AudioSegment.from_wav(file)
p2 = AudioSegment.from_wav(os.path.join(directory, 'transcript.wav')
newAudio = p1 + p2
newAudio.export('new_audio.wav', format="wav")