در نسخه بتا تلگرام برای macOS، قابلیت اصلاح متن دیکته‌شده با ویرایشگر هوش مصنوعی به دیکته کردن (تبدیل گفتار به متن در فیلد پیام) اضافه شده است. در بیلد 13.1.0.283431 مورخ 1 نوامبر، یک دکمه «Enhance» با گزینه‌های «Fix Grammar»، «Enhance Style» و «AI Editor…»، یک سوئیچ برای «Automatic Punctuation» و تنظیماتی برای عملکرد ⌘R در فیلد پیام (دیکته کردن متن یا ضبط پیام صوتی) وجود دارد. خود قابلیت دیکته کردن در کد منبع باز کلاینت موجود است، اما تنها در بیلد‌های دیباگ فعال است؛ در حالی که اصلاحات هوش مصنوعی اصلاً در کد منبع باز وجود ندارد. این قابلیت برای کاربرانی است که از Mac استفاده می‌کنند. در کد منبع باز، تشخیص گفتار توسط تشخیص‌دهنده داخلی Apple انجام می‌شود، اما در نسخه بتا یک مسیر جایگزین از طریق سرورهای Telegram اضافه شده است – با یک محدودیت رایگان که پس از آن نیاز به Premium است.

قابلیت‌های جدید در نسخه بتا

قابلیت دیکته کردن در کلاینت macOS به عنوان ادامه‌ای برای ضبط پیام صوتی طراحی شده است: با فشار دادن دکمه ضبط، ماوس را رها نکنید و به سمت چپ بکشید – راهنمای پایین صفحه دقیقاً همین را می‌نویسد: «← Swipe to dictate». کشیدن به سمت چپ باید بیشتر از کشیدن به سمت بالا باشد، در غیر این صورت ضبط فقط قفل می‌شود. به جای پیام صوتی، گفتار به متن تبدیل می‌شود و خود ضبط حذف می‌گردد. در طول تشخیص، در پایین صفحه نوشته می‌شود «Transcribing. Click anywhere to stop.»؛ متن آماده شده در کد منبع باز در یک پنل جداگانه نمایش داده می‌شود که از آنجا می‌توان آن را بلافاصله ارسال کرد یا به انتهای فیلد پیام اضافه و ویرایش نمود. زبان را می‌توان به صورت دستی انتخاب کرد یا روی «Automatic» گذاشت. درباره دیکته کردن در بتای 283318 قبلاً در 15 اکتبر نوشته شده بود؛ در Android نیز چنین رونویسی قبل از ارسال نمایش داده شده بود و سپس حذف شد.

قابلیت جدید در نسخه‌های بتا از 24 اکتبر (بیلد 283377) – اصلاح متن دیکته‌شده است. رشته‌های بیلد 283431:

رشتهتوضیح
«Enhance»دکمه‌ای کنار متن دیکته‌شده؛ راهنمای آن – «Fix punctuation and grammar in the dictated text»
«Fix Grammar»اصلاح نقطه‌گذاری و گرامر
«Enhance Style»بازنویسی متن در یکی از سبک‌ها
«AI Editor…»باز کردن ویرایشگر کامل هوش مصنوعی
«Enhancing…»متن در حال پردازش
«Automatic Punctuation»سوئیچ نقطه‌گذاری خودکار
«What ⌘R does in the message field. Automatic dictates when the field has text and records a message when it is empty.»تنظیمات ⌘R: در حالت «Automatic»، اگر فیلد حاوی متن باشد، این ترکیب دیکته می‌کند و اگر فیلد خالی باشد، پیام صوتی ضبط می‌کند.
«The language you speak while dictating. Automatic uses this chat's language and your system languages.»زبان دیکته: «Automatic» از زبان چت و زبان‌های سیستم شما استفاده می‌کند.

