में एक WAV फ़ाइल की मात्रा बदलें मेरे पास 2 सेकंड 16 बिट एकल चैनल 8khz wav फ़ाइल है और मुझे इसकी मात्रा बदलने की आवश्यकता है।पायथन
यह काफी सरल होना चाहिए, क्योंकि वॉल्यूम बदलना सिग्नल के आयाम को बदलने जैसा ही है, और मुझे बस इसे क्षीण करने की आवश्यकता है, जो इसे 0 और 1 के बीच एक संख्या के लिए गुणा करना है। लेकिन यह ' टी काम नहीं: नई आवाज कम है लेकिन शोर से बहुत भरा है। मैं क्या गलत कर रहा हूं?
import wave, numpy, struct
# Open
w = wave.open("input.wav","rb")
p = w.getparams()
f = p[3] # number of frames
s = w.readframes(f)
w.close()
# Edit
s = numpy.fromstring(s, numpy.int16) * 5/10 # half amplitude
s = struct.pack('h'*len(s), *s)
# Save
w = wave.open("output.wav","wb")
w.setparams(p)
w.writeframes(s)
w.close()
तुम लोग धन्यवाद:
यहाँ मेरी कोड है!
आप '/ 2' के बजाय' * 5/10' का उपयोग क्यों कर रहे हैं? –
अगर मुझे लगता है, तो मैं कहूंगा कि '* 5' भाग क्लिपिंग और बह रहा है। –
क्या आप सही अंतहीनता में फ़ाइल पढ़ रहे हैं? [डब्ल्यूएवी फाइलें छोटी-छोटी हैं।] (Http://web.archive.org/web/19991115123323/http://www.borg.com/~jglatt/tech/wave.htm) अन्य एंडियन का उपयोग करना बंद कर देगा नमूना और शोर का एक बहुत जोड़ें। –