أخذ عيّنة من المحتوى الصوتي

بدءًا من نظام التشغيل Android 5.0 (Lollipop)، تعتمد أجهزة إعادة أخذ عينات الصوت الآن بشكل كامل على فلاتر FIR المستمدة من وظيفة Kaiser في وضع النافذة في النافذة. يقدم Kaiser windowed-sinc السمات التالية:

  • ومن السهل أيضًا احتساب معلَمات التصميم الخاصة بها (تمويج النطاق الترددي، وعرض النطاق الترددي للانتقال، وتردد القطع، وطول الفلتر).
  • يُعد هذا الخيار الأمثل لخفض طاقة النطاق الثابت مقارنةً بالطاقة الإجمالية.

يمكنك الانتقال إلى "بي بي فايدياناثان" بعنوان الأنظمة المتعدّدة وبنوك التصفية، صفحة 50 للاطّلاع على نقاشات حول نافذة Kaiser وأهميتها وعلاقتها بأنظمة Windows الكروية الكروية المتناسبة.

يتم حساب معلمات التصميم تلقائيًا بناءً على تحديد الجودة الداخلية ونسب أخذ العينات المطلوبة. استنادًا إلى معلمات التصميم، يتم إنشاء عامل تصفية نافذته. بالنسبة إلى استخدام الموسيقى، يتم إنشاء أداة إعادة أخذ عينات من 44.1 إلى 48 كيلوهرتز والعكس صحيح بجودة أعلى من التحويل العشوائي للتردد.

توفر أدوات إعادة أخذ عينات الصوت جودة محسّنة، بالإضافة إلى سرعة لتحقيق هذه الجودة. لكن يمكن أن تقدم أجهزة إعادة أخذ العيّنات كميات صغيرة من تمويج نطاق المرور والضوضاء التوافقية الاسمية، ويمكن أن تتسبب في فقدان بعض الترددات العالية في النطاق الانتقالي، لذا تجنب استخدامها بدون داعٍ.

أفضل الممارسات المتعلقة بأخذ العينات وإعادة العينات

يوضِّح هذا القسم بعض أفضل الممارسات لمساعدتك على تجنُّب المشاكل المتعلّقة بمعدلات أخذ العيّنات.

اختيار معدل أخذ العينات الذي يناسب الجهاز

بشكل عام، من الأفضل اختيار معدل أخذ العينات الذي يناسب الجهاز، عادةً 44.1 كيلوهرتز أو 48 كيلوهرتز. يؤدي استخدام معدّل عينة أكبر من 48 كيلوهرتز إلى انخفاض جودة المحتوى لأنّه يجب استخدام أداة إعادة أخذ عينات لتشغيل الملف.

استخدام نسب بسيطة لإعادة أخذ العيّنات (الثابتة مقابل حالات متعددة التدخين)

تعمل أداة إعادة أخذ العينات في أحد الأوضاع التالية:

  • وضع متعدد الأطوار الثابت. يتم حساب معامل الفلتر لكل من الأشكال المتعددة مسبقًا.
  • وضع متعدد الأطوار المدمَج. يجب إدخال معامِلات التصفية لكل أنزيم متعدد الأطوار من أقرب اثنين من الأشكال المتعددة المحسوبة مسبقًا.

يكون أداة إعادة أخذ العيّنات هو الأسرع في وضع متعدد الأطوار الثابت، عندما تكون نسبة معدل الإدخال على معدل الإخراج L/M (مع استخلاص القاسم المشترك الأكبر) تكون M أقل من 256. على سبيل المثال، بالنسبة إلى من 44,100 إلى 48,000 إحالة ناجحة، يكون L = 147 وM = 160.

في وضع متعدد الأطوار الثابت، يتم قفل معدل أخذ العينات ولا يتغير. في وضع متعدد الأطوار المضمَّن، يكون معدل أخذ العينات تقريبيًا. عند التشغيل على جهاز تردده 48 كيلوهرتز، يكون معدّل أخذ العيّنات بشكل عام عيّنة واحدة خلال بضع ساعات. لا يمثل هذا عادةً مصدر قلق لأن خطأ التقريب أقل بكثير من خطأ التكرار الذي تنتجه أجهزة مذبذبات الكوارتز الداخلية أو الانجراف الحراري أو عدم الاستقرار (عادةً عشرات النقاط في الدقيقة).

اختَر معدّلات العيّنة البسيطة، مثل 24 كيلوهرتز (1:2) و32 كيلوهرتز (2:3) عند التشغيل على جهاز 48 كيلوهرتز، بالرغم من أنّه قد يُسمح باستخدام معدّلات ونِسب أخرى لأخذ العينات من خلال AudioTrack.

استخدِم زيادة العينات بدلاً من تقليل العيّنات لتغيير معدلات العيّنات.

يمكن تغيير معدلات أخذ العينات بشكلٍ سريع. يستند دقة هذا التغيير إلى التخزين المؤقت الداخلي (عادةً بضع مئات من العيّنات)، وليس على أساس كل عيّنة على حدة. يمكن استخدام هذا للتأثيرات.

لا تغيِّر معدّلات أخذ العينات ديناميكيًا عند تقليل أخذ العينات. عند تغيير معدلات العينات بعد إنشاء مقطع صوتي، قد تؤدي الاختلافات بنسبة تتراوح بين 5 و10 في المائة عن المعدل الأصلي إلى إعادة حساب الفلتر عند تقليل العيّنات (لإخفاء التشويش بشكل صحيح). وقد يؤدي ذلك إلى استهلاك موارد الحوسبة وقد يتسبب في نقرة مسموعة إذا تم استبدال الفلتر في الوقت الفعلي.

