تغییرِ سرعتِ پخشِ یک فایل با تولیدِ دوبارهٔ گفتار در سرعتِ تازه یا صادرکردنِ فایلِ کشیدهشده یک کار نیست. این صفحه فقط سرعتِ پخش را روی رسانهٔ محلیِ ساختگی آزمایش میکند: نرخِ۱و۱٫۲۵پذیرفته میشوند، زمانِ پخش جلو میرود و durationو بایتهای فایلِ منبع ثابت میمانند.
چه چیزی را واقعاً تغییر دادهایم؟
تابعِهمراه روی یک عنصرِ رسانهٔ آماده،playbackRateرا میگذارد و مدتِ کوتاهیcurrentTimeو ساعتِ واقعی را مشاهده میکند. در هر اجرا، پخش از صفر شروع میشود؛ سپس حدود۴۵۰میلیثانیه دیده و متوقف میشود. این عملیات فایلِ تازه ذخیره نمیکند و موتورِ متن به گفتار را صدا نمیزند.
رسانهٔ آزمایش دو ثانیه است. در Edgeایزوله،هر دو نرخِ درخواستی۱و۱٫۲۵عیناً خوانده شدند وdurationدر هر دو۲ثانیه ماند. هشِWAVقبل و بعد هم برابر بود. ازdurationِثابت نتیجه نمیگیریم زمانِ لازم برای شنیدن تا پایان ثابت است؛ durationزمانِ محتوای فایل است، نه زمانِ دیواریِ مصرف در هر نرخ.
پیشرویِ زمان را اندازه گرفتیم
| نرخِ پذیرفتهشده | زمانِ دیواریِ مشاهده | افزایشcurrentTime | duration |
|---|---|---|---|
| ۱ | حدود۰٫۴۵۳ثانیه | حدود۰٫۳۹۲ثانیه | ۲ثانیه |
| ۱٫۲۵ | حدود۰٫۴۵۲ثانیه | حدود۰٫۴۶۴ثانیه | ۲ثانیه |
اینها مشاهدهٔ کوتاهِ یک اجرای واقعیاند، نه بنچمارکِ دقیقِ نسبتِ سرعت. تأخیرِ آغاز، زمانبندیِ محیط و روشِ بهروزرسانیِcurrentTimeباعث میشوند دو عدد دقیقاً رابطهٔ سادهٔrate×wallTimeرا نشان ندهند. نرخِ پذیرفتهشده، پیشروی و مدت را جدا ثبت کردهایم و از این جدول کیفیتِ صدا نتیجه نمیگیریم.
preservesPitchچه چیزی را اثبات میکند؟
در مرورگرِ آزمون، این ویژگی وجود داشت؛ trueدر دو اجرای پخش ثبت شد و تغییرِ آن بهfalseنیز از خودِویژگی خوانده شد. تنظیم و خواندنِboolean،شاهدِ شنیدنِ حفظِ زیروبمی یا تلفظِ درست نیست. آزمون بیصدا بود و شنونده کیفیت را امتیاز نداد.
رفتار و محدودهٔ سرعت و اصلاحِ pitchبه مرورگر وابستهاند. در این نمونه فقط۱و۱٫۲۵را مجاز کردهایم؛ سرعتِ منفی، محدودههای بسیار تند یا کند و همهٔ دستگاهها آزموده نشدهاند. هیچ الگوریتمِ مستقلِtime-stretchیا پردازشِ خروجیِ صوت اجرا نشده است.
تولید، پخش و فایل را مخلوط نکنیم
| کار | وضعیتِ این راهنما |
|---|---|
| تغییرplaybackRate | واقعاً در مرورگر اجرا شده |
| خواندنpreservesPitch | ویژگی ثبت شده؛ کیفیت شنیده نشده |
| تغییر سرعتِ بیانِ موتورTTS | اجرا نشده |
| صادرکردنِ فایلِtime-stretch | اجرا نشده |
| بازنمونهبرداری یا تغییرِ سرآیند نرخ | اجرا نشده |
سرعت و مکث درSSML قراردادِ ورودیِ موتور است؛ نرخِ نمونهبرداری هم مشخصاتِ سیگنال را بررسی میکند. این عملیات را از روی یک نامِ «سرعت» یکسان فرض نکنید.
اجرای محلی با فایلهای همراه
فایل Python را با Python 3.9یا جدیدتر و کتابخانهٔ استاندارد اجرا کنید؛ دو نشانیِ HTTPروی127.0.0.1با پورتهای متفاوت چاپ میکند. فقط روی رایانهٔ خودتان گوش میدهد، فایلِ کاربر نمیخواند و آپلود ندارد. در مبدأ اول، صفحهٔ پایه را باز کنید و کدِ JavaScriptمتنیِ همراه را در ابزارِ توسعهٔ همان صفحه اجرا کنید؛ این کد خودکار روی سایت اصلی نصب نمیشود. برای پایانِ سرورها Ctrl+Cبزنید.
رسانهٔ نمونه، WAVتککانالهٔ۱۶بیتی با نرخ۱۶۰۰۰،دو ثانیه موجِ سینوسی۴۴۰هرتز و۶۴۰۴۴بایت است. گفتارِ کسی ضبط نشده است. آزمونِ گزارششده در۳نوامبر۲۰۲۶با Edge154.0.4258.37در محیطِ جدا و بیصدا انجام شد؛ شنیدنِ انسان، تشخیص گفتار، درخواستِ سرویس بیرونی یا تماس در کار نبود.
بازتولید و تصمیمِ کاربردی
در صفحهٔ محلی، یکAudioباA+'/tone.wav'بارگذاری و منتظرcanplayبمانید. پس از خواندنِتابعِهمراه، await observeTeachingPlaybackRate(audio,1.25)را اجرا کنید. مرورگرِ تعاملی ممکن است برایplayبه کلیکِ کاربر نیاز داشته باشد؛ خطایِplayرا موفقیت گزارش نکنید. در آزمایشِ خودتان رسانهٔ مجاز و محدودهٔ هدف را جدا ببینید.
اگر قرار است فایلِ خروجیِ قابل تحویل با سرعتِ بیانِ مشخص بگیرید، آن نیاز را در درخواستِ اپراگو بنویسید. تغییرِ سرعتِ شنیدن در پلیر، مبنای تازهٔ هزینهٔ تولیدِ فایل نیست؛ راهنمای مدت و مصرف قراردادِ جدا دارد. این صفحه روشِ کنترلِ سرعت یاtime-stretchدر محصولِ اپرا را اعلام نمیکند.
فایل تمرین و منبع
سرورِ دو مبدأِ محلی؛ صدای ریاضی و VTT را خودش میسازد · مشاهدهٔplaybackRate،durationوپیشرویِزمان؛ بدون خروجیِ فایلِ تازه
منابع در ۳ نوامبر ۲۰۲۶ خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.