در Chrome 64 ما در حال آزمایش یک رفتار جدید برای جریانهای صوتی getUserMedia هستیم که محدودیت echoCancellation
را فعال کردهاند. چیزی که جدید است این است که چنین جریانهایی بهطور موقت سرکوب نویز سختافزاری را برای مدت زمان پخش غیرفعال میکنند. ما پیشبینی میکنیم که این باعث میشود لغو کننده اکو عملکرد بهتری داشته باشد. از آنجایی که این عملکرد آزمایشی است، باید به صراحت روشن شود. زیر را ببینید .
در این مرحله، این رفتار فقط برای دستگاههای ورودی خاص و فقط در macOS پشتیبانی میشود. پشتیبانی به دستگاههایی محدود میشود که دارای «کاهش نویز محیط» قابل تغییر در پانل صدا تنظیمات برگزیده سیستم هستند .
پس زمینه
یک لغو کننده اکو سعی می کند هر صدای پخش شده روی بلندگوها را از سیگنال صوتی که توسط میکروفون دریافت می شود حذف کند. بدون این، آنچه شما به عنوان یکی از طرفین تماس می گویید، توسط میکروفون طرف های دیگر دریافت می شود و سپس برای شما ارسال می شود. شما پژواک خود را خواهید شنید!
برای موفقیت در حذف اکو، لغو اکو WebRTC (که در کروم استفاده میشود) باید سیگنال صوتی را تا حد امکان از میکروفون دریافت کند. پردازشی که قبل از رسیدن صدا به حذف کننده اکو اعمال می شود، مانند کاهش نویز سخت افزاری، معمولاً عملکرد آن را مختل می کند. علاوه بر این، در حال حاضر سرکوب نویز نرمافزاری وجود دارد، اما تنها پس از اینکه لغو کننده اکو پردازش خود را انجام داد.
جزئیات رفتار جدید
توسعهدهندگان وب میتوانند رفتار جدید را در سایتهای خود با شرکت در Origin Trial فعال کنند. کاربران نهایی میتوانند با ارسال یک پرچم خط فرمان هنگام راهاندازی Chrome، آن را به صورت جهانی فعال کنند. برای اطلاعات بیشتر، زیر را ببینید .
هنگامی که این مورد فعال است و یک صفحه وب با getUserMedia تماس می گیرد تا صدا را از دستگاه ورودی دریافت کند، موارد زیر رخ می دهد:
اگر محدودیت
echoCancellation
فعال باشد، سرکوب نویز سختافزاری در طول جریان صوتی جدید ایجاد شده خاموش میشود.از آنجایی که این تنظیم در کل سیستم است، برای همه جریانهای ورودی صوتی از یک دستگاه (یعنی همان میکروفون) اعمال میشود.
پس از بسته شدن آخرین جریانی که میخواهد سرکوب نویز سختافزاری خاموش شود، سرکوب نویز سختافزاری دوباره روشن میشود.
اگر سرکوب نویز سختافزار قبلاً غیرفعال شده بود، Chrome وضعیت آن را تغییر نخواهد داد.
اگر getUserMedia بدون فعال کردن
echoCancellation
فراخوانی شود، Chrome به کاهش نویز سخت افزاری دست نمی دهد.
از آنجایی که این تنظیم توسط کاربر نیز قابل کنترل است، برخی از تعاملات خاص با کاربر وجود دارد:
اگر Chrome سرکوب نویز سختافزاری را خاموش کرده باشد و کاربر دوباره آن را روشن کند، Chrome تلاشی برای غیرفعال کردن مجدد آن برای آن جریان نخواهد داشت.
اگر Chrome سرکوب نویز سختافزاری را خاموش کرده باشد، و کاربر دوباره آن را روشن و سپس خاموش کند، Chrome همچنان پس از پایان پخش جریانی، آن را دوباره فعال میکند.
رفتار به سادگی با فعال کردن آزمایش تأثیر می گذارد. هیچ تغییری در API لازم نیست.
چگونه آزمایش را فعال کنیم
برای دریافت این رفتار جدید در سایت خود، باید در نسخه آزمایشی اصلی "غیرفعال کردن سر و صدای سخت افزار" ثبت نام کنید . اگر فقط می خواهید آن را به صورت محلی امتحان کنید، می توانید آن را در خط فرمان نیز فعال کنید:
chrome --enable-blink-features=DisableHardwareNoiseSuppression
ارسال این پرچم در خط فرمان، ویژگی را به صورت سراسری برای جلسه جاری فعال می کند.
چند جنبه وجود دارد که مایلیم با این آزمایش ارزیابی کنیم:
تفاوتهای کیفی، در زمینه، بین روشن کردن سر و صدای سختافزار در مقابل خاموش بودن.
تغییر این تنظیم از داخل Chrome چه تأثیری بر کاربر نهایی و سایر نرم افزارهایی که ممکن است اجرا کنند دارد؟
ما علاقه مند به بازخورد در مورد هر دوی این جنبه ها هستیم. با روشن بودن این ویژگی تماس بهتر است یا بدتر؟ آیا در پیاده سازی مشکلاتی وجود دارد که باعث رفتارهای غیرمنتظره می شود؟ در هر صورت، اگر این کار را امتحان میکنید، لطفاً بازخورد خود را درباره این اشکال ارسال کنید. در صورت امکان، مواردی که از میکروفون / هدست / غیره استفاده شده است و اینکه آیا از کاهش نویز محیط پشتیبانی می کند را بنویسید. در صورت انجام آزمایشهای بیشتر در مقیاس بزرگ، پیوندهایی به آمار مقایسهای در مورد کیفیت تماس صوتی قدردانی میشود.