【问题标题】:Trying to iterate through .wav files in a directory (Python)尝试遍历目录中的 .wav 文件(Python)
【发布时间】:2020-05-09 21:25:38
【问题描述】:

我正在尝试遍历包含 wav 文件列表的目录,如下所示:

我的目标是浏览每个 wav 文件并将其添加到位于其父目录内的名为 transcript.wav 的 wav 文件中。

例如,我希望得到的输出是,对于每个块,都有一个相应的具有正确编号的“new_audio”文件。所以 "chunk0.wav" 变成 "new_audio0.wav","chunk1.wav" 变成 "new_audio1.wav" em> 等等。

这是我的代码:

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”。但它在目录中,所以我只能摸不着头脑。

任何帮助将不胜感激。感谢您的帮助。

【问题讨论】:

    标签: python loops operating-system wav pydub


    【解决方案1】:

    看来您只是没有在 wav 目录中运行代码。 listdir只返回文件名,不是整个路径,需要跟目录一起加入

    p1 = AudioSegment.from_wav(os.path.join(directory, filename))
    

    【讨论】:

    【解决方案2】:

    您可能需要为您的filename 使用绝对路径,具体取决于您的 Python 程序的存储位置。你应该使用:

    filename = os.path.join(directory, file)
    

    代替:

    filename = os.fsdecode(file)
    

    旁注,检查 for 循环中的缩进。

    【讨论】:

      【解决方案3】:

      您可以使用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")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-29
        • 2010-12-16
        • 2017-05-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多