PyAudio
नामक एक लाइब्रेरी है। आप इसे रीयल-टाइम में रिकॉर्ड करने के लिए उपयोग कर सकते हैं। इसके अलावा numpy.fromstring()
और numpy.hstack()
की सहायता से, आप वांछित आउटपुट प्राप्त कर सकते हैं। कृपया ध्यान दें कि निम्न स्निपेट MONO-CHANNEL
के लिए है।
import pyaudio
import numpy
RATE=16000
RECORD_SECONDS = 2.5
CHUNKSIZE = 1024
# initialize portaudio
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16, channels=1, rate=RATE, input=True, frames_per_buffer=CHUNKSIZE)
frames = [] # A python-list of chunks(numpy.ndarray)
for _ in range(0, int(RATE/CHUNKSIZE * RECORD_SECONDS)):
data = stream.read(CHUNKSIZE)
frames.append(numpy.fromstring(data, dtype=numpy.int16))
#Convert the list of numpy-arrays into a 1D array (column-wise)
numpydata = numpy.hstack(frames)
# close stream
stream.stop_stream()
stream.close()
p.terminate()
यह एक परीक्षण कोड है। यह आकर्षण के रूप में काम करना चाहिए। यह जांचने के लिए कि आपका रिकॉर्ड किया गया डेटा numpydata
में सही तरीके से उपलब्ध है या नहीं, आप पिछले कोड के बाद यह निम्न स्निपेट जोड़ सकते हैं।
import scipy.io.wavefile as wav
wav.write('out.wav',RATE,numpydata)
ये लाइनें लिखेंगे अपने "out.wav" में numpydata
। डेटा जांचने के लिए फ़ाइल चलाएं।
पीएस: यह स्टैक ओवरफ्लो में मेरी पहली प्रतिक्रिया है। आशा करता हूँ की ये काम करेगा।
धन्यवाद। मैंने अपने समाधान में 'pyudio' के बजाय 'alsaaudio' का उपयोग किया है। क्या दोनों के बीच कोई अंतर है? –
मुझे लगता है कि 'अलसाउडियो' केवल लिनक्स है जबकि 'पायउडियो' ['पोर्टऑडियो '] प्रदान करता है (http://www.portaudio.com/) -बिंदिंग और कई प्लेटफार्मों पर काम करता है। –