নমুনা অডিও

অ্যান্ড্রয়েড 5.0 (ললিপপ) হিসাবে, অডিও রিস্যাম্পলারগুলি এখন সম্পূর্ণরূপে একটি Kaiser windowed-sinc ফাংশন থেকে প্রাপ্ত FIR ফিল্টারের উপর ভিত্তি করে। কায়সার উইন্ডোড-সিঙ্ক নিম্নলিখিত বৈশিষ্ট্যগুলি অফার করে:

  • এটির ডিজাইনের পরামিতিগুলির (স্টপব্যান্ড রিপল, ট্রানজিশন ব্যান্ডউইথ, কাটঅফ ফ্রিকোয়েন্সি, ফিল্টার দৈর্ঘ্য) গণনা করা সহজ।
  • সামগ্রিক শক্তির তুলনায় স্টপব্যান্ড শক্তি হ্রাসের জন্য এটি প্রায় সর্বোত্তম।

দেখুন পিপি বৈদ্যনাথন, মাল্টিরেট সিস্টেমস অ্যান্ড ফিল্টার ব্যাঙ্কস , পি. কায়সার উইন্ডো এবং এর সর্বোত্তমতা এবং প্রোলেট স্ফেরোডাল উইন্ডোজের সাথে সম্পর্ক নিয়ে আলোচনার জন্য 50।

অভ্যন্তরীণ গুণমান নির্ধারণ এবং পছন্দসই নমুনা অনুপাতের উপর ভিত্তি করে ডিজাইনের পরামিতিগুলি স্বয়ংক্রিয়ভাবে গণনা করা হয়। ডিজাইন প্যারামিটারের উপর ভিত্তি করে, উইন্ডোড-সিঙ্ক ফিল্টার তৈরি করা হয়। মিউজিক ব্যবহারের জন্য, 44.1 থেকে 48 kHz এর রিস্যাম্পলার এবং এর বিপরীতে নির্বিচারে ফ্রিকোয়েন্সি রূপান্তরের চেয়ে উচ্চ মানের তৈরি হয়।

অডিও রিস্যাম্পলার বর্ধিত মানের, সেইসাথে সেই গুণমান অর্জনের গতি প্রদান করে। কিন্তু রিস্যাম্পলাররা অল্প পরিমাণে পাসব্যান্ড রিপল এবং অ্যালিয়াসিং হারমোনিক নয়েজ প্রবর্তন করতে পারে এবং তারা ট্রানজিশন ব্যান্ডে কিছু উচ্চ ফ্রিকোয়েন্সি ক্ষতির কারণ হতে পারে, তাই অপ্রয়োজনীয়ভাবে সেগুলি ব্যবহার করা এড়িয়ে চলুন।

নমুনা এবং পুনরায় নমুনা করার জন্য সর্বোত্তম অনুশীলন

এই বিভাগে আপনাকে স্যাম্পলিং হারের সমস্যা এড়াতে সাহায্য করার জন্য কিছু সেরা অনুশীলনের বর্ণনা দেওয়া হয়েছে।

ডিভাইসের সাথে মানানসই করার জন্য স্যাম্পলিং রেট বেছে নিন

সাধারণভাবে, ডিভাইসের সাথে মানানসই করার জন্য স্যাম্পলিং রেট বেছে নেওয়া ভাল, সাধারণত 44.1 kHz বা 48 kHz। 48 kHz-এর বেশি নমুনা রেট ব্যবহারের ফলে সাধারণত গুণমান কমে যায় কারণ ফাইলটি প্লে ব্যাক করতে একটি রিস্যাম্পলার ব্যবহার করতে হবে।

সাধারণ রিস্যাম্পলিং অনুপাত ব্যবহার করুন (স্থির বনাম ইন্টারপোলেটেড পলিফেস)

resampler নিম্নলিখিত মোডগুলির মধ্যে একটিতে কাজ করে:

  • স্থির পলিফেজ মোড। প্রতিটি পলিফেজের জন্য ফিল্টার সহগগুলি পূর্বনির্ধারিত।
  • ইন্টারপোলেটেড পলিফেজ মোড। প্রতিটি পলিফেজের জন্য ফিল্টার সহগগুলিকে নিকটতম দুটি প্রাক-কম্পিউটেড পলিফেস থেকে ইন্টারপোলেট করতে হবে।

ফিক্সড পলিফেজ মোডে রিস্যাম্পলার সবচেয়ে দ্রুত হয়, যখন আউটপুট রেট L/M (সর্বশ্রেষ্ঠ সাধারণ ভাজক বের করা) এর উপর ইনপুট হারের অনুপাত M 256-এর কম হয়। উদাহরণস্বরূপ, 44,100 থেকে 48,000 রূপান্তরের জন্য, L = 147, M = 160।

