import{s as Nl,o as Fl}from"../chunks/scheduler.cd324960.js";import{S as zl,i as Yl,e as p,s as a,c as r,q as Ls,H as Se,h as Al,a as m,d as e,b as n,f as tt,g as c,j as i,r as Ps,u as He,k as Vl,l as v,m as l,n as o,t as y,o as d,p as M}from"../chunks/index.d5c3adcc.js";import{T as kl}from"../chunks/Tip.889bec11.js";import{C as Ql,H as Qs,E as Ll}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.14d935fa.js";import{C as w}from"../chunks/CodeBlock.77426a60.js";function Pl(qs){let h;return{c(){h=Ls(`Если вы столкнетесь с проблемой аутентификации при загрузке набора данных, убедитесь, что вы приняли условия использования набора данных на
    Hub Hugging Face по следующей ссылке: https://huggingface.co/datasets/mozilla-foundation/common_voice_13_0`)},l(u){h=Ps(u,`Если вы столкнетесь с проблемой аутентификации при загрузке набора данных, убедитесь, что вы приняли условия использования набора данных на
    Hub Hugging Face по следующей ссылке: https://huggingface.co/datasets/mozilla-foundation/common_voice_13_0`)},m(u,U){l(u,h,U)},d(u){u&&e(h)}}}function ql(qs){let h;return{c(){h=Ls('Если вы столкнетесь с ошибкой "Out-of-Memory" (OOM) CUDA при выполнении вышеуказанной ячейки, уменьшайте размер пакета (`batch_size`)\n    последовательно вдвое, пока не найдете такой размер пакета, который подходит для вашего устройства.')},l(u){h=Ps(u,'Если вы столкнетесь с ошибкой "Out-of-Memory" (OOM) CUDA при выполнении вышеуказанной ячейки, уменьшайте размер пакета (`batch_size`)\n    последовательно вдвое, пока не найдете такой размер пакета, который подходит для вашего устройства.')},m(u,U){l(u,h,U)},d(u){u&&e(h)}}}function Ol(qs){let h,u,U,et,j,lt,g,at,C,Xe=`Если вы знакомы с <a href="https://en.wikipedia.org/wiki/Levenshtein_distance" rel="nofollow">расстоянием Левенштейна</a> из NLP то метрики для оценки
