मेरे पास एक फ़ोल्डर है जहां मेरे पास अलग-अलग समय अंतराल के साथ डब्ल्यूएवी प्रारूप में लगभग 2000 ऑडियो फाइलें हैं, कहें कि कुछ 30 सेकंड में 40 हैं और मैं उन सभी को पायथन का उपयोग करके विभाजित करना चाहता हूं, मैंने पाइडब और विभिन्न पुस्तकालयों की कोशिश की और उनमें से सभी काम कर रहे थे केवल 1 फ़ाइल, मैं अजगर में सरल कोड के साथ एक लूप का उपयोग करके उन्हें विभाजित करना चाहता हूं।

नमूना कोड:

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

उपरोक्त कोड एक फ़ाइल के लिए काम कर रहा है जबकि मुझे फ़ोल्डर से फ़ाइलें लेने और उन सभी को विभाजित करने की आवश्यकता है

0
Shaheer Arshad Qureshi 23 जिंदा 2021, 13:14
क्या आप अपनी फ़ोल्डर संरचना और आपके द्वारा आजमाए गए कोड को साझा कर सकते हैं?
 – 
Epsi95
23 जिंदा 2021, 13:22
Pydub से pydub से ऑडियो सेगमेंट आयात करें। , एन्यूमरेट (चंक्स) में चंक: चंक_नाम = "{0}.wav"। प्रारूप (i) प्रिंट ("निर्यात", चंक_नाम) चंक.एक्सपोर्ट (chunk_name, प्रारूप = "wav") उपरोक्त कोड एक फ़ाइल के लिए काम कर रहा है जबकि मुझे फ़ोल्डर से फ़ाइलें लेने और उन सभी को विभाजित करने की आवश्यकता है
 – 
Shaheer Arshad Qureshi
23 जिंदा 2021, 13:29
कोड जोड़ने के लिए कृपया अपना प्रश्न संशोधित करें। यह टिप्पणी में पठनीय नहीं है।
 – 
Epsi95
23 जिंदा 2021, 13:38
यह किया जाता है
 – 
Shaheer Arshad Qureshi
23 जिंदा 2021, 13:44

1 उत्तर

सबसे बढ़िया उत्तर

आपको अपनी निर्देशिका में सभी फ़ाइल नाम प्राप्त करने होंगे और फिर सभी फ़ाइल नामों के लिए पुनरावृति करनी होगी।

आप वर्तमान निर्देशिका में सभी फाइलों की सूची प्राप्त करने के लिए os मॉड्यूल का उपयोग कर सकते हैं।

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)
0
Epsi95 23 जिंदा 2021, 13:59
वैसे यह केवल पहली फाइल को विभाजित कर रहा है और दूसरी फाइल पर त्रुटि दे रहा है और कोई अन्य फाइल नहीं उठा रहा है। यह निम्न त्रुटि दे रहा है FileNotFoundError: [Errno 2] ऐसी कोई फ़ाइल या निर्देशिका नहीं: 'a0002.wav'
 – 
Shaheer Arshad Qureshi
23 जिंदा 2021, 13:54
क्या आपके पास उस फ़ोल्डर में आपकी पायथन लिपि है जहां आपकी सभी ऑडियो फ़ाइल मौजूद है? क्या इस फ़ोल्डर में यह फ़ाइल है a0002.wav.
 – 
Epsi95
23 जिंदा 2021, 14:00
मैंने कोड को संशोधित कर दिया है, खंडित फ़ाइल को खंडित नाम के किसी अन्य फ़ोल्डर में संग्रहीत किया जाएगा।
 – 
Epsi95
23 जिंदा 2021, 14:00
स्क्रिप्ट एक ही फ़ोल्डर में है और इसमें सभी फ़ाइलें हैं, हालांकि यह केवल पहली फ़ाइल उठा रही है
 – 
Shaheer Arshad Qureshi
23 जिंदा 2021, 14:09
क्या आप अभी जांच सकते हैं, मैं अपने कंप्यूटर पर चला और यह ठीक काम कर रहा है।
 – 
Epsi95
23 जिंदा 2021, 14:11