كيفية استخراج المعلومات من تردد تيار إدخال الصوت (باستخدام بورت اوديو)؟

StackOverflow https://stackoverflow.com/questions/259451

سؤال

وأريد أن أسجل الصوت (صوت) باستخدام بورت اوديو (PyAudio) والمخرجات الموجة الصوتية المقابلة على الشاشة. ميؤوس منها كما أنا، أنا غير قادر على استخراج المعلومات تردد من دفق الصوت حتى أستطيع أن استدراجه في شكل الوقت / هرتز.


وهنا رمز المثال المقتطف أن السجلات ويلعب الصوت المسجل لمدة خمس ثوان، في حالة أنه يساعد أي:

p = pyaudio.PyAudio()

chunk = 1024
seconds = 5

stream = p.open(format=pyaudio.paInt16,
                channels=1,
                rate=44100,
                input=True,
                output=True)

for i in range(0, 44100 / chunk * seconds):
    data = stream.read(chunk)
    stream.write(data, chunk)

وأود أن استخراج المعلومات المطلوبة من "بيانات" أعلاه متغير. (أو استخدام بعض النهج الآخر على مستوى عال مع بورت اوديو أو مكتبة أخرى مع بيثون).


وسأكون ممتنا جدا لأية مساعدة! هي موضع تقدير حتى الحكايات ذات الصلة غامضة من الحكمة تحليل الصوت. :)

هل كانت مفيدة؟

المحلول

وماذا تريد وربما تحويل فورييه من البيانات الصوتية. هناك عدة مجموعات التي يمكن حساب ذلك لك. scipy وnumpy هو اثنين منهم. وغالبا ما أطلقوا عليه اسم "تحويل فورييه السريع" (الاتحاد الفرنسي للتنس)، ولكن هذا هو مجرد اسم الخوارزمية.

وهنا مثال على ذلك هو الاستعمال: الشبكي : //svn.enthought.com/enthought/browser/Chaco/trunk/examples/advanced/spectrum.py

نصائح أخرى

ووتحويل فورييه لن تساعدك كثيرا إذا كنت ترغب في تحليل لأن تجرى في كل من تواتر ونطاق الوقت. قد ترغب في إلقاء نظرة على "التحويلات المويجات". هناك حزمة تسمى pywavelets ... http://www.pybytes.com/pywavelets/#discrete-wavelet- تحويل-طن من الوزن الساكن

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top