систем распознавания речи будут вам знакомы! Не волнуйтесь, если нет, мы рассмотрим объяснения от начала до конца, чтобы
убедиться, что вы знаете различные метрики и понимаете, что они означают.`,nt,$,Ne=`При оценке систем распознавания речи мы сравниваем предсказания системы с транскрипцией целевого текста, аннотируя все имеющиеся ошибки.
Мы относим эти ошибки к одной из трех категорий:`,pt,E,Fe="<li>Замены (S - от англ. “Substitutions”): когда мы транскрибируем <strong>неправильное слово</strong> в нашем предсказании (“sit” вместо “sat”)</li> <li>Вставки (I - от англ. “Insertions”): когда мы добавляем <strong>дополнительное слово</strong> в наше предсказание</li> <li>Удаления (D - от англ. “Deletions”): когда мы <strong>удаляем слово</strong> в нашем предсказании</li>",mt,I,ze=`Эти категории ошибок одинаковы для всех метрик распознавания речи. Различается лишь уровень, на котором мы вычисляем эти ошибки: мы
можем вычислять их либо на уровне <em>слова</em>, либо на уровне <em>символа</em>.`,it,R,Ye="Для каждого из определений метрики мы будем использовать свой пример. Ниже мы видим <em>истину</em> или <em>эталонную</em> (<em>reference</em>) текстовую последовательность:",rt,W,ct,x,Ae="И предсказанную последовательность от системы распознавания речи, которую мы пытаемся оценить:",ot,B,yt,Z,Qe=`Видно, что предсказание довольно близко, но некоторые слова не совсем верны. Оценим это предсказание в сравнении с эталоном для трех
наиболее популярных метрик распознавания речи и посмотрим, какие цифры мы получим для каждой из них.`,dt,_,Mt,G,Le=`Метрика <em>word error rate (WER)</em> является “фактической” метрикой для распознавания речи. Она рассчитывает замены, вставки и удаления
на <em>уровне слова</em>. Это означает, что ошибки аннотируются на уровне каждого слова. Возьмем наш пример:`,ht,V,Pe="<thead><tr><th>Эталон:</th> <th>the</th> <th>cat</th> <th>sat</th> <th>on</th> <th>the</th> <th>mat</th></tr></thead> <tbody><tr><td>Предсказание:</td> <td>the</td> <td>cat</td> <td><strong>sit</strong></td> <td>on</td> <td>the</td> <td></td></tr> <tr><td>Метка:</td> <td>✅</td> <td>✅</td> <td>S</td> <td>✅</td> <td>✅</td> <td>D</td></tr></tbody>",wt,k,qe="Здесь:",ut,S,Oe="<li>1 замена (S) (“sit” вместо “sat”)</li> <li>0 вставок</li> <li>1 удаление (D) (“mat” отсутствует)</li>",ft,H,Be,Tt,Sl=`<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mtable rowspacing="0.25em" columnalign="right left" columnspacing="0em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mi>W</mi><mi>E</mi><mi>R</mi></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><mfrac><mrow><mi>S</mi><mo>+</mo><mi>I</mi><mo>+</mo><mi>D</mi></mrow><mi>N</mi></mfrac></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><mfrac><mrow><mn>1</mn><mo>+</mo><mn>0</mn><mo>+</mo><mn>1</mn></mrow><mn>6</mn></mfrac></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><mn>0.333</mn></mrow></mstyle></mtd></mtr></mtable><annotation encoding="application/x-tex">
\\begin{aligned}
WER &amp;= \\frac{S + I + D}{N} \\\\
&amp;= \\frac{1 + 0 + 1}{6} \\\\
&amp;= 0.333
\\end{aligned}
</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:6.1538em;vertical-align:-2.8269em;"></span><span class="mord"><span class="mtable"><span class="col-align-r"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:3.3269em;"><span style="top:-5.3269em;"><span class="pstrut" style="height:3.3603em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.13889em;">W</span><span class="mord mathnormal" style="margin-right:0.00773em;">ER</span></span></span><span style="top:-3.0194em;"><span class="pstrut" style="height:3.3603em;"></span><span class="mord"></span></span><span style="top:-1.1934em;"><span class="pstrut" style="height:3.3603em;"></span><span class="mord"></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:2.8269em;"><span></span></span></span></span></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:3.3269em;"><span style="top:-5.3269em;"><span class="pstrut" style="height:3.3603em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3603em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.10903em;">N</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.07847em;">I</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.02778em;">D</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-3.0194em;"><span class="pstrut" style="height:3.3603em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">6</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord">0</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-1.1934em;"><span class="pstrut" style="height:3.3603em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">0.333</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:2.8269em;"><span></span></span></span></span></span></span></span></span></span></span></span>`,Ut,X,De=`Отлично! Итак, WER равен 0,333, или 33,3%. Обратите внимание, что в слове “sit” ошибочным является только один символ,
но все слово помечено как неправильное. Это является отличительной особенностью WER: орфографические ошибки сильно штрафуются,
какими бы незначительными они ни были.`,Jt,N,Ke=`WER определяется так: чем меньше WER, тем меньше ошибок в прогнозе, поэтому для идеальной системы распознавания речи WER
был бы равен нулю (отсутствие ошибок).`,bt,F,sl=`Рассмотрим, как можно вычислить WER с помощью 🤗 Evaluate. Для вычисления метрики WER нам понадобятся два пакета: 🤗 Evaluate
для интерфейса API и JIWER для выполнения тяжелой работы по вычислению:`,vt,z,jt,Y,tl="Отлично! Теперь мы можем загрузить метрику WER и вычислить показатель для нашего примера:",gt,A,Ct,Q,el="<strong>Print Output:</strong>",$t,L,Et,P,ll="0,33, или 33,3%, как и ожидалось! Теперь мы знаем, как именно производится расчет WER.",It,q,al=`А теперь кое-что, что сбивает с толку… Как Вы думаете, какова верхняя граница WER? Вы ожидаете, что он будет равен 1 или
100%, верно? Так как WER - это отношение количества ошибок к количеству слов (N), то верхнего предела для WER не существует!
Возьмем пример, когда мы предсказали 10 слов, а у целевой фразы только 2 слова. Если бы все наши прогнозы оказались неверными
(10 ошибок), то WER был бы равен 10 / 2 = 5, или 500%! Об этом следует помнить, если вы обучаете ASR-систему и видите, что WER
превышает 100%. Хотя если вы видите это, то, скорее всего, что-то пошло не так… 😅`,Rt,O,Wt,f,Ze,Os,nl="больше - лучше",_e,Ds,pl="точность слов (WAcc)",Ge,xt,Hl=`<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mtable rowspacing="0.16em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mi>W</mi><mi>A</mi><mi>c</mi><mi>c</mi><mo>=</mo><mn>1</mn><mo>−</mo><mi>W</mi><mi>E</mi><mi>R</mi></mrow></mstyle></mtd></mtr></mtable><annotation encoding="application/x-tex">
\\begin{equation}
WAcc = 1 - WER \\nonumber
\\end{equation}
</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.2em;vertical-align:-0.35em;"></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.85em;"><span style="top:-3.01em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.13889em;">W</span><span class="mord mathnormal">A</span><span class="mord mathnormal">cc</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.13889em;">W</span><span class="mord mathnormal" style="margin-right:0.00773em;">ER</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.35em;"><span></span></span></span></span></span></span></span></span></span></span></span>`,Bt,D,ml=`WAcc также измеряется на уровне слов, просто WER представлен (сформулирован) как метрика точности, а не метрика ошибки. WAcc очень редко
встречается в речевой литературе - мы рассматриваем предсказания нашей системы в терминах ошибок в словах, и поэтому предпочитаем метрики
ошибок, которые больше ассоциируются с этими ошибками.`,Zt,K,_t,ss,il=`Кажется немного несправедливым, что мы пометили все слово “sit” ошибочным, когда на самом деле неправильной была только одна буква.
Это объясняется тем, что мы оценивали нашу систему на уровне слов, тем самым аннотируя ошибки пословно (word-by-word). Показатель <em>частота ошибок
в символах (CER)</em> оценивает системы на <em>символьном уровне</em>. Это означает, что мы разбиваем слова на отдельные символы и аннотируем ошибки по каждому
символу:`,Gt,ts,rl="<thead><tr><th>Эталон:</th> <th>t</th> <th>h</th> <th>e</th> <th></th> <th>c</th> <th>a</th> <th>t</th> <th></th> <th>s</th> <th>a</th> <th>t</th> <th></th> <th>o</th> <th>n</th> <th></th> <th>t</th> <th>h</th> <th>e</th> <th></th> <th>m</th> <th>a</th> <th>t</th></tr></thead> <tbody><tr><td>Предсказание:</td> <td>t</td> <td>h</td> <td>e</td> <td></td> <td>c</td> <td>a</td> <td>t</td> <td></td> <td>s</td> <td><strong>i</strong></td> <td>t</td> <td></td> <td>o</td> <td>n</td> <td></td> <td>t</td> <td>h</td> <td>e</td> <td></td> <td></td> <td></td> <td></td></tr> <tr><td>Метка:</td> <td>✅</td> <td>✅</td> <td>✅</td> <td></td> <td>✅</td> <td>✅</td> <td>✅</td> <td></td> <td>✅</td> <td>S</td> <td>✅</td> <td></td> <td>✅</td> <td>✅</td> <td></td> <td>✅</td> <td>✅</td> <td>✅</td> <td></td> <td>D</td> <td>D</td> <td>D</td></tr></tbody>",Vt,es,cl=`Теперь мы видим, что в слове “sit” буквы “s” и “t” отмечены как правильные. И только “i” помечается как ошибка замены символа (S). Таким
образом, мы вознаграждаем нашу систему за частично верное предсказание 🤝.`,kt,ls,Ve,St,Xl=`<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mtable rowspacing="0.25em" columnalign="right left" columnspacing="0em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mi>C</mi><mi>E</mi><mi>R</mi></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><mfrac><mrow><mi>S</mi><mo>+</mo><mi>I</mi><mo>+</mo><mi>D</mi></mrow><mi>N</mi></mfrac></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><mfrac><mrow><mn>1</mn><mo>+</mo><mn>0</mn><mo>+</mo><mn>3</mn></mrow><mn>14</mn></mfrac></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><mn>0.286</mn></mrow></mstyle></mtd></mtr></mtable><annotation encoding="application/x-tex">
\\begin{aligned}
CER &amp;= \\frac{S + I + D}{N} \\\\
&amp;= \\frac{1 + 0 + 3}{14} \\\\
&amp;= 0.286
\\end{aligned}
</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:6.1538em;vertical-align:-2.8269em;"></span><span class="mord"><span class="mtable"><span class="col-align-r"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:3.3269em;"><span style="top:-5.3269em;"><span class="pstrut" style="height:3.3603em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.00773em;">CER</span></span></span><span style="top:-3.0194em;"><span class="pstrut" style="height:3.3603em;"></span><span class="mord"></span></span><span style="top:-1.1934em;"><span class="pstrut" style="height:3.3603em;"></span><span class="mord"></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:2.8269em;"><span></span></span></span></span></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:3.3269em;"><span style="top:-5.3269em;"><span class="pstrut" style="height:3.3603em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3603em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.10903em;">N</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.07847em;">I</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.02778em;">D</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-3.0194em;"><span class="pstrut" style="height:3.3603em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">14</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord">0</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord">3</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-1.1934em;"><span class="pstrut" style="height:3.3603em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">0.286</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:2.8269em;"><span></span></span></span></span></span></span></span></span></span></span></span>`,Ht,as,ol=`Отлично! Мы получили CER, равный 0,286, или 28,6%. Обратите внимание, что это меньше, чем WER - мы гораздо меньше наказывали
за орфографическую ошибку.`,Xt,ns,Nt,ps,yl=`В целом для оценки речевых систем WER используется гораздо чаще, чем CER. Это объясняется тем, что WER требует от систем более
глубокого понимания контекста прогнозов. В нашем примере слово “sit” находится в неправильном времени. Система, понимающая связь
между глаголом и временем, в котором употребляется слово, предсказала бы правильное время глагола “sat”. Мы хотим поощрять такой
уровень понимания со стороны наших речевых систем. Таким образом, хотя WER менее щадящим, чем CER, он также более благоприятен
для тех видов разборчивых систем, которые мы хотим разработать. Поэтому мы обычно используем WER и рекомендуем вам это делать!
Однако существуют обстоятельства, при которых использование WER невозможно. В некоторых языках, таких как мандаринский (севернокитайский
язык) и японский, понятие “слова” отсутствует, и поэтому WER не имеет смысла. Здесь мы возвращаемся к использованию CER.`,Ft,ms,dl=`В нашем примере при расчете WER мы использовали только одно предложение. При оценке реальной системы мы обычно используем целый
тестовый набор, состоящий из нескольких тысяч предложений. При оценке по нескольким предложениям мы суммируем S, I, D и N по всем
предложениям, а затем вычисляем WER в соответствии с формулой, приведенной выше. Это дает более точную оценку WER для данных,
которые не были использованы ранее.`,zt,is,Yt,rs,Ml=`Если мы обучим модель ASR на данных с пунктуацией и регистром букв, она научится предсказывать регистр и пунктуацию в своих транскрипциях.
Это отлично работает, когда нам нужно использовать нашу модель для реальных приложений распознавания речи, таких как транскрибирование
совещаний или диктовка, поскольку предсказанные транскрипции будут полностью отформатированы с учетом регистра и пунктуации, стиля,
называемого <em>орфографическим</em>.`,At,cs,hl=`Однако у нас также есть возможность <em>нормализовать</em> набор данных, чтобы убрать регистр и пунктуацию. Нормализация набора данных делает задачу
распознавания речи проще: модели больше не нужно различать символы верхнего и нижнего регистра или предсказывать пунктуацию только на основе
аудиоданных (например, какой звук издает точка с запятой?). Из-за этого показатели ошибки слов снижаются естественным образом (что означает,
что результаты лучше). В статье о модели Whisper продемонстрировано радикальное воздействие нормализации транскрипций на результаты WER
(см. раздел 4.4 в <a href="https://cdn.openai.com/papers/whisper.pdf" rel="nofollow">статье Whisper</a>). Несмотря на более низкие показатели WER, модель не обязательно
становится лучше для промышленного использования. Отсутствие регистра и пунктуации делает предсказанный текст от модели значительно труднее
для чтения. Возьмем пример из <a href="asr_models">предыдущего раздела</a>, где мы применили модели Wav2Vec2 и Whisper к одному и тому же аудиофрагменту
из набора данных LibriSpeech. Модель Wav2Vec2 не предсказывает ни пунктуацию, ни регистр, в то время как Whisper предсказывает оба эти элемента.
Сравнив транскрипции рядом, мы видим, что транскрипция Whisper гораздо проще для чтения:`,Qt,os,Lt,ys,wl=`Транскрипция Whisper с соблюдением орфографии и, следовательно, готова к использованию - она отформатирована так, как мы ожидаем для транскрипции совещания
или диктовки, с пунктуацией и регистром букв. Напротив, для восстановления пунктуации и регистра в наших предсказаниях Wav2Vec2 нам потребуется
дополнительная постобработка, если мы хотим использовать их в дальнейшем при разработке приложений.`,Pt,ds,ul=`Существует золотая середина между нормализацией и отсутствием нормализации: мы можем обучать наши системы на орфографических транскрипциях,
а затем нормализовать предсказания и целевые метки перед вычислением WER. Таким образом, мы обучаем наши системы предсказывать полностью
отформатированный текст, но также получаем выгоду от улучшений WER, которые мы получаем, нормализуя транскрипции.`,qt,Ms,fl=`Модель Whisper была выпущена с нормализатором, который эффективно обрабатывает нормализацию регистра, пунктуации и форматирования чисел, среди
прочего. Давайте применим нормализатор к транскрипциям Whisper, чтобы продемонстрировать, как мы можем их нормализовать:`,Ot,hs,Dt,ws,Tl="<strong>Output:</strong>",Kt,us,se,fs,Ul=`Отлично! Мы видим, что текст был полностью приведен к нижнему регистру и удалена вся пунктуация. Теперь давайте определим эталонную транскрипцию
и затем вычислим нормализованный WER между эталоном и предсказанием:`,te,Ts,ee,Us,Jl="<strong>Output:</strong>",le,Js,ae,bs,bl=`6,25% - это примерно то, что мы ожидаем для базовой модели Whisper на наборе данных LibriSpeech для валидационной выборки. Как мы видим здесь, мы
предсказали орфографическую транскрипцию, но в то же время получили улучшение WER, полученное благодаря нормализации эталона и предсказания
перед вычислением WER.`,ne,vs,vl=`Выбор способа нормализации транскрипций в конечном итоге зависит от ваших потребностей. Мы рекомендуем обучать модель на орфографическом тексте
и оценивать на нормализованном тексте, чтобы получить лучшее из обоих приемов.`,pe,js,me,gs,jl=`Хорошо! Мы рассмотрели три темы в этом разделе: предварительно обученные модели, выбор набора данных и оценку. Давайте весело проведем время и
объединим их в одном примере end-to-end 🚀 Мы будем готовиться к следующему разделу по настройке модели путем оценки предварительно обученной
модели Whisper на тестовом наборе данных Common Voice 13 на Дивехи. Мы используем полученное число WER как <em>baseline</em> для нашего процесса дообучения
или как целевое значение, которое мы постараемся превзойти 🥊.`,ie,Cs,gl=`Сначала мы загрузим предварительно обученную модель Whisper с помощью <code>pipeline()</code>. Этот процесс вам уже должен быть крайне знаком!
Единственное новое, что мы сделаем - это загрузим модель с использованием половинной точности (float16), если запускаем на GPU.
Это ускорит вывод, почти не влияя на точность WER.`,re,$s,ce,Es,Cl=`Затем мы загрузим тестовую часть Дивехи из набора данных Common Voice 13. Вы помните из предыдущего раздела, что Common Voice 13 является
ограниченным, что означает, что мы должны согласиться с условиями использования набора данных, прежде чем получить доступ к нему. Теперь
мы можем связать нашу учетную запись Hugging Face с нашим блокнотом, чтобы получить доступ к набору данных с машины, которую мы сейчас используем.`,oe,Is,$l=`Связать блокнот с Hugging Face Hub очень просто - это требует ввода вашего токена аутентификации, когда вас попросят. Найдите ваш токен аутентификации
Hugging Face Hub <a href="https://huggingface.co/settings/tokens" rel="nofollow">здесь</a> и введите его, когда вас попросят:`,ye,Rs,de,Ws,El=`Отлично! После того как мы свяжем блокнот с нашей учетной записью Hugging Face, мы можем продолжить с загрузкой набора данных Common Voice.
Это займет несколько минут на загрузку и предварительную обработку, данные будут получены с Hub Hugging Face и подготовлены автоматически
в вашем блокноте:`,Me,xs,he,J,we,Bs,Il=`Оценка по всему набору данных может быть выполнена так же, как и для одного примера - все, что нам нужно сделать, это <strong>циклически</strong> пройти по
входным аудиофайлам, вместо вывода только одного образца. Для этого мы сначала преобразуем наш набор данных в <code>KeyDataset</code>. При этом выбирается
определенный столбец набора данных, который мы хотим передать модели (в нашем случае это столбец <code>&quot;audio&quot;</code>), игнорируя остальные (например,
целевые транскрипции, которые мы не хотим использовать для вывода). Затем мы перебираем этот преобразованный набор данных, добавляя выходы
модели в список для сохранения предсказаний. Этот блок кода будет выполняться около пяти минут при использовании GPU с половинной точностью
и максимальной памятью 12 ГБ:`,ue,Zs,fe,b,Te,_s,Rl="И, наконец, мы можем вычислить WER. Давайте сначала вычислим орфографический WER, то есть WER без какой-либо дополнительной обработки:",Ue,Gs,Je,Vs,Wl="<strong>Output:</strong>",be,ks,ve,Ss,xl=`Ладно… 167% в основном означает, что наша модель выдает мусор 😜 Не беспокойтесь, нашей целью будет улучшить это путем настройки
модели на обучающем выборке Дивехи!`,je,Hs,Bl=`Затем мы оценим нормализованный WER, то есть WER с постобработкой в части нормализации. Нам придется исключить выборки, которые были бы пустыми
после нормализации, так как в противном случае общее количество слов в нашем эталоне (N) будет равно нулю, что вызовет ошибку деления на ноль в
нашем вычислении:`,ge,Xs,Ce,Ns,Zl="<strong>Output:</strong>",$e,Fs,Ee,zs,_l=`Снова мы видим резкое снижение WER при нормализации наших эталонов и предсказаний: базовая модель достигает орфографического
тестового WER 168%, в то время как нормализованный WER составляет 126%.`,Ie,Ys,Gl=`Итак, именно эти показатели мы хотим превзойти, когда будем дообучать модель, чтобы улучшить модель Whisper для распознавания речи для Дивехи.
Продолжайте чтение, чтобы получить практический опыт с примером дообучения модели 🚀.`,Re,As,We,st,xe;return j=new Ql({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),g=new Qs({props:{title:"Evaluation metrics for ASR",local:"evaluation-metrics-for-asr",headingTag:"h1"}}),W=new w({props:{code:"cmVmZXJlbmNlJTIwJTNEJTIwJTIydGhlJTIwY2F0JTIwc2F0JTIwb24lMjB0aGUlMjBtYXQlMjI=",highlighted:'reference = <span class="hljs-string">&quot;the cat sat on the mat&quot;</span>',wrap:!1}}),B=new w({props:{code:"cHJlZGljdGlvbiUyMCUzRCUyMCUyMnRoZSUyMGNhdCUyMHNpdCUyMG9uJTIwdGhlJTIy",highlighted:'prediction = <span class="hljs-string">&quot;the cat sit on the&quot;</span>',wrap:!1}}),_=new Qs({props:{title:"Частота ошибок в словах (Word Error Rate)",local:"частота-ошибок-в-словах-word-error-rate",headingTag:"h2"}}),z=new w({props:{code:"cGlwJTIwaW5zdGFsbCUyMC0tdXBncmFkZSUyMGV2YWx1YXRlJTIwaml3ZXI=",highlighted:'pip install <span class="hljs-comment">--upgrade evaluate jiwer</span>',wrap:!1}}),A=new w({props:{code:"ZnJvbSUyMGV2YWx1YXRlJTIwaW1wb3J0JTIwbG9hZCUwQSUwQXdlcl9tZXRyaWMlMjAlM0QlMjBsb2FkKCUyMndlciUyMiklMEElMEF3ZXIlMjAlM0QlMjB3ZXJfbWV0cmljLmNvbXB1dGUocmVmZXJlbmNlcyUzRCU1QnJlZmVyZW5jZSU1RCUyQyUyMHByZWRpY3Rpb25zJTNEJTVCcHJlZGljdGlvbiU1RCklMEElMEFwcmludCh3ZXIp",highlighted:`<span class="hljs-keyword">from</span> evaluate <span class="hljs-keyword">import</span> load