স্থির পলিফেজ মোডে, স্যাম্পলিং রেট লক করা থাকে এবং পরিবর্তন হয় না। ইন্টারপোলেটেড পলিফেজ মোডে, স্যাম্পলিং রেট আনুমানিক। একটি 48-kHz ডিভাইসে বাজানোর সময় স্যাম্পলিং রেট ড্রিফ্ট সাধারণত কয়েক ঘন্টার মধ্যে একটি নমুনা হয়। এটি সাধারণত উদ্বেগের বিষয় নয় কারণ আনুমানিক ত্রুটিটি অভ্যন্তরীণ কোয়ার্টজ অসিলেটর, থার্মাল ড্রিফ্ট বা জিটার (সাধারণত দশজন পিপিএম) দ্বারা অবদানকৃত ফ্রিকোয়েন্সি ত্রুটির চেয়ে অনেক কম।

একটি 48-kHz ডিভাইসে ব্যাক প্লে করার সময় 24 kHz (1:2) এবং 32 kHz (2:3) এর মতো সরল-অনুপাতের নমুনা হার বেছে নিন, যদিও অন্যান্য নমুনা হার এবং অনুপাত অডিওট্র্যাকের মাধ্যমে অনুমোদিত হতে পারে।

নমুনা হার পরিবর্তন করতে ডাউনস্যাম্পলিং এর পরিবর্তে আপস্যাম্পলিং ব্যবহার করুন

স্যাম্পলিং রেট ফ্লাইতে পরিবর্তন করা যেতে পারে। এই ধরনের পরিবর্তনের গ্রানুলারিটি অভ্যন্তরীণ বাফারিং (সাধারণত কয়েকশ নমুনার) উপর ভিত্তি করে, নমুনা দ্বারা নমুনার ভিত্তিতে নয়। এই প্রভাব জন্য ব্যবহার করা যেতে পারে.

ডাউনস্যাম্পলিং করার সময় গতিশীলভাবে নমুনার হার পরিবর্তন করবেন না। একটি অডিও ট্র্যাক তৈরি হওয়ার পরে নমুনার হার পরিবর্তন করার সময়, মূল হার থেকে প্রায় 5 থেকে 10 শতাংশের পার্থক্য ডাউনস্যাম্পলিং (সঠিকভাবে অ্যালিয়াসিং দমন করার জন্য) একটি ফিল্টার পুনর্গণনার ট্রিগার করতে পারে। এটি কম্পিউটিং সংস্থানগুলিকে গ্রাস করতে পারে এবং ফিল্টারটি রিয়েল টাইমে প্রতিস্থাপিত হলে একটি শ্রবণযোগ্য ক্লিক হতে পারে।

ডাউনস্যাম্পলিং 6:1 এর বেশি সীমাবদ্ধ করুন

ডাউনস্যাম্পলিং সাধারণত হার্ডওয়্যার ডিভাইসের প্রয়োজনীয়তা দ্বারা ট্রিগার হয়। যখন স্যাম্পল রেট কনভার্টারটি ডাউনস্যাম্পলিং-এর জন্য ব্যবহার করা হয়, তখন ভাল অ্যালিয়াসিং দমনের জন্য ডাউনস্যাম্পলিং অনুপাতকে 6:1-এর বেশি সীমাবদ্ধ করার চেষ্টা করুন (উদাহরণস্বরূপ, 48,000 থেকে 8,000-এর বেশি ডাউনস্যাম্পল নয়)। ফিল্টারের দৈর্ঘ্য ডাউনস্যাম্পলিং অনুপাতের সাথে সামঞ্জস্য করে, তবে ফিল্টারের দৈর্ঘ্য অত্যধিক বৃদ্ধি এড়াতে আপনি উচ্চ ডাউনস্যাম্পলিং অনুপাতগুলিতে আরও ট্রানজিশন ব্যান্ডউইথ ত্যাগ করেন। আপস্যাম্পলিংয়ের জন্য অনুরূপ উপনামের উদ্বেগ নেই। মনে রাখবেন যে অডিও পাইপলাইনের কিছু অংশ 2:1 এর চেয়ে বেশি ডাউনস্যাম্পলিং প্রতিরোধ করতে পারে।

আপনি লেটেন্সি সম্পর্কে উদ্বিগ্ন হলে, পুনরায় নমুনা করবেন না

রিস্যাম্পলিং ট্র্যাকটিকে ফাস্টমিক্সার পাথে স্থাপন করা থেকে বাধা দেয়, যার অর্থ সাধারণ মিক্সার পাথে অতিরিক্ত, বড় বাফারের কারণে উল্লেখযোগ্যভাবে উচ্চতর লেটেন্সি ঘটে। তদুপরি, রিস্যাম্পলারের ফিল্টার দৈর্ঘ্য থেকে একটি অন্তর্নিহিত বিলম্ব রয়েছে, যদিও এটি সাধারণত এক মিলিসেকেন্ড বা তার কম ক্রমে হয়, যা সাধারণ মিক্সার পাথের (সাধারণত 20 মিলিসেকেন্ড) জন্য অতিরিক্ত বাফারিংয়ের মতো বড় নয়।

ফ্লোটিং-পয়েন্ট অডিও ব্যবহার

