TextGrid میتواند برچسبِ یک بازهٔ زمانی و برچسبِ یک نقطه را در لایههای جدا نگه دارد. اگر هر دو را به ردیفِ زیرنویس تبدیل کنیم، ممکن است معنایِ نقطه یا مرزِ بازه گم شود. در این صفحه یک TextGridِ فارسیِ اصیل را مینویسیم، با readerِ محدودِ همان قالب میخوانیم و برابریِ رفتوبرگشت را کنترل میکنیم؛ صوت یا همترازکننده اجرا نمیشود.
IntervalTier وTextTier چه فرقی دارند؟
IntervalTier برچسب را به فاصلهٔ میانِ xmin وxmax وصل میکند؛ TextTier برای یک زمانِ مشخص، number،یک mark دارد. در نمونهٔ ما دامنهٔ شبکه از۰تا۲ثانیه است. لایهٔ «واژه» دو بازهٔ۰تا۱و۱تا۲دارد و لایهٔ «رخداد» دو نقطه در۰٫۲۵و۱٫۵دارد. این زمانها ساختهٔ نویسندهاند و شاهدِ محلِ کلمه در ضبط نیستند.
برچسبِ بازهٔ اول «سلام "دوست"» است و بازهٔ دوم «پایان». نقطهها «شروع» و«تأکید» نام دارند. داشتنِ اسمِ «واژه» برای یک لایه ثابت نمیکند مرزهایش با گفتارِ واقعی منطبقاند. annotation میتواند از نظرِ ساختار سالم ولی از نظرِ محتوایی اشتباه باشد؛ آن دو کنترل را یکی نمیکنیم.
کوتیشنِ فارسی را چگونه حفظ کنیم؟
در قالبِ متنِ TextGrid، کوتیشنِ داخلِ رشته با دو کوتیشن نوشته میشود؛ serializer این تبدیل را انجام میدهد و reader دوباره یک کوتیشن برمیگرداند. فایلِ JSONِ تمرین هم مرجعِ برچسب و هم متنِ کاملِ TextGrid را دارد. مقدارِ JSON ممکن است escapeِ خودش را نشان دهد؛ آن escape را عینِ متنِ نهاییِ TextGrid کپی نکنید.
برای ساختِ فایل، مقدارِ full_textgrid_utf8 در خروجی را با UTF-8 در فایلِ جدا با پسوندِ TextGrid ذخیره کنید. کد هیچ فایلِ شخصی را بازنویسی نمیکند. UTF-16،متنِ چندخطیِ برچسب و همهٔ صورتهای معتبرِ فایل در این reader پیاده نشدهاند؛ نمونه، قراردادِ محدودِ خواندن و نوشتنِ خودمان است.
چه چیزهایی واقعاً رفتوبرگشت شدند؟
| جزء | مرجعِ اصیل | کنترلِ اجرا |
|---|---|---|
| دو لایه | بازهای،سپس نقطهای | نوع،نام ودامنه محفوظ |
| دو بازه | ۰تا۱و۱تا۲ | مرز و متن، از جمله کوتیشن |
| دو نقطه | ۰٫۲۵و۱٫۵ | عدد وmark محفوظ |
| متنِ کامل | خروجیِ serializer | serialize(parse(text)) عینِ آن |
کد برابریِ ساختارِ خواندهشده با مرجع، برابریِ متنِ بازنویسیشده و برگشتِ UTF-8 را واقعاً assert میکند. هشِ متنِ نهایی هم گزارش میشود. این شاهد برای همین قالب و داده است؛ سازگاری با همهٔ نسخههای Praat یا کیفیتِ alignment را از آن نتیجه نمیگیریم.
قواعدِ قوی و قراردادِ محلی را جدا کنیم
مدتِ بازه باید مثبت و بازههای پیوستهٔ این لایه مجاور باشند؛ نقطهها باید بهترتیبِ صعودیِ سخت قرار بگیرند. کد بازهٔ صفر، فاصلهٔ ایجادشده بین دو بازه و ترتیبِ معکوسِ نقطهها را واقعاً رد میکند. مقدارهای عددی باید متناهی و هر لایه حداکثر۱۰۰ورودی داشته باشد؛ سقف در نوشتن و خواندن یکسان کنترل میشود. دو زمانِ بسیار نزدیکِ۰٫۲۵۰۰۰۰۰۰۰۰۰۰۰۴و۰٫۲۵۰۰۰۰۰۰۰۰۰۰۰۵هم جدا و بدون گردکردنِ پنهانی رفتوبرگشت میشوند. نمونهٔ۱۰۰نقطه میگذرد و۱۰۱نقطه پیش از نوشتن رد میشود؛ این سقفِ خودِ تمرین است، نه محدودیتِ Praat.
ما علاوه بر آن، دامنهٔ هر دو لایه و پوششِ بازهها را دقیقاً برابرِ شبکه میخواهیم. مستندِ Praat این دسته از پوششها را در بحثِ invariantهای ضعیف از قواعدِ قوی جدا میکند؛ نقضِ قراردادِ سختِ محلیِ ما را حکمِ جهانیِ خراببودنِ همهٔ TextGridها نمینامیم. نسخهٔ عمومیِ Praat همچنین بعضی برچسبهای توضیحی را نادیده میگیرد؛ readerِ ما به ترتیب و نامِ خطوطِ canonical حساستر است.
قالبِ کوتاه، قالبِ خراب نیست
راهنمای رسمی، صورتِ کامل، کوتاه و میانی را توضیح میدهد. نمونهٔ short format در آزمونِ ما بهدلیلِ پشتیبانینشدن در full-reader رد میشود؛ نتیجه «این reader نمیخواند» است، نه «Praat نمیتواند بخواند». تبدیلِ قالب باید با ابزارِ مناسب و کنترلِ معنایِ لایهها انجام شود، نه تغییرِ سادهٔ پسوند.
اگر annotation را به سرویسِ دیگری تحویل میدهید، نوعِ لایه، مبدأِ زمان، دامنه، واحد و نسخهٔ متن را همراهش نگه دارید. یک نقطه را برای جاگرفتن در جدولِ زیرنویس به بازهٔ دلخواه تبدیل نکنید. هر تغییرِ قرارداد میتواند نیازمندِ تصمیمِ انسانی دربارهٔ معنایِ خروجی باشد.
ساختارِ سالم هنوز شاهدِ صوتی نیست
همترازی و بازشناسیِ گفتار دو مسئلهٔ متفاوتاند؛ این فایل فقط serializationِ annotation را بررسی کرده است. در مشخصاتِ WAV هم نرخ و مدتِ فایل را میبینید، اما آن بررسی محلِ واژهها را تعیین نمیکند.
برای درخواستِ خروجیِ زماندار از اپرانگار، نمونهٔ مجاز و نیازِ دقیقِ لایه و زمان را مطرح کنید. قالبِ تحویل باید با تیم مشخص شود؛ وجودِ TextGridِ آماده یا همترازیِ خودکار در محصول از این مثال نتیجه نمیشود. متنِ ساختگیِ تمرین برای بررسیِ قرارداد کافی است و به بارگذاریِ ضبطِ خصوصی نیاز ندارد.
فایل تمرین و منبع
کد کامل تمرین محلی و کنترلهای ورودی · دادهٔ ساختگی و خروجیِ اجرای واقعیِ تمرین
منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.