wer_metric = load(<span class="hljs-string">&quot;wer&quot;</span>)

wer = wer_metric.compute(references=[reference], predictions=[prediction])

<span class="hljs-built_in">print</span>(wer)`,wrap:!1}}),L=new w({props:{code:"MC4zMzMzMzMzMzMzMzMzMzMz",highlighted:'<span class="hljs-attribute">0</span>.<span class="hljs-number">3333333333333333</span>',wrap:!1}}),O=new Qs({props:{title:"Точность слов (Word Accuracy)",local:"точность-слов-word-accuracy",headingTag:"h2"}}),K=new Qs({props:{title:"Частота ошибок в символах (Character Error Rate)",local:"частота-ошибок-в-символах-character-error-rate",headingTag:"h2"}}),ns=new Qs({props:{title:"Какую метрику следует использовать?",local:"какую-метрику-следует-использовать",headingTag:"h2"}}),is=new Qs({props:{title:"Нормализация",local:"нормализация",headingTag:"h2"}}),os=new w({props:{code:"V2F2MlZlYzIlM0ElMjAlMjBIRSUyMFRFTExTJTIwVVMlMjBUSEFUJTIwQVQlMjBUSElTJTIwRkVTVElWRSUyMFNFQVNPTiUyME9GJTIwVEhFJTIwWUVBUiUyMFdJVEglMjBDSFJJU1RNQVVTJTIwQU5EJTIwUk9TRSUyMEJFRUYlMjBMT09NSU5HJTIwQkVGT1JFJTIwVVMlMjBTSU1BTFlJUyUyMERSQVdOJTIwRlJPTSUyMEVBVElORyUyMEFORCUyMElUUyUyMFJFU1VMVFMlMjBPQ0NVUiUyME1PU1QlMjBSRUFESUxZJTIwVE8lMjBUSEUlMjBNSU5EJTBBV2hpc3BlciUzQSUyMCUyMCUyMEhlJTIwdGVsbHMlMjB1cyUyMHRoYXQlMjBhdCUyMHRoaXMlMjBmZXN0aXZlJTIwc2Vhc29uJTIwb2YlMjB0aGUlMjB5ZWFyJTJDJTIwd2l0aCUyMENocmlzdG1hcyUyMGFuZCUyMHJvYXN0JTIwYmVlZiUyMGxvb21pbmclMjBiZWZvcmUlMjB1cyUyQyUyMHNpbWlsYXJseSUyMGlzJTIwZHJhd24lMjBmcm9tJTIwZWF0aW5nJTIwYW5kJTIwaXRzJTIwcmVzdWx0cyUyMG9jY3VyJTIwbW9zdCUyMHJlYWRpbHklMjB0byUyMHRoZSUyMG1pbmQu",highlighted:`<span class="hljs-symbol">Wav2Vec2:</span>  HE TELLS US THAT <span class="hljs-built_in">AT</span> THIS FESTIVE SEASON OF THE YEAR WITH CHRISTMAUS <span class="hljs-keyword">AND </span>ROSE <span class="hljs-keyword">BEEF </span>LOOMING <span class="hljs-keyword">BEFORE </span>US SIMALYIS DRAWN FROM EATING <span class="hljs-keyword">AND </span>ITS RESULTS OCCUR MOST READILY TO THE MIND
<span class="hljs-symbol">Whisper:</span>   He tells us that <span class="hljs-built_in">at</span> this festive season of the year, with Christmas <span class="hljs-keyword">and </span>roast <span class="hljs-keyword">beef </span>looming <span class="hljs-keyword">before </span>us, similarly is drawn from eating <span class="hljs-keyword">and </span>its results occur most readily to the mind.`,wrap:!1}}),hs=new w({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycy5tb2RlbHMud2hpc3Blci5lbmdsaXNoX25vcm1hbGl6ZXIlMjBpbXBvcnQlMjBCYXNpY1RleHROb3JtYWxpemVyJTBBJTBBbm9ybWFsaXplciUyMCUzRCUyMEJhc2ljVGV4dE5vcm1hbGl6ZXIoKSUwQSUwQXByZWRpY3Rpb24lMjAlM0QlMjAlMjIlMjBIZSUyMHRlbGxzJTIwdXMlMjB0aGF0JTIwYXQlMjB0aGlzJTIwZmVzdGl2ZSUyMHNlYXNvbiUyMG9mJTIwdGhlJTIweWVhciUyQyUyMHdpdGglMjBDaHJpc3RtYXMlMjBhbmQlMjByb2FzdCUyMGJlZWYlMjBsb29taW5nJTIwYmVmb3JlJTIwdXMlMkMlMjBzaW1pbGFybHklMjBpcyUyMGRyYXduJTIwZnJvbSUyMGVhdGluZyUyMGFuZCUyMGl0cyUyMHJlc3VsdHMlMjBvY2N1ciUyMG1vc3QlMjByZWFkaWx5JTIwdG8lMjB0aGUlMjBtaW5kLiUyMiUwQW5vcm1hbGl6ZWRfcHJlZGljdGlvbiUyMCUzRCUyMG5vcm1hbGl6ZXIocHJlZGljdGlvbiklMEElMEFub3JtYWxpemVkX3ByZWRpY3Rpb24=",highlighted:`<span class="hljs-keyword">from</span> transformers.models.whisper.english_normalizer <span class="hljs-keyword">import</span> BasicTextNormalizer

normalizer = BasicTextNormalizer()

prediction = <span class="hljs-string">&quot; He tells us that at this festive season of the year, with Christmas and roast beef looming before us, similarly is drawn from eating and its results occur most readily to the mind.&quot;</span>
normalized_prediction = normalizer(prediction)

normalized_prediction`,wrap:!1}}),us=new w({props:{code:"JyUyMGhlJTIwdGVsbHMlMjB1cyUyMHRoYXQlMjBhdCUyMHRoaXMlMjBmZXN0aXZlJTIwc2Vhc29uJTIwb2YlMjB0aGUlMjB5ZWFyJTIwd2l0aCUyMGNocmlzdG1hcyUyMGFuZCUyMHJvYXN0JTIwYmVlZiUyMGxvb21pbmclMjBiZWZvcmUlMjB1cyUyMHNpbWlsYXJseSUyMGlzJTIwZHJhd24lMjBmcm9tJTIwZWF0aW5nJTIwYW5kJTIwaXRzJTIwcmVzdWx0cyUyMG9jY3VyJTIwbW9zdCUyMHJlYWRpbHklMjB0byUyMHRoZSUyMG1pbmQlMjAn",highlighted:'&#x27; he tells us <span class="hljs-keyword">that</span> <span class="hljs-keyword">at</span> this festive season <span class="hljs-keyword">of</span> <span class="hljs-keyword">the</span> <span class="hljs-built_in">year</span> <span class="hljs-keyword">with</span> christmas <span class="hljs-keyword">and</span> roast beef looming <span class="hljs-keyword">before</span> us similarly <span class="hljs-keyword">is</span> drawn <span class="hljs-keyword">from</span> eating <span class="hljs-keyword">and</span> <span class="hljs-keyword">its</span> results occur most readily <span class="hljs-keyword">to</span> <span class="hljs-keyword">the</span> mind &#x27;',wrap:!1}}),Ts=new w({props:{code:"cmVmZXJlbmNlJTIwJTNEJTIwJTIySEUlMjBURUxMUyUyMFVTJTIwVEhBVCUyMEFUJTIwVEhJUyUyMEZFU1RJVkUlMjBTRUFTT04lMjBPRiUyMFRIRSUyMFlFQVIlMjBXSVRIJTIwQ0hSSVNUTUFTJTIwQU5EJTIwUk9BU1QlMjBCRUVGJTIwTE9PTUlORyUyMEJFRk9SRSUyMFVTJTIwU0lNSUxFUyUyMERSQVdOJTIwRlJPTSUyMEVBVElORyUyMEFORCUyMElUUyUyMFJFU1VMVFMlMjBPQ0NVUiUyME1PU1QlMjBSRUFESUxZJTIwVE8lMjBUSEUlMjBNSU5EJTIyJTBBbm9ybWFsaXplZF9yZWZlcmVjZSUyMCUzRCUyMG5vcm1hbGl6ZXIocmVmZXJlbmNlKSUwQSUwQXdlciUyMCUzRCUyMHdlcl9tZXRyaWMuY29tcHV0ZSglMEElMjAlMjAlMjAlMjByZWZlcmVuY2VzJTNEJTVCbm9ybWFsaXplZF9yZWZlcmVjZSU1RCUyQyUyMHByZWRpY3Rpb25zJTNEJTVCbm9ybWFsaXplZF9wcmVkaWN0aW9uJTVEJTBBKSUwQXdlcg==",highlighted:`reference = <span class="hljs-string">&quot;HE TELLS US THAT AT THIS FESTIVE SEASON OF THE YEAR WITH CHRISTMAS AND ROAST BEEF LOOMING BEFORE US SIMILES DRAWN FROM EATING AND ITS RESULTS OCCUR MOST READILY TO THE MIND&quot;</span>
normalized_referece = normalizer(reference)