অডিও ডেটা প্রতিনিধিত্ব করার জন্য ফ্লোটিং-পয়েন্ট নম্বর ব্যবহার করে উচ্চ-পারফরম্যান্স অডিও অ্যাপ্লিকেশনগুলিতে অডিও গুণমানকে উল্লেখযোগ্যভাবে উন্নত করতে পারে। ফ্লোটিং পয়েন্ট নিম্নলিখিত সুবিধা প্রদান করে:

  • বিস্তৃত গতিশীল পরিসীমা।
  • গতিশীল পরিসর জুড়ে ধারাবাহিক নির্ভুলতা।
  • মধ্যবর্তী গণনা এবং ক্ষণস্থায়ী সময় ক্লিপিং এড়াতে আরও হেডরুম।

যদিও ফ্লোটিং-পয়েন্ট অডিও গুণমান উন্নত করতে পারে, এটি কিছু অসুবিধা উপস্থাপন করে:

  • ফ্লোটিং-পয়েন্ট সংখ্যা বেশি মেমরি ব্যবহার করে।
  • ফ্লোটিং-পয়েন্ট অপারেশন অপ্রত্যাশিত বৈশিষ্ট্য নিয়োগ করে, উদাহরণস্বরূপ, সংযোজন সহযোগী নয়।
  • ফ্লোটিং-পয়েন্ট গণনা কখনও কখনও রাউন্ডিং বা সংখ্যাগতভাবে অস্থির অ্যালগরিদমের কারণে গাণিতিক নির্ভুলতা হারাতে পারে।
  • ফ্লোটিং-পয়েন্ট কার্যকরভাবে ব্যবহার করে সঠিক এবং পুনরুৎপাদনযোগ্য ফলাফল অর্জনের জন্য আরও বেশি বোঝার প্রয়োজন।

পূর্বে, ভাসমান-বিন্দু অনুপলব্ধ বা ধীর হওয়ার জন্য কুখ্যাত ছিল। এটি এখনও লো-এন্ড এবং এমবেডেড প্রসেসরের জন্য সত্য। কিন্তু আধুনিক মোবাইল ডিভাইসে প্রসেসরে এখন হার্ডওয়্যার ফ্লোটিং-পয়েন্ট রয়েছে যার কার্যক্ষমতা পূর্ণসংখ্যার তুলনায় একই রকম (বা কিছু ক্ষেত্রে আরও দ্রুত)। আধুনিক CPU গুলি SIMD (একক নির্দেশনা, একাধিক ডেটা) সমর্থন করে, যা কর্মক্ষমতা আরও উন্নত করতে পারে।

ফ্লোটিং-পয়েন্ট অডিওর জন্য সেরা অনুশীলন

নিম্নলিখিত সর্বোত্তম অনুশীলনগুলি আপনাকে ফ্লোটিং-পয়েন্ট গণনার সমস্যাগুলি এড়াতে সহায়তা করে:

  • বিরল গণনার জন্য ডবল নির্ভুলতা ফ্লোটিং-পয়েন্ট ব্যবহার করুন, যেমন কম্পিউটিং ফিল্টার সহগ।
  • অপারেশন ক্রম মনোযোগ দিন.
  • মধ্যবর্তী মানের জন্য সুস্পষ্ট ভেরিয়েবল ঘোষণা করুন।
  • উদারভাবে বন্ধনী ব্যবহার করুন।
  • আপনি যদি একটি NaN বা অসীম ফলাফল পান তবে এটি কোথায় চালু করা হয়েছে তা আবিষ্কার করতে বাইনারি অনুসন্ধান ব্যবহার করুন।

ফ্লোটিং-পয়েন্ট অডিওর জন্য, AudioFormat.ENCODING_PCM_FLOAT এনকোডিং অডিও ফর্ম্যাটটি অডিওট্র্যাক ডেটা ফর্ম্যাটগুলি নির্দিষ্ট করার জন্য ENCODING_PCM_16_BIT বা ENCODING_PCM_8_BIT এর মতোই ব্যবহার করা হয়৷ সংশ্লিষ্ট ওভারলোড পদ্ধতি AudioTrack.write() ডেটা সরবরাহ করতে একটি ফ্লোট অ্যারে নেয়।

কোটলিন

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

জাভা

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

আরও তথ্যের জন্য

এই বিভাগে নমুনা এবং ভাসমান-বিন্দু সম্পর্কে কিছু অতিরিক্ত সংস্থান তালিকাভুক্ত করা হয়েছে।

স্যাম্পলিং

নমুনা হার

রিস্যাম্পলিং

উচ্চ বিট-গভীরতা এবং উচ্চ kHz বিতর্ক

ফ্লোটিং পয়েন্ট

নিম্নলিখিত উইকিপিডিয়া পৃষ্ঠাগুলি ফ্লোটিং-পয়েন্ট অডিও বোঝার জন্য সহায়ক:

নিম্নলিখিত নিবন্ধটি ফ্লোটিং-পয়েন্টের সেই দিকগুলির বিষয়ে তথ্য সরবরাহ করে যা কম্পিউটার সিস্টেমের ডিজাইনারদের উপর সরাসরি প্রভাব ফেলে: