Как я могу разделить аудиофайл на несколько аудиофайлов wav из папки

#python #audio #wav #pydub

#python #Аудио #wav #pydub

Вопрос:

У меня есть папка, в которой у меня около 2000 аудиофайлов в формате wav с разными временными интервалами, скажем, некоторые из них через 30 секунд, некоторые через 40, и я хочу разделить их все с помощью python, я пробовал pydub и разные библиотеки, и все они работают только для 1 файла, я хочу разделить их с помощьюцикл с простым кодом на python.

Пример кода:

 from pydub import AudioSegment 
from pydub.utils import make_chunks 

myaudio = AudioSegment.from_file("a0007.wav", "wav") 
chunk_length_ms = 8000 # pydub calculates in millisec 
chunks = make_chunks(myaudio,chunk_length_ms) #Make chunks of one sec 
for i, chunk in enumerate(chunks): 
    chunk_name = "{0}.wav".format(i) 
    print ("exporting", chunk_name) 
    chunk.export(chunk_name, format="wav") 
 

Приведенный выше код работает для одного файла, тогда как мне нужно, чтобы он извлекал файлы из папки и разделял их все

Комментарии:

1. Можете ли вы поделиться своей структурой папок и кодом, который вы пробовали?

2. из pydub импортируйте АудиоСегмент из pydub.утилиты импортируйте make_chunks myaudio = AudioSegment.from_file(«a0007.wav», «wav») chunk_length_ms = 8000 # pydub вычисляет в миллисекундах фрагменты = make_chunks(myaudio,chunk_length_ms) #Сделайте фрагменты по одной секунде для i, фрагмент в enumerate(фрагменты ): chunk_name =»{0}.wav».format(i) print («экспорт», имя_записи) chunk.export(имя_записи, формат =»wav») Приведенный выше код работает для одного файла, тогда как мне нужно, чтобы он извлекал файлы из папки и разделял их все

3. Пожалуйста, измените свой вопрос, чтобы добавить код. Это не читается в комментарии.

4. @Epsi95 это сделано

Ответ №1:

Вы должны получить все имена файлов в вашем каталоге, а затем выполнить итерацию для всех имен файлов.

Вы можете использовать os module для получения списка всех файлов в текущем каталоге.

 from pydub import AudioSegment 
from pydub.utils import make_chunks
import os

def process_sudio(file_name):
    myaudio = AudioSegment.from_file(file_name, "wav") 
    chunk_length_ms = 8000 # pydub calculates in millisec 
    chunks = make_chunks(myaudio,chunk_length_ms) #Make chunks of one sec 
    for i, chunk in enumerate(chunks): 
        chunk_name = './chunked/'   file_name   "_{0}.wav".format(i) 
        print ("exporting", chunk_name) 
        chunk.export(chunk_name, format="wav") 

all_file_names = os.listdir()
try:
    os.makedirs('chunked') # creating a folder named chunked
except:
    pass
for each_file in all_file_names:
    if ('.wav' in each_file):
        process_sudio(each_file)
 

Комментарии:

1. Ну, это только разделение первого файла и ошибка во 2-м файле, а не получение каких-либо других файлов. Выдает следующую ошибку FileNotFoundError: [Ошибка № 2] Нет такого файла или каталога: ‘a0002.wav’

2. есть ли у вас скрипт python в папке, в которой находится весь ваш аудиофайл? Есть ли в этой папке этот файл a0002.wav .

3. Я изменил код, фрагментированный файл будет сохранен в другой папке с именем chunked.

4. Скрипт находится в той же папке и содержит все файлы, однако он собирает только первый файл

5. Можете ли вы проверить сейчас, я запустил свой компьютер, и он работает нормально.