wer = wer_metric.compute(
    references=[normalized_referece], predictions=[normalized_prediction]
)
wer`,wrap:!1}}),Js=new w({props:{code:"MC4wNjI1",highlighted:'<span class="hljs-attribute">0</span>.<span class="hljs-number">0625</span>',wrap:!1}}),js=new Qs({props:{title:"Собираем все воедино",local:"собираем-все-воедино",headingTag:"h3"}}),$s=new w({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMHBpcGVsaW5lJTBBaW1wb3J0JTIwdG9yY2glMEElMEFpZiUyMHRvcmNoLmN1ZGEuaXNfYXZhaWxhYmxlKCklM0ElMEElMjAlMjAlMjAlMjBkZXZpY2UlMjAlM0QlMjAlMjJjdWRhJTNBMCUyMiUwQSUyMCUyMCUyMCUyMHRvcmNoX2R0eXBlJTIwJTNEJTIwdG9yY2guZmxvYXQxNiUwQWVsc2UlM0ElMEElMjAlMjAlMjAlMjBkZXZpY2UlMjAlM0QlMjAlMjJjcHUlMjIlMEElMjAlMjAlMjAlMjB0b3JjaF9kdHlwZSUyMCUzRCUyMHRvcmNoLmZsb2F0MzIlMEElMEFwaXBlJTIwJTNEJTIwcGlwZWxpbmUoJTBBJTIwJTIwJTIwJTIwJTIyYXV0b21hdGljLXNwZWVjaC1yZWNvZ25pdGlvbiUyMiUyQyUwQSUyMCUyMCUyMCUyMG1vZGVsJTNEJTIyb3BlbmFpJTJGd2hpc3Blci1zbWFsbCUyMiUyQyUwQSUyMCUyMCUyMCUyMHRvcmNoX2R0eXBlJTNEdG9yY2hfZHR5cGUlMkMlMEElMjAlMjAlMjAlMjBkZXZpY2UlM0RkZXZpY2UlMkMlMEEp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline
<span class="hljs-keyword">import</span> torch

<span class="hljs-keyword">if</span> torch.cuda.is_available():
    device = <span class="hljs-string">&quot;cuda:0&quot;</span>
    torch_dtype = torch.float16
<span class="hljs-keyword">else</span>:
    device = <span class="hljs-string">&quot;cpu&quot;</span>
    torch_dtype = torch.float32

pipe = pipeline(
    <span class="hljs-string">&quot;automatic-speech-recognition&quot;</span>,
    model=<span class="hljs-string">&quot;openai/whisper-small&quot;</span>,
    torch_dtype=torch_dtype,
    device=device,
)`,wrap:!1}}),Rs=new w({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMG5vdGVib29rX2xvZ2luJTBBJTBBbm90ZWJvb2tfbG9naW4oKQ==",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> notebook_login

notebook_login()`,wrap:!1}}),xs=new w({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBY29tbW9uX3ZvaWNlX3Rlc3QlMjAlM0QlMjBsb2FkX2RhdGFzZXQoJTBBJTIwJTIwJTIwJTIwJTIybW96aWxsYS1mb3VuZGF0aW9uJTJGY29tbW9uX3ZvaWNlXzEzXzAlMjIlMkMlMjAlMjJkdiUyMiUyQyUyMHNwbGl0JTNEJTIydGVzdCUyMiUwQSk=",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset

common_voice_test = load_dataset(
    <span class="hljs-string">&quot;mozilla-foundation/common_voice_13_0&quot;</span>, <span class="hljs-string">&quot;dv&quot;</span>, split=<span class="hljs-string">&quot;test&quot;</span>
)`,wrap:!1}}),J=new kl({props:{$$slots:{default:[Pl]},$$scope:{ctx:qs}}}),Zs=new w({props:{code:"ZnJvbSUyMHRxZG0lMjBpbXBvcnQlMjB0cWRtJTBBZnJvbSUyMHRyYW5zZm9ybWVycy5waXBlbGluZXMucHRfdXRpbHMlMjBpbXBvcnQlMjBLZXlEYXRhc2V0JTBBJTBBYWxsX3ByZWRpY3Rpb25zJTIwJTNEJTIwJTVCJTVEJTBBJTBBJTIzJTIwcnVuJTIwc3RyZWFtZWQlMjBpbmZlcmVuY2UlMEFmb3IlMjBwcmVkaWN0aW9uJTIwaW4lMjB0cWRtKCUwQSUyMCUyMCUyMCUyMHBpcGUoJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwS2V5RGF0YXNldChjb21tb25fdm9pY2VfdGVzdCUyQyUyMCUyMmF1ZGlvJTIyKSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG1heF9uZXdfdG9rZW5zJTNEMTI4JTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZ2VuZXJhdGVfa3dhcmdzJTNEJTdCJTIydGFzayUyMiUzQSUyMCUyMnRyYW5zY3JpYmUlMjIlN0QlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBiYXRjaF9zaXplJTNEMzIlMkMlMEElMjAlMjAlMjAlMjApJTJDJTBBJTIwJTIwJTIwJTIwdG90YWwlM0RsZW4oY29tbW9uX3ZvaWNlX3Rlc3QpJTJDJTBBKSUzQSUwQSUyMCUyMCUyMCUyMGFsbF9wcmVkaWN0aW9ucy5hcHBlbmQocHJlZGljdGlvbiU1QiUyMnRleHQlMjIlNUQp",highlighted:`<span class="hljs-keyword">from</span> tqdm <span class="hljs-keyword">import</span> tqdm
<span class="hljs-keyword">from</span> transformers.pipelines.pt_utils <span class="hljs-keyword">import</span> KeyDataset

all_predictions = []

<span class="hljs-comment"># run streamed inference</span>
<span class="hljs-keyword">for</span> prediction <span class="hljs-keyword">in</span> tqdm(
    pipe(
        KeyDataset(common_voice_test, <span class="hljs-string">&quot;audio&quot;</span>),
        max_new_tokens=<span class="hljs-number">128</span>,
        generate_kwargs={<span class="hljs-string">&quot;task&quot;</span>: <span class="hljs-string">&quot;transcribe&quot;</span>},
        batch_size=<span class="hljs-number">32</span>,
    ),
    total=<span class="hljs-built_in">len</span>(common_voice_test),
):
    all_predictions.append(prediction[<span class="hljs-string">&quot;text&quot;</span>])`,wrap:!1}}),b=new kl({props:{$$slots:{default:[ql]},$$scope:{ctx:qs}}}),Gs=new w({props:{code:"ZnJvbSUyMGV2YWx1YXRlJTIwaW1wb3J0JTIwbG9hZCUwQSUwQXdlcl9tZXRyaWMlMjAlM0QlMjBsb2FkKCUyMndlciUyMiklMEElMEF3ZXJfb3J0aG8lMjAlM0QlMjAxMDAlMjAqJTIwd2VyX21ldHJpYy5jb21wdXRlKCUwQSUyMCUyMCUyMCUyMHJlZmVyZW5jZXMlM0Rjb21tb25fdm9pY2VfdGVzdCU1QiUyMnNlbnRlbmNlJTIyJTVEJTJDJTIwcHJlZGljdGlvbnMlM0RhbGxfcHJlZGljdGlvbnMlMEEpJTBBd2VyX29ydGhv",highlighted:`<span class="hljs-keyword">from</span> evaluate <span class="hljs-keyword">import</span> load

wer_metric = load(<span class="hljs-string">&quot;wer&quot;</span>)

wer_ortho = <span class="hljs-number">100</span> * wer_metric.compute(
    references=common_voice_test[<span class="hljs-string">&quot;sentence&quot;</span>], predictions=all_predictions
)
wer_ortho`,wrap:!1}}),ks=new w({props:{code:"MTY3LjI5NTc3MjY4NjEyMDIy",highlighted:'<span class="hljs-attribute">167</span>.<span class="hljs-number">29577268612022</span>',wrap:!1}}),Xs=new w({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycy5tb2RlbHMud2hpc3Blci5lbmdsaXNoX25vcm1hbGl6ZXIlMjBpbXBvcnQlMjBCYXNpY1RleHROb3JtYWxpemVyJTBBJTBBbm9ybWFsaXplciUyMCUzRCUyMEJhc2ljVGV4dE5vcm1hbGl6ZXIoKSUwQSUwQSUyMyUyMGNvbXB1dGUlMjBub3JtYWxpc2VkJTIwV0VSJTBBYWxsX3ByZWRpY3Rpb25zX25vcm0lMjAlM0QlMjAlNUJub3JtYWxpemVyKHByZWQpJTIwZm9yJTIwcHJlZCUyMGluJTIwYWxsX3ByZWRpY3Rpb25zJTVEJTBBYWxsX3JlZmVyZW5jZXNfbm9ybSUyMCUzRCUyMCU1Qm5vcm1hbGl6ZXIobGFiZWwpJTIwZm9yJTIwbGFiZWwlMjBpbiUyMGNvbW1vbl92b2ljZV90ZXN0JTVCJTIyc2VudGVuY2UlMjIlNUQlNUQlMEElMEElMjMlMjBmaWx0ZXJpbmclMjBzdGVwJTIwdG8lMjBvbmx5JTIwZXZhbHVhdGUlMjB0aGUlMjBzYW1wbGVzJTIwdGhhdCUyMGNvcnJlc3BvbmQlMjB0byUyMG5vbi16ZXJvJTIwcmVmZXJlbmNlcyUwQWFsbF9wcmVkaWN0aW9uc19ub3JtJTIwJTNEJTIwJTVCJTBBJTIwJTIwJTIwJTIwYWxsX3ByZWRpY3Rpb25zX25vcm0lNUJpJTVEJTBBJTIwJTIwJTIwJTIwZm9yJTIwaSUyMGluJTIwcmFuZ2UobGVuKGFsbF9wcmVkaWN0aW9uc19ub3JtKSklMEElMjAlMjAlMjAlMjBpZiUyMGxlbihhbGxfcmVmZXJlbmNlc19ub3JtJTVCaSU1RCklMjAlM0UlMjAwJTBBJTVEJTBBYWxsX3JlZmVyZW5jZXNfbm9ybSUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMGFsbF9yZWZlcmVuY2VzX25vcm0lNUJpJTVEJTBBJTIwJTIwJTIwJTIwZm9yJTIwaSUyMGluJTIwcmFuZ2UobGVuKGFsbF9yZWZlcmVuY2VzX25vcm0pKSUwQSUyMCUyMCUyMCUyMGlmJTIwbGVuKGFsbF9yZWZlcmVuY2VzX25vcm0lNUJpJTVEKSUyMCUzRSUyMDAlMEElNUQlMEElMEF3ZXIlMjAlM0QlMjAxMDAlMjAqJTIwd2VyX21ldHJpYy5jb21wdXRlKCUwQSUyMCUyMCUyMCUyMHJlZmVyZW5jZXMlM0RhbGxfcmVmZXJlbmNlc19ub3JtJTJDJTIwcHJlZGljdGlvbnMlM0RhbGxfcHJlZGljdGlvbnNfbm9ybSUwQSklMEElMEF3ZXI=",highlighted:`<span class="hljs-keyword">from</span> transformers.models.whisper.english_normalizer <span class="hljs-keyword">import</span> BasicTextNormalizer

normalizer = BasicTextNormalizer()

<span class="hljs-comment"># compute normalised WER</span>
all_predictions_norm = [normalizer(pred) <span class="hljs-keyword">for</span> pred <span class="hljs-keyword">in</span> all_predictions]
all_references_norm = [normalizer(label) <span class="hljs-keyword">for</span> label <span class="hljs-keyword">in</span> common_voice_test[<span class="hljs-string">&quot;sentence&quot;</span>]]

<span class="hljs-comment"># filtering step to only evaluate the samples that correspond to non-zero references</span>
all_predictions_norm = [
    all_predictions_norm[i]
    <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-built_in">len</span>(all_predictions_norm))
    <span class="hljs-keyword">if</span> <span class="hljs-built_in">len</span>(all_references_norm[i]) &gt; <span class="hljs-number">0</span>
]
all_references_norm = [
    all_references_norm[i]
    <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-built_in">len</span>(all_references_norm))
    <span class="hljs-keyword">if</span> <span class="hljs-built_in">len</span>(all_references_norm[i]) &gt; <span class="hljs-number">0</span>
]

wer = <span class="hljs-number">100</span> * wer_metric.compute(
    references=all_references_norm, predictions=all_predictions_norm
)

wer`,wrap:!1}}),Fs=new w({props:{code:"MTI1LjY5ODA5MDg5OTYwNzA3",highlighted:'<span class="hljs-attribute">125</span>.<span class="hljs-number">69809089960707</span>',wrap:!1}}),As=new Ll({props:{source:"https://github.com/huggingface/audio-transformers-course/blob/main/chapters/ru/chapter5/evaluation.mdx"}}),{c(){h=p("meta"),u=a(),U=p("p"),et=a(),r(j.$$.fragment),lt=a(),r(g.$$.fragment),at=a(),C=p("p"),C.innerHTML=Xe,nt=a(),$=p("p"),$.textContent=Ne,pt=a(),E=p("ol"),E.innerHTML=Fe,mt=a(),I=p("p"),I.innerHTML=ze,it=a(),R=p("p"),R.innerHTML=Ye,rt=a(),r(W.$$.fragment),ct=a(),x=p("p"),x.textContent=Ae,ot=a(),r(B.$$.fragment),yt=a(),Z=p("p"),Z.textContent=Qe,dt=a(),r(_.$$.fragment),Mt=a(),G=p("p"),G.innerHTML=Le,ht=a(),V=p("table"),V.innerHTML=Pe,wt=a(),k=p("p"),k.textContent=qe,ut=a(),S=p("ul"),S.innerHTML=Oe,ft=a(),H=p("p"),Be=Ls(`Это дает 2 ошибки в сумме. Чтобы получить коэффициент ошибок, разделим количество ошибок на общее количество слов в эталонной
последовательности (N), которое для данного примера равно 6:
`),Tt=new Se(!1),Ut=a(),X=p("p"),X.textContent=De,Jt=a(),N=p("p"),N.textContent=Ke,bt=a(),F=p("p"),F.textContent=sl,vt=a(),r(z.$$.fragment),jt=a(),Y=p("p"),Y.textContent=tl,gt=a(),r(A.$$.fragment),Ct=a(),Q=p("p"),Q.innerHTML=el,$t=a(),r(L.$$.fragment),Et=a(),P=p("p"),P.textContent=ll,It=a(),q=p("p"),q.textContent=al,Rt=a(),r(O.$$.fragment),Wt=a(),f=p("p"),Ze=Ls("Мы можем перевернуть WER, чтобы получить метрику, в которой "),Os=p("em"),Os.textContent=nl,_e=Ls(`. Вместо того чтобы измерять частоту ошибок в словах,
мы можем измерить `),Ds=p("em"),Ds.textContent=pl,Ge=Ls(` нашей системы:
`),xt=new Se(!1),Bt=a(),D=p("p"),D.textContent=ml,Zt=a(),r(K.$$.fragment),_t=a(),ss=p("p"),ss.innerHTML=il,Gt=a(),ts=p("table"),ts.innerHTML=rl,Vt=a(),es=p("p"),es.textContent=cl,kt=a(),ls=p("p"),Ve=Ls(`В нашем примере мы имеем 1 замену символов, 0 вставок и 3 удаления. Всего у нас 14 символов. Таким образом, наш CER имеет вид:
`),St=new Se(!1),Ht=a(),as=p("p"),as.textContent=ol,Xt=a(),r(ns.$$.fragment),Nt=a(),ps=p("p"),ps.textContent=yl,Ft=a(),ms=p("p"),ms.textContent=dl,zt=a(),r(is.$$.fragment),Yt=a(),rs=p("p"),rs.innerHTML=Ml,At=a(),cs=p("p"),cs.innerHTML=hl,Qt=a(),r(os.$$.fragment),Lt=a(),ys=p("p"),ys.textContent=wl,Pt=a(),ds=p("p"),ds.textContent=ul,qt=a(),Ms=p("p"),Ms.textContent=fl,Ot=a(),r(hs.$$.fragment),Dt=a(),ws=p("p"),ws.innerHTML=Tl,Kt=a(),r(us.$$.fragment),se=a(),fs=p("p"),fs.textContent=Ul,te=a(),r(Ts.$$.fragment),ee=a(),Us=p("p"),Us.innerHTML=Jl,le=a(),r(Js.$$.fragment),ae=a(),bs=p("p"),bs.textContent=bl,ne=a(),vs=p("p"),vs.textContent=vl,pe=a(),r(js.$$.fragment),me=a(),gs=p("p"),gs.innerHTML=jl,ie=a(),Cs=p("p"),Cs.innerHTML=gl,re=a(),r($s.$$.fragment),ce=a(),Es=p("p"),Es.textContent=Cl,oe=a(),Is=p("p"),Is.innerHTML=$l,ye=a(),r(Rs.$$.fragment),de=a(),Ws=p("p"),Ws.textContent=El,Me=a(),r(xs.$$.fragment),he=a(),r(J.$$.fragment),we=a(),Bs=p("p"),Bs.innerHTML=Il,ue=a(),r(Zs.$$.fragment),fe=a(),r(b.$$.fragment),Te=a(),_s=p("p"),_s.textContent=Rl,Ue=a(),r(Gs.$$.fragment),Je=a(),Vs=p("p"),Vs.innerHTML=Wl,be=a(),r(ks.$$.fragment),ve=a(),Ss=p("p"),Ss.textContent=xl,je=a(),Hs=p("p"),Hs.textContent=Bl,ge=a(),r(Xs.$$.fragment),Ce=a(),Ns=p("p"),Ns.innerHTML=Zl,$e=a(),r(Fs.$$.fragment),Ee=a(),zs=p("p"),zs.textContent=_l,Ie=a(),Ys=p("p"),Ys.textContent=Gl,Re=a(),r(As.$$.fragment),We=a(),st=p("p"),this.h()},l(s){const t=Al("svelte-u9bgzb",document.head);h=m(t,"META",{name:!0,content:!0}),t.forEach(e),u=n(s),U=m(s,"P",{}),tt(U).forEach(e),et=n(s),c(j.$$.fragment,s),lt=n(s),c(g.$$.fragment,s),at=n(s),C=m(s,"P",{"data-svelte-h":!0}),i(C)!=="svelte-igm2de"&&(C.innerHTML=Xe),nt=n(s),$=m(s,"P",{"data-svelte-h":!0}),i($)!=="svelte-9pczci"&&($.textContent=Ne),pt=n(s),E=m(s,"OL",{"data-svelte-h":!0}),i(E)!=="svelte-47wtby"&&(E.innerHTML=Fe),mt=n(s),I=m(s,"P",{"data-svelte-h":!0}),i(I)!=="svelte-mnzd80"&&(I.innerHTML=ze),it=n(s),R=m(s,"P",{"data-svelte-h":!0}),i(R)!=="svelte-sfr9vy"&&(R.innerHTML=Ye),rt=n(s),c(W.$$.fragment,s),ct=n(s),x=m(s,"P",{"data-svelte-h":!0}),i(x)!=="svelte-17kgqm2"&&(x.textContent=Ae),ot=n(s),c(B.$$.fragment,s),yt=n(s),Z=m(s,"P",{"data-svelte-h":!0}),i(Z)!=="svelte-seetgm"&&(Z.textContent=Qe),dt=n(s),c(_.$$.fragment,s),Mt=n(s),G=m(s,"P",{"data-svelte-h":!0}),i(G)!=="svelte-16jb72d"&&(G.innerHTML=Le),ht=n(s),V=m(s,"TABLE",{"data-svelte-h":!0}),i(V)!=="svelte-1czsdns"&&(V.innerHTML=Pe),wt=n(s),k=m(s,"P",{"data-svelte-h":!0}),i(k)!=="svelte-8rahi5"&&(k.textContent=qe),ut=n(s),S=m(s,"UL",{"data-svelte-h":!0}),i(S)!=="svelte-1xj8bqj"&&(S.innerHTML=Oe),ft=n(s),H=m(s,"P",{});var Ks=tt(H);Be=Ps(Ks,`Это дает 2 ошибки в сумме. Чтобы получить коэффициент ошибок, разделим количество ошибок на общее количество слов в эталонной
последовательности (N), которое для данного примера равно 6:
`),Tt=He(Ks,!1),Ks.forEach(e),Ut=n(s),X=m(s,"P",{"data-svelte-h":!0}),i(X)!=="svelte-1fhxnsp"&&(X.textContent=De),Jt=n(s),N=m(s,"P",{"data-svelte-h":!0}),i(N)!=="svelte-l076o"&&(N.textContent=Ke),bt=n(s),F=m(s,"P",{"data-svelte-h":!0}),i(F)!=="svelte-1a7winj"&&(F.textContent=sl),vt=n(s),c(z.$$.fragment,s),jt=n(s),Y=m(s,"P",{"data-svelte-h":!0}),i(Y)!=="svelte-ypp676"&&(Y.textContent=tl),gt=n(s),c(A.$$.fragment,s),Ct=n(s),Q=m(s,"P",{"data-svelte-h":!0}),i(Q)!=="svelte-j2cy7r"&&(Q.innerHTML=el),$t=n(s),c(L.$$.fragment,s),Et=n(s),P=m(s,"P",{"data-svelte-h":!0}),i(P)!=="svelte-yx3cf5"&&(P.textContent=ll),It=n(s),q=m(s,"P",{"data-svelte-h":!0}),i(q)!=="svelte-u1m10s"&&(q.textContent=al),Rt=n(s),c(O.$$.fragment,s),Wt=n(s),f=m(s,"P",{});var T=tt(f);Ze=Ps(T,"Мы можем перевернуть WER, чтобы получить метрику, в которой "),Os=m(T,"EM",{"data-svelte-h":!0}),i(Os)!=="svelte-ni78m6"&&(Os.textContent=nl),_e=Ps(T,`. Вместо того чтобы измерять частоту ошибок в словах,
мы можем измерить `),Ds=m(T,"EM",{"data-svelte-h":!0}),i(Ds)!=="svelte-1seqz44"&&(Ds.textContent=pl),Ge=Ps(T,` нашей системы:
`),xt=He(T,!1),T.forEach(e),Bt=n(s),D=m(s,"P",{"data-svelte-h":!0}),i(D)!=="svelte-1g3axhu"&&(D.textContent=ml),Zt=n(s),c(K.$$.fragment,s),_t=n(s),ss=m(s,"P",{"data-svelte-h":!0}),i(ss)!=="svelte-1wr56r8"&&(ss.innerHTML=il),Gt=n(s),ts=m(s,"TABLE",{"data-svelte-h":!0}),i(ts)!=="svelte-o6ep4b"&&(ts.innerHTML=rl),Vt=n(s),es=m(s,"P",{"data-svelte-h":!0}),i(es)!=="svelte-1b2u3q7"&&(es.textContent=cl),kt=n(s),ls=m(s,"P",{});var ke=tt(ls);Ve=Ps(ke,`В нашем примере мы имеем 1 замену символов, 0 вставок и 3 удаления. Всего у нас 14 символов. Таким образом, наш CER имеет вид:
`),St=He(ke,!1),ke.forEach(e),Ht=n(s),as=m(s,"P",{"data-svelte-h":!0}),i(as)!=="svelte-jm5q24"&&(as.textContent=ol),Xt=n(s),c(ns.$$.fragment,s),Nt=n(s),ps=m(s,"P",{"data-svelte-h":!0}),i(ps)!=="svelte-mg9uoi"&&(ps.textContent=yl),Ft=n(s),ms=m(s,"P",{"data-svelte-h":!0}),i(ms)!=="svelte-3ryfv4"&&(ms.textContent=dl),zt=n(s),c(is.$$.fragment,s),Yt=n(s),rs=m(s,"P",{"data-svelte-h":!0}),i(rs)!=="svelte-10m58au"&&(rs.innerHTML=Ml),At=n(s),cs=m(s,"P",{"data-svelte-h":!0}),i(cs)!=="svelte-5avkqh"&&(cs.innerHTML=hl),Qt=n(s),c(os.$$.fragment,s),Lt=n(s),ys=m(s,"P",{"data-svelte-h":!0}),i(ys)!=="svelte-fl808g"&&(ys.textContent=wl),Pt=n(s),ds=m(s,"P",{"data-svelte-h":!0}),i(ds)!=="svelte-16ch1bg"&&(ds.textContent=ul),qt=n(s),Ms=m(s,"P",{"data-svelte-h":!0}),i(Ms)!=="svelte-1wd8j6z"&&(Ms.textContent=fl),Ot=n(s),c(hs.$$.fragment,s),Dt=n(s),ws=m(s,"P",{"data-svelte-h":!0}),i(ws)!=="svelte-1mvdyro"&&(ws.innerHTML=Tl),Kt=n(s),c(us.$$.fragment,s),se=n(s),fs=m(s,"P",{"data-svelte-h":!0}),i(fs)!=="svelte-1uk8yct"&&(fs.textContent=Ul),te=n(s),c(Ts.$$.fragment,s),ee=n(s),Us=m(s,"P",{"data-svelte-h":!0}),i(Us)!=="svelte-1mvdyro"&&(Us.innerHTML=Jl),le=n(s),c(Js.$$.fragment,s),ae=n(s),bs=m(s,"P",{"data-svelte-h":!0}),i(bs)!=="svelte-6uxdlz"&&(bs.textContent=bl),ne=n(s),vs=m(s,"P",{"data-svelte-h":!0}),i(vs)!=="svelte-1fhxr4a"&&(vs.textContent=vl),pe=n(s),c(js.$$.fragment,s),me=n(s),gs=m(s,"P",{"data-svelte-h":!0}),i(gs)!=="svelte-1m2g340"&&(gs.innerHTML=jl),ie=n(s),Cs=m(s,"P",{"data-svelte-h":!0}),i(Cs)!=="svelte-1n02gbg"&&(Cs.innerHTML=gl),re=n(s),c($s.$$.fragment,s),ce=n(s),Es=m(s,"P",{"data-svelte-h":!0}),i(Es)!=="svelte-i0llbc"&&(Es.textContent=Cl),oe=n(s),Is=m(s,"P",{"data-svelte-h":!0}),i(Is)!=="svelte-10quvd5"&&(Is.innerHTML=$l),ye=n(s),c(Rs.$$.fragment,s),de=n(s),Ws=m(s,"P",{"data-svelte-h":!0}),i(Ws)!=="svelte-2r45os"&&(Ws.textContent=El),Me=n(s),c(xs.$$.fragment,s),he=n(s),c(J.$$.fragment,s),we=n(s),Bs=m(s,"P",{"data-svelte-h":!0}),i(Bs)!=="svelte-1dubr7r"&&(Bs.innerHTML=Il),ue=n(s),c(Zs.$$.fragment,s),fe=n(s),c(b.$$.fragment,s),Te=n(s),_s=m(s,"P",{"data-svelte-h":!0}),i(_s)!=="svelte-1xyzp8m"&&(_s.textContent=Rl),Ue=n(s),c(Gs.$$.fragment,s),Je=n(s),Vs=m(s,"P",{"data-svelte-h":!0}),i(Vs)!=="svelte-1mvdyro"&&(Vs.innerHTML=Wl),be=n(s),c(ks.$$.fragment,s),ve=n(s),Ss=m(s,"P",{"data-svelte-h":!0}),i(Ss)!=="svelte-lmssjl"&&(Ss.textContent=xl),je=n(s),Hs=m(s,"P",{"data-svelte-h":!0}),i(Hs)!=="svelte-1fyzeuc"&&(Hs.textContent=Bl),ge=n(s),c(Xs.$$.fragment,s),Ce=n(s),Ns=m(s,"P",{"data-svelte-h":!0}),i(Ns)!=="svelte-1mvdyro"&&(Ns.innerHTML=Zl),$e=n(s),c(Fs.$$.fragment,s),Ee=n(s),zs=m(s,"P",{"data-svelte-h":!0}),i(zs)!=="svelte-13cz7lm"&&(zs.textContent=_l),Ie=n(s),Ys=m(s,"P",{"data-svelte-h":!0}),i(Ys)!=="svelte-rhbs7g"&&(Ys.textContent=Gl),Re=n(s),c(As.$$.fragment,s),We=n(s),st=m(s,"P",{}),tt(st).forEach(e),this.h()},h(){Vl(h,"name","hf:doc:metadata"),Vl(h,"content",Dl),Tt.a=null,xt.a=null,St.a=null},m(s,t){v(document.head,h),l(s,u,t),l(s,U,t),l(s,et,t),o(j,s,t),l(s,lt,t),o(g,s,t),l(s,at,t),l(s,C,t),l(s,nt,t),l(s,$,t),l(s,pt,t),l(s,E,t),l(s,mt,t),l(s,I,t),l(s,it,t),l(s,R,t),l(s,rt,t),o(W,s,t),l(s,ct,t),l(s,x,t),l(s,ot,t),o(B,s,t),l(s,yt,t),l(s,Z,t),l(s,dt,t),o(_,s,t),l(s,Mt,t),l(s,G,t),l(s,ht,t),l(s,V,t),l(s,wt,t),l(s,k,t),l(s,ut,t),l(s,S,t),l(s,ft,t),l(s,H,t),v(H,Be),Tt.m(Sl,H),l(s,Ut,t),l(s,X,t),l(s,Jt,t),l(s,N,t),l(s,bt,t),l(s,F,t),l(s,vt,t),o(z,s,t),l(s,jt,t),l(s,Y,t),l(s,gt,t),o(A,s,t),l(s,Ct,t),l(s,Q,t),l(s,$t,t),o(L,s,t),l(s,Et,t),l(s,P,t),l(s,It,t),l(s,q,t),l(s,Rt,t),o(O,s,t),l(s,Wt,t),l(s,f,t),v(f,Ze),v(f,Os),v(f,_e),v(f,Ds),v(f,Ge),xt.m(Hl,f),l(s,Bt,t),l(s,D,t),l(s,Zt,t),o(K,s,t),l(s,_t,t),l(s,ss,t),l(s,Gt,t),l(s,ts,t),l(s,Vt,t),l(s,es,t),l(s,kt,t),l(s,ls,t),v(ls,Ve),St.m(Xl,ls),l(s,Ht,t),l(s,as,t),l(s,Xt,t),o(ns,s,t),l(s,Nt,t),l(s,ps,t),l(s,Ft,t),l(s,ms,t),l(s,zt,t),o(is,s,t),l(s,Yt,t),l(s,rs,t),l(s,At,t),l(s,cs,t),l(s,Qt,t),o(os,s,t),l(s,Lt,t),l(s,ys,t),l(s,Pt,t),l(s,ds,t),l(s,qt,t),l(s,Ms,t),l(s,Ot,t),o(hs,s,t),l(s,Dt,t),l(s,ws,t),l(s,Kt,t),o(us,s,t),l(s,se,t),l(s,fs,t),l(s,te,t),o(Ts,s,t),l(s,ee,t),l(s,Us,t),l(s,le,t),o(Js,s,t),l(s,ae,t),l(s,bs,t),l(s,ne,t),l(s,vs,t),l(s,pe,t),o(js,s,t),l(s,me,t),l(s,gs,t),l(s,ie,t),l(s,Cs,t),l(s,re,t),o($s,s,t),l(s,ce,t),l(s,Es,t),l(s,oe,t),l(s,Is,t),l(s,ye,t),o(Rs,s,t),l(s,de,t),l(s,Ws,t),l(s,Me,t),o(xs,s,t),l(s,he,t),o(J,s,t),l(s,we,t),l(s,Bs,t),l(s,ue,t),o(Zs,s,t),l(s,fe,t),o(b,s,t),l(s,Te,t),l(s,_s,t),l(s,Ue,t),o(Gs,s,t),l(s,Je,t),l(s,Vs,t),l(s,be,t),o(ks,s,t),l(s,ve,t),l(s,Ss,t),l(s,je,t),l(s,Hs,t),l(s,ge,t),o(Xs,s,t),l(s,Ce,t),l(s,Ns,t),l(s,$e,t),o(Fs,s,t),l(s,Ee,t),l(s,zs,t),l(s,Ie,t),l(s,Ys,t),l(s,Re,t),o(As,s,t),l(s,We,t),l(s,st,t),xe=!0},p(s,[t]){const Ks={};t&2&&(Ks.$$scope={dirty:t,ctx:s}),J.$set(Ks);const T={};t&2&&(T.$$scope={dirty:t,ctx:s}),b.$set(T)},i(s){xe||(y(j.$$.fragment,s),y(g.$$.fragment,s),y(W.$$.fragment,s),y(B.$$.fragment,s),y(_.$$.fragment,s),y(z.$$.fragment,s),y(A.$$.fragment,s),y(L.$$.fragment,s),y(O.$$.fragment,s),y(K.$$.fragment,s),y(ns.$$.fragment,s),y(is.$$.fragment,s),y(os.$$.fragment,s),y(hs.$$.fragment,s),y(us.$$.fragment,s),y(Ts.$$.fragment,s),y(Js.$$.fragment,s),y(js.$$.fragment,s),y($s.$$.fragment,s),y(Rs.$$.fragment,s),y(xs.$$.fragment,s),y(J.$$.fragment,s),y(Zs.$$.fragment,s),y(b.$$.fragment,s),y(Gs.$$.fragment,s),y(ks.$$.fragment,s),y(Xs.$$.fragment,s),y(Fs.$$.fragment,s),y(As.$$.fragment,s),xe=!0)},o(s){d(j.$$.fragment,s),d(g.$$.fragment,s),d(W.$$.fragment,s),d(B.$$.fragment,s),d(_.$$.fragment,s),d(z.$$.fragment,s),d(A.$$.fragment,s),d(L.$$.fragment,s),d(O.$$.fragment,s),d(K.$$.fragment,s),d(ns.$$.fragment,s),d(is.$$.fragment,s),d(os.$$.fragment,s),d(hs.$$.fragment,s),d(us.$$.fragment,s),d(Ts.$$.fragment,s),d(Js.$$.fragment,s),d(js.$$.fragment,s),d($s.$$.fragment,s),d(Rs.$$.fragment,s),d(xs.$$.fragment,s),d(J.$$.fragment,s),d(Zs.$$.fragment,s),d(b.$$.fragment,s),d(Gs.$$.fragment,s),d(ks.$$.fragment,s),d(Xs.$$.fragment,s),d(Fs.$$.fragment,s),d(As.$$.fragment,s),xe=!1},d(s){s&&(e(u),e(U),e(et),e(lt),e(at),e(C),e(nt),e($),e(pt),e(E),e(mt),e(I),e(it),e(R),e(rt),e(ct),e(x),e(ot),e(yt),e(Z),e(dt),e(Mt),e(G),e(ht),e(V),e(wt),e(k),e(ut),e(S),e(ft),e(H),e(Ut),e(X),e(Jt),e(N),e(bt),e(F),e(vt),e(jt),e(Y),e(gt),e(Ct),e(Q),e($t),e(Et),e(P),e(It),e(q),e(Rt),e(Wt),e(f),e(Bt),e(D),e(Zt),e(_t),e(ss),e(Gt),e(ts),e(Vt),e(es),e(kt),e(ls),e(Ht),e(as),e(Xt),e(Nt),e(ps),e(Ft),e(ms),e(zt),e(Yt),e(rs),e(At),e(cs),e(Qt),e(Lt),e(ys),e(Pt),e(ds),e(qt),e(Ms),e(Ot),e(Dt),e(ws),e(Kt),e(se),e(fs),e(te),e(ee),e(Us),e(le),e(ae),e(bs),e(ne),e(vs),e(pe),e(me),e(gs),e(ie),e(Cs),e(re),e(ce),e(Es),e(oe),e(Is),e(ye),e(de),e(Ws),e(Me),e(he),e(we),e(Bs),e(ue),e(fe),e(Te),e(_s),e(Ue),e(Je),e(Vs),e(be),e(ve),e(Ss),e(je),e(Hs),e(ge),e(Ce),e(Ns),e($e),e(Ee),e(zs),e(Ie),e(Ys),e(Re),e(We),e(st)),e(h),M(j,s),M(g,s),M(W,s),M(B,s),M(_,s),M(z,s),M(A,s),M(L,s),M(O,s),M(K,s),M(ns,s),M(is,s),M(os,s),M(hs,s),M(us,s),M(Ts,s),M(Js,s),M(js,s),M($s,s),M(Rs,s),M(xs,s),M(J,s),M(Zs,s),M(b,s),M(Gs,s),M(ks,s),M(Xs,s),M(Fs,s),M(As,s)}}}const Dl='{"title":"Evaluation metrics for ASR","local":"evaluation-metrics-for-asr","sections":[{"title":"Частота ошибок в словах (Word Error Rate)","local":"частота-ошибок-в-словах-word-error-rate","sections":[],"depth":2},{"title":"Точность слов (Word Accuracy)","local":"точность-слов-word-accuracy","sections":[],"depth":2},{"title":"Частота ошибок в символах (Character Error Rate)","local":"частота-ошибок-в-символах-character-error-rate","sections":[],"depth":2},{"title":"Какую метрику следует использовать?","local":"какую-метрику-следует-использовать","sections":[],"depth":2},{"title":"Нормализация","local":"нормализация","sections":[{"title":"Собираем все воедино","local":"собираем-все-воедино","sections":[],"depth":3}],"depth":2}],"depth":1}';function Kl(qs){return Fl(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class na extends zl{constructor(h){super(),Yl(this,h,Kl,Ol,Nl,{})}}export{na as component};
