از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
تبدیل نرخ نمونه
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
این مقاله تبدیل نرخ نمونه را که با نام نمونهگیری مجدد نیز شناخته میشود، در اندروید توضیح میدهد. برای اصطلاحات مربوط به تبدیل نرخ نمونه، اصطلاحات را ببینید.
تبدیل نرخ نمونه فرآیند تغییر یک جریان نمونه گسسته از یک نرخ نمونه به جریان دیگر با نرخ نمونه متفاوت است. مبدل نرخ نمونه یا نمونهگیری مجدد، ماژولی است که تبدیل نرخ نمونه را پیادهسازی میکند. با توجه به نمونهبردار، جریان اصلی سیگنال منبع و جریان نمونهگیری مجدد سیگنال سینک نامیده میشود.
Resampler ها در چندین مکان در اندروید استفاده می شوند. به عنوان مثال، یک فایل MP3 ممکن است با نرخ نمونه 44.1 کیلوهرتز کدگذاری شود، اما باید در دستگاه اندرویدی که صدای 48 کیلوهرتز را پشتیبانی می کند، پخش شود. در این حالت، از یک نمونهگیری مجدد برای نمونهبرداری مجدد صدای خروجی MP3 از نرخ نمونه منبع 44.1 کیلوهرتز به نرخ نمونه سینک 48 کیلوهرتز که در دستگاه Android استفاده میشود، استفاده میشود.
ویژگی های یک نمونه گیری مجدد را می توان با استفاده از معیارهایی بیان کرد، از جمله:
- درجه حفظ دامنه کلی سیگنال
- درجه حفظ پهنای باند فرکانس سیگنال، مشروط به محدودیت های نرخ نمونه سینک
- تأخیر کلی از طریق نمونهگیری مجدد
- تاخیر فاز و گروه با توجه به فرکانس ثابت
- پیچیدگی محاسباتی، که در چرخه های CPU یا مصرف توان بیان می شود
- نسبت های مجاز نرخ نمونه منبع و سینک
- توانایی تغییر پویا نسبت نرخ نمونه
- کدام فرمتهای نمونه صوتی دیجیتال پشتیبانی میشوند
نمونهبرداری مجدد ایدهآل دقیقاً دامنه و پهنای باند فرکانس سیگنال منبع را حفظ میکند (مشروط به محدودیتهای سرعت نمونهگیری)، تاخیر حداقل و ثابت، حداقل پیچیدگی محاسباتی، اجازه نسبتهای تبدیل دلخواه و پویا، و پشتیبانی از همه فرمتهای نمونه صوتی دیجیتال رایج را دارد. . در عمل، نمونههای مجدد ایدهآل وجود ندارند، زیرا نمونههای مجدد واقعی یک مصالحه در میان این ویژگیها هستند. به عنوان مثال، اهداف کیفیت ایده آل با تاخیر کوتاه و پیچیدگی کم در تضاد هستند.
اندروید شامل انواع مختلفی از نمونههای مجدد صدا است، به طوری که بسته به مورد استفاده و بارگذاری برنامه، مصالحههای مناسبی را میتوان انجام داد. نمونههای مجدد موجود در پیادهسازی Resampler توضیح داده شدهاند.
پیاده سازی Resampler
پیادهسازی نمونههای مجدد موجود اغلب تغییر میکند و ممکن است توسط OEMها سفارشی شود. نمونههای مجدد پیشفرض، به ترتیب نزولی اعوجاج سیگنال و ترتیب صعودی پیچیدگی محاسباتی، عبارتند از:
- خطی
- مکعبی
- سینک با ضرایب اصلی
- سینک با ضرایب تجدید نظر شده
به طور کلی، نمونههای مجدد سینک برای پخش موسیقی با کیفیت بالاتر مناسبتر هستند، و نمونههای مجدد دیگر باید برای مواردی که کیفیت اهمیت کمتری دارد، رزرو شوند (مثلاً ممکن است «کلیدهای کلیدی» یا موارد مشابه باشد).
اجرای نمونهگیری مجدد خاص انتخابشده به استفاده، بار، و مقدار ویژگی سیستم af.resampler.quality
بستگی دارد. برای جزئیات، به کد منبع نمونهگیری مجدد صدا در AudioFlinger مراجعه کنید.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-03-26 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-03-26 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Sample rate conversion\n\nThis article describes sample rate conversion, also known as *resampling* , within Android.\nFor terminology related to sample rate conversion, see\n[Terminology](/docs/core/audio/terminology#srcTerms).\n\n\nSample rate conversion is the process of changing a stream of discrete samples\nfrom one sample rate to another stream at a different sample rate.\nA sample rate converter, or resampler, is a module that implements sample rate\nconversion. With respect to the resampler, the original stream is called the\nsource signal, and the resampled stream is called the sink signal.\n\n\nResamplers are used in several places in Android. For example, an MP3 file may\nbe encoded at 44.1 kHz sample rate but needs to be played back on an Android\ndevice supporting 48 kHz audio internally. In that case, a resampler would be\nused to upsample the MP3 output audio from 44.1 kHz source sample rate to a\n48 kHz sink sample rate used within the Android device.\n\n\nThe characteristics of a resampler can be expressed using metrics, including:\n\n- degree of preservation of the overall amplitude of the signal\n- degree of preservation of the frequency bandwidth of the signal, subject to limitations of the sink sample rate\n- overall latency through the resampler\n- consistent phase and group delay with respect to frequency\n- computational complexity, expressed in CPU cycles or power draw\n- permitted ratios of source and sink sample rates\n- ability to dynamically change sample rate ratios\n- which digital audio sample formats are supported\n\n\nThe ideal resampler would exactly preserve the source signal's amplitude\nand frequency bandwidth (subject to limitations of the sink\nsample rate), have minimal and consistent delay, have minimal\ncomputational complexity, permit arbitrary and dynamic conversion ratios,\nand support all common digital audio sample formats. In practice, ideal\nresamplers do not exist as actual resamplers are a compromise among these\ncharacteristics. For example, goals of ideal quality conflict with short delay\nand low complexity.\n\n\nAndroid includes a variety of audio resamplers, so that appropriate\ncompromises can be made depending on the application use case and load. The\navailable resamplers are explained in [Resampler implementation.](#srcResamplers)\n\nResampler implementations\n-------------------------\n\n\nAvailable resampler implementations change frequently,\nand may be customized by OEMs.\nThe default resamplers, in descending order of signal distortion and ascending order of\ncomputational complexity, include:\n\n- linear\n- cubic\n- sinc with original coefficients\n- sinc with revised coefficients\n\n\nIn general, the sinc resamplers are more appropriate for higher-quality\nmusic playback, and the other resamplers should be reserved for cases\nwhere quality is less important (an example might be \"key clicks\" or similar).\n\n\nThe specific resampler implementation selected depends on\nthe use case, load, and the value of system property\n`af.resampler.quality`. For details,\nconsult the audio resampler source code in\n[AudioFlinger](https://android.googlesource.com/platform/frameworks/av/+/39ec5a7accf61d89a41908999bc789d5c8d0e3d3/services/audioflinger/)."]]