یک متن رونویسی برچسبدار به هر دو پرسش باید درست پاسخ دهد. و چون برچسبها روی کلمات قرار میگیرند، برچسب اشتباه را میتوان بدون دست زدن به متن اصلاح کرد.
متن رونویسی یک جلسه به دو پرسش همزمان پاسخ میدهد: چه گفته شد و چه کسی آن را گفت. خواننده فقط یک کار میبیند، یعنی یک نام کنار هر خط. اما زیر این کار دو مسئله است که هر کدام ورودیها و شیوههای شکست خودشان را دارند.
بازشناسی گفتار به کلمات گوش میدهد. صدا را به متن تبدیل میکند و، اگر خوب انجام شود، برای هر کلمه زمان شروع و پایان هم میدهد. برایش مهم نیست که صدا وسط یک جمله عوض شده باشد؛ کارش این است که جمله را درست بنویسد.
تشخیص گوینده (speaker diarization) به صداها گوش میدهد و هیچ کلمهای را نمیشناسد. کارش تقسیم زمان به نوبتها و تشخیص این است که کدام نوبتها به یک نفر تعلق دارند: گوینده 1، گوینده 2. این واژه از «diary» (دفتر خاطرات) گرفته شده و تصویر خوبی از خروجی آن است: گزارشی از اینکه چه کسی و کی کلام را در دست داشته است.
سه اصطلاح نزدیک به آن هم گاهی با آن قاطی میشوند. تشخیص گوینده میگوید چه کسی کی حرف زده، بدون اینکه بداند آن شخص کیست. شناسایی گوینده (speaker identification) میگوید یک بخش از گفتار متعلق به کدام فرد شناختهشده است، با انتخاب از میان صداهای ثبتشده. تأیید گوینده (speaker verification) به یک پرسش بله یا خیر پاسخ میدهد: آیا این صدا واقعاً از آنِ فرد X است؟ ادعاهای فروشندگان وقتی آسانتر خوانده میشوند که این سه از هم جدا شوند، چون «برچسب گوینده» میتواند از یک حدس تقریبی برای مرز نوبتها تا نامهایی که از یک ضبط به ضبط بعدی همراه یک فرد میمانند، هر چیزی باشد. برای دیدن آنچه این برچسبها میتوانند و نمیتوانند تضمین کنند، باید درون تشخیصدهنده را نگاه کرد.
بیشتر سیستمهای تشخیص گوینده در سه مرحله کار میکنند که هیچکدام به زبان وابسته نیستند.
هر مرحله بهتنهایی میتواند خطا کند. گویندهی آرام نادیده گرفته میشود. دو صدای شبیه به هم یکی میشوند. فردی که از آرامش به هیجان میرسد به دو گوینده تقسیم میشود.
این حوزه کل این فرایند را با نرخ خطای تشخیص گوینده (DER) میسنجد: سهمی از زمان گفتار که یا از قلم افتاده، یا به اشتباه گفتار تشخیص داده شده، یا به گویندهی اشتباه نسبت داده شده است، معمولاً با یک «حاشیهی بخشش» حدود یکچهارم ثانیه در اطراف هر مرز. این حاشیه به این دلیل است که هیچکس، نه انسان و نه ماشین، نمیتواند تغییر گوینده را به میلیثانیه تعیین کند. این تساهل برای سنجش یک تشخیصدهندهی جداگانه کافی است. اما برای یک متن رونویسی کافی نیست، چون مرزی که یکچهارم ثانیه جابهجا باشد روی یک کلمه میافتد.
اینجاست که دو مسئله به هم میرسند و کیفیت یک متن برچسبدار تعیین میشود. تشخیصدهندهی گوینده مرزهایش را با مقداری نادقتی تعیین میکند، که اغلب کسری از ثانیه به هر طرف است. بازشناس کلمات را روی همان محور زمانی قرار میدهد. اگر این دو را ساده روی هم بیندازیم، مرزی داخل یک کلمه میافتد و نیمی از «فردا» متعلق به گوینده 1 و نیم دیگرش متعلق به گوینده 2 میشود.
برچسبها هم ممکن است مدتی پیش از درست شدن، غلط باشند. تشخیصدهنده هرچه صدای بیشتری شنیده باشد در گروههایش مطمئنتر میشود، پس یک برچسب اولیه ممکن است با معیارهای آنچه بعداً میآید غلط به نظر برسد. در یک متن زنده ممکن است برچسب پس از نمایش خط اصلاح شود: API بلادرنگ VocalStack یک فریم transcript.amended میفرستد که متن یا گویندهی یک خط تثبیتشده را سر جایش اصلاح میکند، بنابراین خواننده اصلاح را میبیند، نه یک تناقض.
حتی یک برچسب کاملاً درستجا و پایدار هم هنوز فقط یک عدد است. عدد برای دنبال کردن یک گفتگو کافی است؛ اما آنچه مردم میخواهند بخوانند یک نام است.
برچسب به دو روش به نام تبدیل میشود و این دو روش روی هم بنا شدهاند.
روش اول نامگذاری درون یک ضبط است. هر گویندهای که رونویسی پیدا کند یک اندیس میگیرد که از 0 شمرده میشود. هر کس که دسترسی داشته باشد میتواند در طول ضبط یا پس از آن به هر گوینده نام بدهد. نام یک لایه روی کلمات است، پس میتوان آن را تنظیم، تغییر یا پاک کرد بدون اینکه به متن دست بزنیم. از طریق API این کار با PUT /v1/recordings/{id}/speakers/{idx} و یک فیلد name انجام میشود؛ نام خالی، نام را پاک میکند. خطی که speaker آن -1 است برچسبی ندارد، یا چون برچسبها خاموش بودهاند، یا در یک پیشنویس زنده هنوز به کسی نسبت داده نشده است.
روش دوم شناسایی بین ضبطها است، همان مسئلهی شناسایی از بخش اول. تشخیصدهنده فقط میتواند بگوید دو صدا متفاوتاند، نه اینکه هر کدام چه کسی هستند. برای رسیدن از «متفاوت» به «این آنا است»، سیستم به یک مرجع نیاز دارد: یک صدای ذخیرهشده که از ضبطی از همان فرد گرفته شده باشد. سی ثانیه گفتار تمیز حداقل است و چند دقیقه بهتر. نمونه باید شبیه ضبطهایی باشد که قرار است با آن تطبیق داده شود: همان فرد با میکروفون لپتاپ و با میکروفون صحنه، برای ماشین ممکن است کمتر از دو غریبهای که با یک میکروفون ضبط شدهاند شبیه به هم به نظر برسند. وقتی صدایی ذخیره شد، هر گویندهای که یک رونویسی میشنود با آن مقایسه میشود و اگر تطابقی پیدا شود، نام به متن منتقل میشود. در VocalStack این بخش زیر Voices قرار دارد؛ رونویسی فایلها و جلسات زندهی داشبورد صداهای ذخیرهشدهی شما را خودکار تطبیق میدهند، و یک جلسهی API بلادرنگ فقط صداهایی را میشناسد که در identifyVoices فهرست کردهاید.
یک صدای ذخیرهشده دادهی زیستی است: میتواند یک فرد را در هر ضبطی بازشناسد، و در VocalStack همچنین مانند یک صدای شبیهسازیشده عمل میکند که میتواند خطوط او را با صدای بلند بخواند. داشبورد پیش از ذخیرهی یک صدا از شما تأیید میخواهد که اجازهی آن فرد را دارید، و هر زمان میتوان صدا را حذف کرد.
همهی اینها فرض میکند که اصلاً بخواهید برچسب داشته باشید. اغلب نمیخواهید.
یک نفر که سخنرانی میکند نیازی ندارد که جلوی هر خط «گوینده 1» بیاید. مخاطب از قبل میداند چه کسی میکروفون را در دست دارد. پس تنظیم برچسب گوینده سه وضعیت دارد و این سه در جلسهی بلادرنگ، پخش، رونویسی و ضبط یکساناند.
auto). خطوط وقتی برچسب گوینده میگیرند که بیش از یک صدا شنیده شود؛ ضبط تکگوینده متن ساده میماند، و صدای دومی که دیر وارد میشود همچنان تشخیص داده میشود. فرم جدید رونویسی زنده در داشبورد از این وضعیت شروع میکند.یک فایل آپلودی همان گزینهی speakerLabels را میگیرد و API بلادرنگ اجازه میدهد این تنظیم را وسط جریان عوض کنید؛ جزئیات در مرجع API آمده است. جداسازی و نامگذاری گوینده هرگز به صورتحساب اضافه نمیشود (صفحهی قیمتگذاری جدول نرخها را دارد)، پس انتخاب دربارهی آن است که خواننده چه ببیند، نه اینکه چه هزینهای دارد.
وقتی تشخیص گوینده روشن باشد خوب است، اما جادو نیست. دو وضعیت هنوز از آن بیرون میمانند.
اولی همپوشانی است. وقتی دو نفر همزمان حرف میزنند، یک بخش از صدا دو صدا را حمل میکند. تشخیصدهندههای آگاه به همپوشانی در پژوهش و به تدریج در محصولات وجود دارند: برای مثال diarization عصبی انتها به انتها (EEND) «چه کسی حرف میزند» را به مجموعهای از پرسشهای همزمان بله یا خیر تبدیل میکند، نه به یک پاسخ واحد. با این حال بیشتر سیستمهای تولیدی هنوز برای هر بخش فقط یک گوینده در نظر میگیرند، و بازشناس روی آنها یک صدا را در هر لحظه رونویسی میکند. همپوشانی گفتار در یک بحث پرحرارت سختترین صدا در این حوزه است و برچسبهای هر فروشنده در آنجا بدتر میشوند. و این همان بخشی است که همه بعداً میخواهند نقلش کنند.
دومی، صداهای بسیار شبیه به هم است. خواهر و برادر ممکن است بردارهایی بسازند که آنقدر به هم نزدیکاند که نتوان بهطور قابلاعتماد جدایشان کرد، بهویژه وقتی یک ساعت نوبتهای کوتاه با هم عوض میکنند. صدای تلفن این را برای همه بدتر میکند: یک خط باریکباند با نرخ 8 کیلوهرتز نمونهبرداری میشود و چیزی بالاتر از حدود 3.4 کیلوهرتز را منتقل نمیکند، با این حال بخش زیادی از آنچه یک صدا را از صدای دیگر متمایز میکند بالاتر از این حد قرار دارد. دو نفر پشت یک خط تلفن برای تشخیصدهنده بیشتر از آنچه برای شما شبیهاند، به هم شبیه به نظر میرسند.
عملیترین راهحل برای هر دو پیش از هر مدلی است: به هر فرد میکروفون جداگانه بدهید. با یک کانال برای هر گوینده، تشخیص گوینده به این کاهش مییابد که کدام کانال بلندتر است؛ همپوشانی به دو مسیر تمیز تبدیل میشود، نه یک مسیر درهم، و از بردارها دیگر خواسته نمیشود کار سخت را انجام دهند. یک میکروفون رومیزی تکی ارزانتر است و تقریباً همیشه همان چیزی است که در اختیار دارید، و به همین دلیل بقیهی این مقاله وجود دارد.
هیچکدام از این محدودیتها لازم نیست بیکموکاست به خواننده برسد. چون برچسبها لایهای روی کلماتاند، برچسب اشتباه هرگز متن را از بین نمیبرد: نام گویندهها را میتوان در هر لحظه روی یک ضبط تنظیم یا پاک کرد، و در یک رونویسی زنده میزبان میتواند هر کلمه یا خطی را در حین اجرا بازنویسی کند، و هر اصلاح علامت میخورد و قابل برگشت است.
برای بخش کلمات، آنچه نرخ خطای کلمه میسنجد و چه چیزهایی را از قلم میاندازد لایههای اصلاح را به تفصیل توضیح میدهد. WER برای بازشناس همان است که DER برای تشخیصدهنده است، و یک متن رونویسی برای درست بودن به هر دو نیاز دارد که پایین باشند.