کلاینت سبک انتخاب شده را به خاطر می‌سپارد (kChatDictationEnhanceStyle). با توجه به گزینه «AI Editor…»، این‌ها همان سبک‌هایی هستند که در ویرایشگر هوش مصنوعی فیلد پیام وجود دارد و Telegram در ماه آوریل منتشر کرد: اصلاح گرامر، ترجمه، بازنویسی در سبک‌های «Formal»، «Short»، «Zen»، «Corp» و غیره. توضیحات مربوط به آن در پست رسمی این است که قابلیت‌های هوش مصنوعی بر روی شبکه Cocoon کار می‌کنند.

اینکه آیا دکمه در حال حاضر قابل مشاهده است یا خیر، از روی بیلد مشخص نیست. در کد منبع باز، دیکته کردن در بیلد‌های بتا و ریلیز با شرط کامپایل غیرفعال است و فقط در بیلد‌های دیباگ کار می‌کند؛ اینکه آیا در 283431 فعال است یا خیر، از باینری مشخص نیست، اگرچه رشته‌ها و کلاس‌ها در جای خود قرار دارند.

چه باید کرد

  • کجا جستجو کنیم. نسخه بتا از طریق به‌روزرسانی خودکار نسخه بتا Telegram برای macOS دریافت می‌شود؛ لیست بیلد‌ها در فید به‌روزرسانی‌ها موجود است. در نسخه پایدار 13.1.0 (283357) مورخ 20 اکتبر، موتور دیکته کردن از قبل وجود دارد، اما رشته‌های «Enhance»، «Automatic Punctuation» و تنظیمات ⌘R وجود ندارند و راهنمای هنگام ضبط «← Swipe to transcribe» است.
  • دسترسی بدهید. دیکته کردن به دو مجوز macOS نیاز دارد: System Settings → Privacy & Security → Microphone و در همان بخش Speech Recognition. بدون دومی، کلاینت پیام «Telegram needs Speech Recognition access to turn your voice into text» را نمایش می‌دهد.
  • زبان را بررسی کنید. اگر هیچ یک از زبان‌های سیستم توسط تشخیص‌دهنده Apple پشتیبانی نشود، دیکته کردن پاسخ می‌دهد «Dictation is not available for your current input language.» می‌توانید زبان را به صورت دستی به جای «Automatic» انتخاب کنید.
  • ⌘R را به خاطر بسپارید. در حال حاضر، ⌘R در Telegram برای macOS ضبط پیام صوتی یا ویدیویی را آغاز می‌کند؛ در نسخه بتا، این ترکیب دارای گزینه‌ای خواهد بود و در حالت «Automatic»، اگر فیلد خالی نباشد، دیکته کردن را آغاز می‌کند، نه ضبط.

نحوه تشخیص گفتار

تشخیص گفتار در کد منبع باز کاملاً بر عهده Apple است. در macOS 26، کلاینت از موتور جدید SpeechAnalyzer استفاده می‌کند، اگر مدل زبان از قبل نصب شده باشد؛ در غیر این صورت، شروع به دانلود آن در پس‌زمینه می‌کند و این دیکته کردن را به SFSpeechRecognizer قبلی واگذار می‌کند. در سیستم‌های قدیمی‌تر، فقط SFSpeechRecognizer کار می‌کند. درخواست به عنوان دیکته کردن علامت‌گذاری می‌شود و اگر برای زبان مدل روی دستگاه وجود داشته باشد، کلاینت فقط تشخیص را روی Mac درخواست می‌کند؛ در macOS 13 و جدیدتر، نقطه‌گذاری توسط خود تشخیص‌دهنده انجام می‌شود.

در حالت «Automatic»، زبان از قبل حدس زده نمی‌شود: کلاینت از بین زبان‌های سیستم، حداکثر دو زبانی را که تشخیص‌دهنده Apple می‌شناسد انتخاب می‌کند و هر دو را همزمان روی یک صدا اجرا می‌کند؛ دومی فقط در صورتی که مدل آن بدون شبکه کار کند. برای هر کاندید یک امتیاز محاسبه می‌شود – نیمی از پایداری متن بین به‌روزرسانی‌ها، نیمی از اطمینان تشخیص‌دهنده، به علاوه یک امتیاز کوچک برای زبان اول. پس از 1.5 ثانیه از اولین کلمات تشخیص‌داده‌شده، کاندیدی که 0.12 از دیگری جلوتر باشد، برنده می‌شود و پس از 3 ثانیه، رهبر در هر صورت برنده است؛ کاندید بازنده متوقف می‌شود و صدا به یکی از آن‌ها می‌رود. در نسخه بتا، زبان خود چت به این لیست اضافه شده است.

در چت‌های مخفی، کد منبع باز فقط تشخیص‌دهنده‌هایی را اجرا می‌کند که روی دستگاه کار می‌کنند. اگر برای زبانی چنین مدلی وجود نداشته باشد، دیکته کردن در چت مخفی آغاز نمی‌شود. در یک چت معمولی، زبان اول می‌تواند بدون مدل محلی نیز تشخیص داده شود – در این صورت، ضبط به سرورهای Apple ارسال می‌شود، مانند دیکته کردن سیستمی macOS.

مسیر جایگزین از طریق سرورهای Telegram

در نسخه بتا، رونویسی سرور Telegram نیز به این قابلیت اضافه شده است. در لاگ کلاینت، رشته‌های «server fallback selected» و «nativeAvailable» وجود دارد و در باینری، متد messages.transcribeAudioFile دیده می‌شود: این متد یک فایل صوتی آپلود شده را می‌پذیرد، نه یک پیام، و متن را به عنوان پاسخ رونویسی معمولی یا بعداً، با به‌روزرسانی updateTranscribedAudioFile برمی‌گرداند. متد قبلی messages.transcribeAudio فقط پیام صوتی را رونویسی می‌کند که از قبل در چت قرار دارد – ضبط نشده شماره پیام ندارد. متد جدید و به‌روزرسانی در طرح API که از بتای macOS استخراج شده، موجود است، اما در مستندات منتشر شده نیست.

محدودیت‌ها از روی متن خطاهای بتا قابل مشاهده است: ضبط‌های طولانی‌تر از 30 دقیقه یا بزرگ‌تر از 1 مگابایت رونویسی نمی‌شوند و پس از اتمام رونویسی‌های رایگان، پیام «Your free transcriptions have been used. Telegram Premium is required to transcribe more audio.» ظاهر می‌شود. در نسخه پایدار 13.1.0، نه این متد و نه این رشته‌ها وجود ندارند. اینکه نسخه بتا چگونه بین Apple و سرور Telegram انتخاب می‌کند و در چت‌های مخفی چه می‌کند، از روی بیلد مشخص نیست.

نحوه بررسی

  • کد منبع باز کلاینت: موتور دیکته کردن (انتخاب زبان‌ها، امتیازدهی، آستانه‌های 1.5 و 3 ثانیه، requiresOnDeviceRecognition) و کنترل‌کننده، که در آن بررسی isSupported فقط در بیلد دیباگ «بله» برمی‌گرداند و در چت‌های مخفی نیاز به تشخیص روی دستگاه دارد. هر دو فایل در 23 اکتبر با ادغام شاخه ریلیز 13.1 به کد منبع باز اضافه شدند.
  • باینری‌ها از فید‌های به‌روزرسانی: بتای 283431 و پایدار 283357. کلاس‌های ChatDictationEnhancer، ChatDictationEnhanceView، کلیدهای kChatDictationAutomaticPunctuation و kChatDictationShortcut و رشته‌های جدول فقط در بتا وجود دارند؛ در نسخه پایدار موتور (ChatDictationSession، ChatDictationAnalyzerRecognizer) و هشت رشته دیکته کردن وجود دارد، اما اصلاحات نیست. در فایل رشته‌های کد منبع باز نیز گزینه‌های «Enhance» وجود ندارد.
  • بخش سرور – رشته‌های باینری 283431: AudioFileTranscription، «upload complete, calling transcribeAudioFile»، updateTranscribedAudioFile و متن خطاها؛ در 283357 این‌ها وجود ندارند.
  • اولین ظهور ChatDictationEnhancer – تفاوت باینری بتای 283377، 24 اکتبر.