WER یک نام اشتباه، یک عدد اشتباه و یک «نه» جاافتاده را همانقدر جریمه میکند که یک «the» حذفشده را. یک سامانهٔ رونویسی را با این بسنجید که کدام خطاها را میگیرد و آیا میتوانید اصلاحهایش را ببینید، نه با عدد اصلیاش.
نرخ خطای کلمه (Word error rate یا WER) سنجهٔ استاندارد بازشناسی گفتار است. یک متن مرجع را که شخصی بازبینی کرده بگیرید، خروجی ماشین را کلمهبهکلمه با آن تطبیق دهید، و سه نوع اشتباه را بشمارید: جایگزینی (یک کلمهٔ اشتباه)، درج (کلمهای که گفته نشده) و حذف (کلمهای که جا افتاده). مجموع آنها را بر تعداد کلمات متن مرجع تقسیم کنید.
WER = (جایگزینی + درج + حذف) / تعداد کلمات متن مرجع
این تطبیق با چشم انجام نمیشود. دو متن با کمترین فاصلهٔ ویرایش (فاصلهٔ لونشتاین، اینبار روی کلمات نه حروف) همتراز میشوند: از میان همهٔ راههای جفتکردن خروجی با مرجع، امتیازدهنده آن را برمیگزیند که کمترین ویرایش را دارد و همان ویرایشها را میشمارد. از آنجا که درجها شمرده میشوند و مخرج طول متن مرجع است، WER میتواند از ۱۰۰ درصد بیشتر شود: مدلی که یک دقیقهٔ ساکت را با متن پر کند، بدتر از مدلی نمره میگیرد که هیچ ننویسد.
فرض کنید متن مرجع «we will meet Dr Okafor at nine on Thursday» باشد، که نُه کلمه دارد، و ماشین بنویسد «we will meet the doctor at nine on Tuesday». این سه جایگزینی (Dr، Okafor و Thursday) در برابر نُه کلمه است: WER برابر ۳۳ درصد. دو سوم کلمات درستاند، و با این حال در جلسهٔ اشتباه، در روز اشتباه هستید. اگر فقط «Thursday» اشتباه بود، نمره ۱۱ درصد بود. نسخهای که همهٔ کلمات درست است اما یک «um» اضافه دارد که کسی نگفته، باز هم ۱۱ درصد میگیرد، چون درج همانقدر جریمه دارد که جایگزینی.
پیش از شمارش، هر دو متن معمولاً نرمالسازی میشوند، و انتخابهایی که در این مرحله میشود نمره را دستکم بهاندازهٔ خود مدل جابهجا میکند. آیا «Dr» همان «Doctor» است؟ آیا «nine» همان «9» است؟ آیا حروف بزرگ و علامتگذاری شمرده میشوند؟ یک مقایسهٔ سختگیرانه، «Dr» را در برابر «Doctor» جایگزینی حساب میکند. بیشتر نمرههای منتشرشده همهچیز را کوچک میکنند، علامتگذاری را حذف میکنند و همهٔ عددها را به یک شکل درمیآورند، یا همه بهصورت کلمه یا همه بهصورت رقم، و بعد مقایسه میکنند. بنابراین عدد یک فروشنده بیسروصدا به نرمالکنندهٔ ناپیدا وابسته است. زبانهایی که بین کلماتشان فاصله نیست، مانند چینی، ژاپنی و تایلندی، مرز روشنی برای شمارش کلمه ندارند، پس با نرخ خطای نویسه (CER) سنجیده میشوند: همان فرمول، اما روی نویسهها.
دو نکته از این نتیجه میآید. نخست، WER پنج درصد یعنی یک کلمه از هر بیست کلمه، که در یک گفتار یکساعته به چند صد کلمه میرسد. برای مقیاس، مترجمان انسانی در گفتار محاورهای اغلب حدود ۴ تا ۵ درصد ذکر میشوند، و نتیجهٔ پرارجاع سال 2017 روی پیکرهٔ تماس تلفنی Switchboard، ماشین را حدود 5.1 درصد نشان داد؛ هرچند هر دو عدد به صوت و قواعد امتیازدهی بستگی دارند. دوم، عدد کاملاً به صوت آزمون وابسته است: گفتار خواندنیِ تمیز یک عدد میدهد و یک پنل پرسروصدا با لهجهها و همپوشانی حرفزدنها عددی بسیار متفاوت. یک WER اصلی بیش از آنکه سامانهٔ فروشنده را توصیف کند، مجموعهآزمون فروشنده را توصیف میکند.
این شمارش است. آنچه نادیده میماند، هزینهٔ هر خطا برای کسی است که متن را میخواند.
WER به هر کلمه وزن یکسان میدهد. خواننده اینطور نیست:
هر یک از اینها در ستون WER یک یا دو خطاست. در ستون خواننده، از هیچ تا یک جلسهٔ دیگر در روزی دیگر فرق دارند. پس پرسش فقط این نیست که «نرخ خطا چقدر است»، بلکه این است که «چه نوع خطاهایی، و چه چیزی آنها را میگیرد».
چند لایه خطاهایی را میگیرند که بازشناسی اشتباه میکند، و هر تغییری ثبت میشود تا بشود آن را بازرسی و برگرداند. در رونویسی زنده این اتفاق در همان لحظهای میافتد که متن میرسد: هر خط ابتدا بهصورت یک پیشنویس نشان داده میشود که هنوز ممکن است تغییر کند، و بعد نهایی میشود (در تأخیر ترجمهٔ زنده، توضیح دادهشده علتش آمده است).
بعضی اشتباهها با صدا جور است اما با جمله جور نیست: «their» در جایی که جمله «there» میخواهد. اینها را میشود از روی بافت گرفت، و اصلاح بهصورت یک بهروزرسانی قابلدیدن به خواننده میرسد (در API بهصورت transcript.amended)، نه بازنویسی بیصدا. بافت برای کلماتی که جمله میتواند پیشبینیشان کند خوب است. برای کلماتی که نمیتواند پیشبینی کند، بیکمک است.
نامها و اصطلاحهای فنی خطاهایی هستند که بافت نمیتواند درستشان کند، چون یک نام اغلب فقط یک بار میآید و چیزی در اطرافش نیست که از روی آن حدسش بزنیم. یک متن راهنما این مشکل را حل میکند: پیش از شروع، گفتار، اسلایدها یا فهرستی از نامها و اصطلاحها را به سامانه بدهید، و واژههای آن بر آنچه موتور اشتباه شنیده است اولویت میگیرند. در حین ضبط، متن راهنما مثل یک تلهپرامپتر همراه رونویسی حرکت میکند تا میزبان ببیند موتور تا کجا رسیده است. متن راهنما کلماتی را پوشش میدهد که میشود پیشبینیشان کرد؛ صدای نویزی و لهجهها کلماتی را تولید میکنند که نمیشود پیشبینیشان کرد.
بعضی خطاها را فقط شخصی که در اتاق است میبیند. اصلاحهای دستی به میزبان اجازه میدهد هر کلمه یا خط را هنگام زنده بودن رونویسی بازنویسی کند، و هر شنوندهای که در پخش است تغییر را میبیند. سامانه میزبان را به احتمالیترین موردها راهنمایی میکند: کلماتی که موتور در آنها مطمئن نبوده رنگی و زیرخطدار میشوند، و میزبان میتواند بخشهای نامطمئن را یکییکی طی کند، بهجای آنکه کل متن را دوباره بخواند. از طریق API، GET /v1/recordings/{id}/corrections اصلاحهای یک ضبط را فهرست میکند و POST /v1/corrections/{id}/revert یکی از آنها را برمیگرداند؛ به مرجع API مراجعه کنید. با این حال، حتی شخصی که در اتاق است نمیتواند خطی را اصلاح کند که هیچکس نتوانسته آن را بشنود.
لایهٔ آخر این را میپذیرد که بعضی صداها قابل بازیابی نیستند. وقتی امتیاز یک خط از آستانهٔ اطمینان رونویسی پایینتر بیفتد (confidence.hideBelow، که بهصورت پیشفرض 0.60 است)، شنوندگان بهجای یک حدس، عبارت «صدا نامفهوم است» را میبینند و آن خط هرگز با صدای بلند خوانده نمیشود. خواننده یک خط را از دست میدهد، اما یک خط ساختگی به دست نمیآورد.
همان پرسشهایی که این لایهها را شکل دادند، برای هر ادعای دقتی از هر فروشندهای کار میکنند، از جمله ادعای خودِ ما.
فهرست کوتاهی برای خواندن هر ادعای دقت:
VocalStack عدد داخلی WER منتشر نمیکند، به همان دلیل اول: آن عدد مجموعهآزمون ما را توصیف میکند، نه صوت شما. ما دقت را بهطور پیوسته اندازه میگیریم. وقتی سامانههای دیگر را مقایسه میکنیم، از معیارهای مستقل منتشرشده و عددهای منتشرشدهٔ خود فروشندگان استفاده میکنیم، نه آزمونهای خصوصی. بقیه را باید صوت خودتان تعیین کند.