تقييد اختزال العيّنات بما لا يزيد عن 6:1

عادةً ما يتم تشغيل تصغير العيّنات وفقًا لمتطلبات الأجهزة. عند استخدام محوّل معدّل العيّنة لخفض العيّنات، حاول ضبط نسبة تقليل العيّنات على ما لا يزيد عن 6:1 لمنع ظهور اسم مستعار جيد (على سبيل المثال، عيّنة أقل من 48,000 إلى 8,000). يتم ضبط أطوال عوامل التصفية لتتوافق مع نسبة تقليل العينات، ولكنك تُضحي بمزيد من النطاق الترددي الانتقالي عند انخفاض نسب عيّنة البيانات لتجنب الزيادة المفرطة في طول الفلتر. لا توجد مخاوف مماثلة للتسمية المستعارة لأخذ العينات. تجدر الإشارة إلى أنّ بعض أجزاء مسار الصوت قد تمنع تصغير العيّنات بنسبة أكبر من 2:1.

إذا كنت قلقًا بشأن وقت الاستجابة، لا تُعيد تحليل عينات البيانات

تمنع عملية إعادة أخذ العينات وضع المسار في مسار FastMixer، ما يعني حدوث وقت استجابة أعلى بكثير بسبب المخزن المؤقت الإضافي والأكبر في مسار Mixer العادي. بالإضافة إلى ذلك، يحدث تأخير ضمني عن طول الفلتر في أداة إعادة إنشاء العيّنات، علمًا أنّ هذا التأخير عادةً ما يكون في حدود ملي ثانية واحدة أو أقل، وهو ليس بحجم التخزين المؤقت الإضافي لمسار أداة المزج العادي (عادةً ما يكون 20 مللي ثانية).

استخدام صوت النقطة العائمة

يمكن أن يؤدي استخدام أرقام النقاط العائمة لتمثيل البيانات الصوتية إلى تحسين جودة الصوت بشكل كبير في التطبيقات الصوتية العالية الأداء. وتوفر النقطة العائمة المزايا التالية:

  • نطاق ديناميكي أوسع
  • دقة متسقة عبر النطاق الديناميكي
  • المزيد من هامش النمو لتجنب القطع أثناء العمليات الحسابية المتوسطة والمؤقتة.

يمكن للنقطة العائمة تحسين جودة الصوت، ولكنّها لها عيوب معيّنة:

  • تستهلك الأرقام العائمة مساحة أكبر من الذاكرة.
  • تستخدم العمليات ذات النقطة العائمة خصائص غير متوقعة، فعلى سبيل المثال، لا تعتبر عمليات الجمع ارتباطًا.
  • قد تفقد حسابات النقاط العائمة أحيانًا الدقة الحسابية بسبب التقريب أو الخوارزميات غير المستقرة عدديًا.
  • يتطلب استخدام النقطة العائمة فهمًا أكبر لتحقيق نتائج دقيقة وقابلة للتكرار.

كانت النقطة العائمة في السابق تشتهر بكونها غير متوفرة أو بطيئة. وينطبق ذلك على المعالجات المنخفضة المواصفات والمضمّنة. ومع ذلك، تتضمّن المعالجات على الأجهزة الجوّالة الحديثة الآن نقطة عائمة للأجهزة بأداء مشابه (أو أسرع في بعض الحالات) من العدد الصحيح. تتوافق وحدات المعالجة المركزية الحديثة أيضًا مع SIMD (تعليمات فردية وبيانات متعدّدة)، ما يؤدي إلى تحسين الأداء بشكل أكبر.

أفضل الممارسات المتعلّقة بالصوت ذي النقطة العائمة

تساعدك أفضل الممارسات التالية في تجنب المشاكل المتعلقة بحسابات النقاط العائمة:

  • استخدم النقطة العائمة المزدوجة الدقة لإجراء العمليات الحسابية غير المتكررة، مثل حساب معاملات التصفية.
  • انتبه لترتيب العمليات.
  • حدِّد المتغيرات الصريحة للقيم المتوسطة.
  • استخدِم الأقواس بحرية.
  • إذا حصلت على نتيجة NaN أو لانهاية، فاستخدم البحث الثنائي لمعرفة مكان ظهورها.

بالنسبة إلى صوت النقطة العائمة، يتم استخدام ترميز تنسيق الصوت AudioFormat.ENCODING_PCM_FLOAT بشكل مشابه للترميز ENCODING_PCM_16_BIT أو ENCODING_PCM_8_BIT لتحديد تنسيقات بيانات المقطع الصوتي. تستخدم الطريقة AudioTrack.write() ذات التحميل الزائد مصفوفة عائمة لعرض البيانات.

Kotlin

fun write(
        audioData: FloatArray,
        offsetInFloats: Int,
        sizeInFloats: Int,
        writeMode: Int
): Int

Java

public int write(float[] audioData,
        int offsetInFloats,
        int sizeInFloats,
        int writeMode)

للحصول على معلومات إضافية

يسرد هذا القسم بعض الموارد الإضافية عن أخذ العينات والنقطة العائمة.

توزيع عينات من الشيكولاتة

أمثلة على الأسعار

إعادة أخذ العيّنات

الجدل بشأن درجة البت العالية والجدل العالي الكيلوهرتز

نقطة عائمة

صفحات ويكيبيديا التالية مفيدة في فهم الصوت ذي النقطة العائمة:

تقدّم المقالة التالية معلومات حول جوانب النقطة العائمة التي لها تأثير مباشر في مصممي أنظمة الكمبيوتر: