import{s as ja,o as wa,n as ca}from"../chunks/scheduler.cd324960.js";import{S as Ua,i as ra,e as p,s as n,c as i,h as ua,a as M,d as e,b as a,f as Ta,g as J,j as y,k as ln,l as ha,m as s,n as m,t as T,o as j,p as w}from"../chunks/index.d5c3adcc.js";import{T as fa}from"../chunks/Tip.889bec11.js";import{C as oa,H as u,E as da}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.8955e42b.js";import{C as c}from"../chunks/CodeBlock.e6d23c2c.js";function ba(Gt){let U,d=`В нашем примере мы будем использовать около 40 часов обучающих данных. Если вы хотите повторить этот процесс, используя бесплатный тарифный план Google Colab,
необходимо уменьшить объем обучающих данных примерно до 10-15 часов и сократить количество шагов обучения.`;return{c(){U=p("p"),U.textContent=d},l(r){U=M(r,"P",{"data-svelte-h":!0}),y(U)!=="svelte-1ywpoki"&&(U.textContent=d)},m(r,Bt){s(r,U,Bt)},p:ca,d(r){r&&e(U)}}}function Ca(Gt){let U,d,r,Bt,b,vt,C,Wt,I,tn=`Теперь, когда вы знакомы с задачей преобразования текста в речь и внутренним устройством модели SpeechT5, которая была предварительно обучена
на англоязычных данных, давайте посмотрим, как мы можем дообучить ее для другого языка.`,Et,$,Yt,k,en="Если вы хотите воспроизвести этот пример, убедитесь, что у вас есть графический процессор. В блокноте это можно проверить с помощью следующей команды:",Xt,R,Nt,h,Dt,Z,sn="Вам также понадобятся некоторые дополнительные зависимости:",Ft,Q,zt,x,nn="Наконец, не забудьте войти в свою учетную запись Hugging Face, чтобы загрузить свою модель и поделиться ею с сообществом:",Ht,A,qt,g,St,V,an=`В данном примере мы возьмем подмножество голландского (<code>nl</code>) языка из датасета <a href="https://huggingface.co/datasets/qmeeus/voxpopuli" rel="nofollow">VoxPopuli</a>.
<a href="https://huggingface.co/datasets/qmeeus/voxpopuli" rel="nofollow">VoxPopuli</a> - это обширный многоязычный речевой корпус, состоящий из данных,
полученных из записей мероприятий Европейского парламента 2009-2020 гг. Он содержит маркированные данные аудио-транскрипций для 15 европейских языков.
Хотя мы будем использовать подмножество голландского языка, вы можете выбрать другое подмножество.`,Lt,B,pn=`Это набор данных автоматического распознавания речи (ASR), поэтому, как уже говорилось, он не является наиболее подходящим
вариантом для обучения TTS-моделей. Однако для данного упражнения этого будет вполне достаточно.`,Pt,_,Mn="Давайте загрузим данные:",Ot,G,Kt,v,yn="<strong>Output:</strong>",le,W,te,E,Jn=`20968 примеров должно быть достаточно для дообучения. Для SpeechT5 требуется, чтобы частота дискретизации аудиоданных составляла 16 кГц, поэтому
убедимся, что примеры в наборе данных соответствуют этому требованию:`,ee,Y,se,X,ne,N,mn=`Начнем с определения используемой контрольной точки модели и загрузки соответствующего процессора, содержащего как токенизатор,
так и экстрактор признаков, которые понадобятся нам для подготовки данных к обучению:`,ae,D,pe,F,Me,z,Tn="Во-первых, для подготовки текста нам понадобится часть процессора - токенизатор, поэтому возьмем его:",ye,H,ie,q,jn="Рассмотрим пример:",Je,S,me,L,wn="<strong>Output:</strong>",Te,P,je,O,cn=`Примеры из датасета содержат признак <code>text</code>, который мы будем использовать в качестве входного текста. Важно знать,
что в токенизаторе SpeechT5 нет токенов для чисел, поэтому если ваш текст содержит числа, возможно, их придется записать в виде текста.`,we,K,Un=`Поскольку SpeechT5 обучалась на английском языке, она может не распознать некоторые символы в голландском наборе данных. Если
оставить все как есть, то эти символы будут преобразованы в токены <code>&lt;unk&gt;</code>. Однако в голландском языке некоторые символы, например <code>à</code>, используются
для выделения слогов. Чтобы сохранить смысл текста, можно заменить этот символ на обычное <code>a</code>.`,ce,ll,rn=`Чтобы выявить неподдерживаемые токены, извлечем все уникальные символы из датасета с помощью <code>SpeechT5Tokenizer</code>, который
работает с символами как с токенами. Для этого напишем функцию отображения <code>extract_all_chars</code>, которая объединяет
транскрипции из всех примеров в одну строку и преобразует ее в набор символов. [NL]
Обязательно задайте <code>batched=True</code> и <code>batch_size=-1</code> в <code>dataset.map()</code>, чтобы все транскрипции были доступны сразу для
функции отображения.`,Ue,tl,re,el,un=`Теперь у вас есть два набора символов: один со словарем из датасета, другой - со словарем из токенизатора.
Для выявления неподдерживаемых символов в наборе данных можно взять разность между этими двумя наборами. Полученный набор
будет содержать символы, которые есть в наборе данных, но отсутствуют в токенизаторе.`,ue,sl,he,nl,hn="<strong>Output:</strong>",fe,al,oe,pl,fn=`Для работы с неподдерживаемыми символами, выявленными на предыдущем этапе, можно определить функцию, которая сопоставляет эти символы с допустимыми токенами.
Заметим, что пробелы уже заменены на <code>▁</code> в токенизаторе и не нуждаются в отдельной обработке.`,de,Ml,be,yl,on="Теперь, когда мы разобрались со специальными символами в тексте, пришло время переключить внимание на аудио данные.",Ce,il,Ie,Jl,dn=`Набор данных VoxPopuli включает речь нескольких дикторов, но сколько дикторов представлено в наборе? Чтобы
определить это, мы можем подсчитать количество уникальных дикторов и количество примеров, которые каждый диктор вносит в набор данных.
Учитывая, что всего в наборе данных 20 968 примеров, эта информация позволит нам лучше понять распределение
дикторов и примеров в данных.`,$e,ml,ke,Tl,bn="Построив гистограмму, можно получить представление о том, сколько данных имеется для каждого диктора.",Re,jl,Ze,f,Cn='<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/tts_speakers_histogram.png" alt="Speakers histogram"/>',Qe,wl,In=`Гистограмма показывает, что примерно треть дикторов в наборе данных имеет менее 100 примеров, в то время как
около десяти дикторов имеют более 500 примеров. Чтобы повысить эффективность обучения и сбалансировать набор данных, мы можем ограничить
данные дикторами, имеющими от 100 до 400 примеров.`,xe,cl,Ae,Ul,$n="Проверим, сколько осталось дикторов:",ge,rl,Ve,ul,kn="<strong>Output:</strong>",Be,hl,_e,fl,Rn="Посмотрим, сколько осталось примеров:",Ge,ol,ve,dl,Zn="<strong>Output:</strong>",We,bl,Ee,Cl,Qn="В результате вы получаете чуть менее 10 000 примеров из примерно 40 уникальных дикторов, что должно быть вполне достаточно.",Ye,Il,xn=`Отметим, что некоторые дикторы с небольшим количеством примеров могут иметь больше аудиофайлов, если примеры длинные. Однако
определение общего объема аудиозаписей для каждого диктора требует сканирования всего датасета, что является
трудоемким процессом, включающим загрузку и декодирование каждого аудиофайла. Поэтому в данном случае мы решили пропустить этот этап.`,Xe,$l,Ne,kl,An=`Для того чтобы модель TTS могла различать несколько дикторов, необходимо создать эмбеддинги диктора для каждого примера.
Эмбеддинги дикторов - это дополнительный вход для модели, который фиксирует характеристики голоса конкретного диктора.
Для создания эмбеддингов диктора используется предварительно обученная модель <a href="https://huggingface.co/speechbrain/spkrec-xvect-voxceleb" rel="nofollow">spkrec-xvect-voxceleb</a>
от SpeechBrain.`,De,Rl,gn=`Создадим функцию <code>create_speaker_embedding()</code>, которая принимает входную волновую форму звука и выдает 512-элементный вектор,
содержащий соответствующие эмбеддинги диктора.`,Fe,Zl,ze,Ql,Vn=`Важно отметить, что модель <code>speechbrain/spkrec-xvect-voxceleb</code> была обучена на английской речи из датасета VoxCeleb,
в то время как учебные примеры в данном руководстве представлены на голландском языке. Хотя мы считаем, что данная модель все равно будет генерировать разумные эмбеддинги диктора
для нашего голландского датасета, это предположение может быть справедливо не во всех случаях.`,He,xl,Bn=`Для получения оптимальных результатов необходимо сначала обучить модель X-вектора на целевой речи. Это позволит модели
лучше улавливать уникальные речевые особенности, присущие голландскому языку. Если вы хотите обучить свою собственную X-векторную модель,
то в качестве примера можно использовать <a href="https://huggingface.co/mechanicalsea/speecht5-vc/blob/main/manifest/utils/prep_cmu_arctic_spkemb.py" rel="nofollow">этот скрипт</a>.`,qe,Al,Se,gl,_n=`Наконец, обработаем данные в тот формат, который ожидает модель. Создадим функцию <code>prepare_dataset</code>, которая принимает
один пример и использует объект <code>SpeechT5Processor</code> для токенизации входного текста и загрузки целевого аудио в лог-мел спектрограмму.
Она также должна добавлять эмбеддинги диктора в качестве дополнительного входного сигнала.`,Le,Vl,Pe,Bl,Gn="Проверить правильность обработки можно на одном из примеров:",Oe,_l,Ke,Gl,vn="<strong>Output:</strong>",ls,vl,ts,Wl,Wn="Эмбеддинги диктора должны представлять собой 512-элементный вектор:",es,El,ss,Yl,En="<strong>Output:</strong>",ns,Xl,as,Nl,Yn="Метки должны представлять собой лог-мел спектрограмму с 80 мел бинами.",ps,Dl,Ms,o,Xn='<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/tts_logmelspectrogram_1.png" alt="Log-mel spectrogram with 80 mel bins"/>',ys,Fl,Nn=`Примечание: Если данная спектрограмма кажется вам непонятной, то это может быть связано с тем, что вы привыкли располагать низкие частоты
внизу, а высокие - вверху графика. Однако при построении спектрограмм в виде изображения с помощью библиотеки matplotlib ось y
переворачивается, и спектрограммы выглядят перевернутыми.`,is,zl,Dn="Теперь необходимо применить функцию препроцессинга ко всему набору данных. Это займет от 5 до 10 минут.",Js,Hl,ms,ql,Fn=`Появится предупреждение о том, что длина некоторых примеров в датасете превышает максимальную длину входных данных, которую может обработать модель (600 лексем).
Удалите эти примеры из датасета. Здесь мы идем еще дальше и для того, чтобы увеличить размер батча, удаляем все, что превышает 200 токенов.`,Ts,Sl,js,Ll,zn="<strong>Output:</strong>",ws,Pl,cs,Ol,Hn="Затем создадим базовое разделение на тренировочную и тестовую части:",Us,Kl,rs,lt,us,tt,qn=`Для того чтобы объединить несколько примеров в батч, необходимо определить пользовательский коллатор данных. Этот коллатор будет дополнять более короткие последовательности токенами,
гарантируя, что все примеры будут иметь одинаковую длину. Для меток спектрограммы дополняемая части заменяются на специальное значение <code>-100</code>.
Это специальное значение указывает модели игнорировать эту часть спектрограммы при расчете потерь спектрограммы.`,hs,et,fs,st,Sn=`В SpeechT5 входная информация для декодера уменьшается в 2 раза. Другими словами, отбрасывается каждый второй
временной шаг из целевой последовательности.Затем декодер предсказывает последовательность, которая в два раза длиннее. Поскольку исходная длина
целевой последовательности [NL] может быть нечетной, коллатор данных обязательно округляет максимальную длину батча до значения [NL], кратного 2.`,os,nt,ds,at,bs,pt,Ln="Загрузите предварительно обученную модель из той же контрольной точки, которая использовалась для загрузки процессора:",Cs,Mt,Is,yt,Pn=`Опция <code>use_cache=True</code> несовместима с использованием градиентных контрольных точек. Отключите ее для обучения и снова включите кэш для генерации,
чтобы ускорить  инференс:`,$s,it,ks,Jt,On=`Определим аргументы обучения. Здесь мы не вычисляем никаких оценочных метрик в процессе обучения,
мы поговорим об оценке позже в этой главе. Вместо этого мы будем рассматривать только потери:`,Rs,mt,Zs,Tt,Kn="Инстанцируем объект <code>Trainer</code> и передаем ему модель, набор данных и коллатор данных.",Qs,jt,xs,wt,la=`И с этим мы готовы приступить к обучению! Обучение займет несколько часов. В зависимости от используемого GPU
возможно, что при начале обучения возникнет ошибка CUDA “out-of-memory”. В этом случае можно уменьшить
размер <code>per_device_train_batch_size</code> постепенно в 2 раза и увеличить <code>gradient_accumulation_steps</code> в 2 раза, чтобы компенсировать это.`,As,ct,gs,Ut,ta="Push the final model to the 🤗 Hub:",Vs,rt,Bs,ut,_s,ht,ea=`После того как модель дообучена, ее можно использовать для инференса! Загрузите модель из 🤗 Hub (убедитесь, что в
следующем фрагменте кода используется имя вашей учетной записи):`,Gs,ft,vs,ot,sa="Выберем пример, здесь мы возьмем пример из тестового набора данных. Получаем эмбеддинги диктора.",Ws,dt,Es,bt,na="Определим некоторый входной текст и токенизируем его.",Ys,Ct,Xs,It,aa="Выполним препроцессинг входного текста:",Ns,$t,Ds,kt,pa="Инстанцируем вокодер и сгенерируем речь:",Fs,Rt,zs,Zt,Ma="Готовы послушать результат?",Hs,Qt,qs,xt,ya=`Получение удовлетворительных результатов с помощью этой модели на новом языке может оказаться непростой задачей. Качество эмбеддингов диктора
может быть существенным фактором. Поскольку SpeechT5 была предварительно обучена на английских x-векторах, она показывает наилучшие результаты
при использовании эмбеддингов английских дикторов. Если синтезированная речь звучит плохо, попробуйте использовать другие эмбеддинги диктора.`,Ss,At,ia=`Увеличение продолжительности обучения, вероятно, также повысит качество результатов. Несмотря на это, речь явно голландская, а не английская, и в ней
передаются особенности голоса говорящего (сравните с оригинальным аудио в примере).
Еще один момент, с которым можно поэкспериментировать, - это настройка модели. Например, попробуйте использовать <code>config.reduction_factor = 1</code>, чтобы
посмотреть, улучшит ли это результаты.`,Ls,gt,Ja="В следующем разделе мы расскажем о том, как мы оцениваем модели преобразования текста в речь.",Ps,Vt,Os,_t,Ks;return b=new oa({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),C=new u({props:{title:"Дообучение SpeechT5",local:"дообучение-speecht5",headingTag:"h1"}}),$=new u({props:{title:"House-keeping",local:"house-keeping",headingTag:"h2"}}),R=new c({props:{code:"bnZpZGlhLXNtaQ==",highlighted:"nvidia-smi",wrap:!1}}),h=new fa({props:{warning:!0,$$slots:{default:[ba]},$$scope:{ctx:Gt}}}),Q=new c({props:{code:"cGlwJTIwaW5zdGFsbCUyMHRyYW5zZm9ybWVycyUyMGRhdGFzZXRzJTIwc291bmRmaWxlJTIwc3BlZWNoYnJhaW4lMjBhY2NlbGVyYXRl",highlighted:"pip install transformers datasets soundfile speechbrain accelerate",wrap:!1}}),A=new c({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMG5vdGVib29rX2xvZ2luJTBBJTBBbm90ZWJvb2tfbG9naW4oKQ==",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> notebook_login

notebook_login()`,wrap:!1}}),g=new u({props:{title:"Набор данных",local:"набор-данных",headingTag:"h2"}}),G=new c({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTJDJTIwQXVkaW8lMEElMEFkYXRhc2V0JTIwJTNEJTIwbG9hZF9kYXRhc2V0KCUyMnFtZWV1cyUyRnZveHBvcHVsaSUyMiUyQyUyMCUyMm5sJTIyJTJDJTIwc3BsaXQlM0QlMjJ0cmFpbiUyMiklMEFsZW4oZGF0YXNldCk=",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset, Audio

dataset = load_dataset(<span class="hljs-string">&quot;qmeeus/voxpopuli&quot;</span>, <span class="hljs-string">&quot;nl&quot;</span>, split=<span class="hljs-string">&quot;train&quot;</span>)
<span class="hljs-built_in">len</span>(dataset)`,wrap:!1}}),W=new c({props:{code:"MjA5Njg=",highlighted:"20968",wrap:!1}}),Y=new c({props:{code:"ZGF0YXNldCUyMCUzRCUyMGRhdGFzZXQuY2FzdF9jb2x1bW4oJTIyYXVkaW8lMjIlMkMlMjBBdWRpbyhzYW1wbGluZ19yYXRlJTNEMTYwMDApKQ==",highlighted:'dataset = dataset.cast_column(<span class="hljs-string">&quot;audio&quot;</span>, Audio(sampling_rate=<span class="hljs-number">16000</span>))',wrap:!1}}),X=new u({props:{title:"Препроцессинг данных",local:"препроцессинг-данных",headingTag:"h2"}}),D=new c({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFNwZWVjaFQ1UHJvY2Vzc29yJTBBJTBBY2hlY2twb2ludCUyMCUzRCUyMCUyMm1pY3Jvc29mdCUyRnNwZWVjaHQ1X3R0cyUyMiUwQXByb2Nlc3NvciUyMCUzRCUyMFNwZWVjaFQ1UHJvY2Vzc29yLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> SpeechT5Processor

checkpoint = <span class="hljs-string">&quot;microsoft/speecht5_tts&quot;</span>
processor = SpeechT5Processor.from_pretrained(checkpoint)`,wrap:!1}}),F=new u({props:{title:"Очистка текста для токенизации SpeechT5",local:"очистка-текста-для-токенизации-speecht5",headingTag:"h3"}}),H=new c({props:{code:"dG9rZW5pemVyJTIwJTNEJTIwcHJvY2Vzc29yLnRva2VuaXplcg==",highlighted:"tokenizer = processor.tokenizer",wrap:!1}}),S=new c({props:{code:"ZGF0YXNldCU1QjAlNUQ=",highlighted:'dataset[<span class="hljs-number">0</span>]',wrap:!1}}),P=new c({props:{code:"JTdCJ2F1ZGlvX2lkJyUzQSUyMCcyMDEwMDIxMC0wOTAwLVBMRU5BUlktMy1ubF8yMDEwMDIxMC0wOSUzQTA2JTNBNDNfNCclMkMlMEElMjAnbGFuZ3VhZ2UnJTNBJTIwOSUyQyUwQSUyMCdhdWRpbyclM0ElMjAlN0IncGF0aCclM0ElMjAnJTJGcm9vdCUyRi5jYWNoZSUyRmh1Z2dpbmdmYWNlJTJGZGF0YXNldHMlMkZkb3dubG9hZHMlMkZleHRyYWN0ZWQlMkYwMmVjNmExOWQ1Yjk3YzAzZTEzNzkyNTAzNzg0NTRkYmYzZmEyOTcyOTQzNTA0YTkxYzdkYTUwNDVhYTI2YTg5JTJGdHJhaW5fcGFydF8wJTJGMjAxMDAyMTAtMDkwMC1QTEVOQVJZLTMtbmxfMjAxMDAyMTAtMDklM0EwNiUzQTQzXzQud2F2JyUyQyUwQSUyMCUyMCdhcnJheSclM0ElMjBhcnJheSglNUIlMjA0LjI3MjQ2MDk0ZS0wNCUyQyUyMCUyMDEuMzEyMjU1ODZlLTAzJTJDJTIwJTIwMS4wMzc1OTc2NmUtMDMlMkMlMjAuLi4lMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAtOS4xNTUyNzM0NGUtMDUlMkMlMjAlMjA3LjYyOTM5NDUzZS0wNCUyQyUyMC0yLjQ0MTQwNjI1ZS0wNCU1RCklMkMlMEElMjAlMjAnc2FtcGxpbmdfcmF0ZSclM0ElMjAxNjAwMCU3RCUyQyUwQSUyMCd0ZXh0JyUzQSUyMCdkYXQlMjBrYW4lMjBuYWFyJTIwbWlqbiUyMGdldm9lbCUyMGFsbGVlbiUyMG1ldCUyMGVlbiUyMGJyZWRlJTIwbWVlcmRlcmhlaWQlMjBkaWUlMjB3aWolMjBzYW1lbiUyMHpvZWtlbi4nJTJDJTBBJTIwJ2dlbmRlciclM0ElMjAnZmVtYWxlJyUyQyUwQSUyMCdzcGVha2VyX2lkJyUzQSUyMCcxMTIyJyUyQyUwQSUyMCdpc19nb2xkX3RyYW5zY3JpcHQnJTNBJTIwVHJ1ZSUyQyUwQSUyMCdhY2NlbnQnJTNBJTIwJ05vbmUnJTdE",highlighted:`{&#x27;audio_id&#x27;: &#x27;<span class="hljs-number">20100210-0900</span>-PLENARY-3-nl_<span class="hljs-number">20100210-09:06:43</span>_4&#x27;,
 &#x27;language&#x27;: <span class="hljs-number">9</span>,
 &#x27;audio&#x27;: {&#x27;path&#x27;: &#x27;/root/.cache/huggingface/datasets/downloads/extracted/02ec6a19d5b97c03e<span class="hljs-number">137925037845</span>4dbf3fa<span class="hljs-number">2972943504</span>a91c7da<span class="hljs-number">5045</span>aa26a89/train_part_0/<span class="hljs-number">20100210-0900</span>-PLENARY-3-nl_<span class="hljs-number">20100210-09:06:43</span>_4.wav&#x27;,
  &#x27;array&#x27;: array([ <span class="hljs-number">4.27246094</span>e-<span class="hljs-number">04</span>,  <span class="hljs-number">1.31225586</span>e-<span class="hljs-number">03</span>,  <span class="hljs-number">1.03759766</span>e-<span class="hljs-number">03</span>, ...,
         -<span class="hljs-number">9.15527344</span>e-<span class="hljs-number">05</span>,  <span class="hljs-number">7.62939453</span>e-<span class="hljs-number">04</span>, -<span class="hljs-number">2.44140625</span>e-<span class="hljs-number">04</span>]),
  &#x27;sampling_rate&#x27;: <span class="hljs-number">16000</span>},
 &#x27;text&#x27;: &#x27;dat kan naar mijn gevoel alleen met een brede meerderheid die wij samen zoeken.&#x27;,
 &#x27;gender&#x27;: &#x27;female&#x27;,
 &#x27;speaker_id&#x27;: &#x27;<span class="hljs-number">1122</span>&#x27;,
 &#x27;is_gold_transcript&#x27;: True,
 &#x27;accent&#x27;: &#x27;None&#x27;}`,wrap:!1}}),tl=new c({props:{code:"ZGVmJTIwZXh0cmFjdF9hbGxfY2hhcnMoYmF0Y2gpJTNBJTBBJTIwJTIwJTIwJTIwYWxsX3RleHQlMjAlM0QlMjAlMjIlMjAlMjIuam9pbihiYXRjaCU1QiUyMnRleHQlMjIlNUQpJTBBJTIwJTIwJTIwJTIwdm9jYWIlMjAlM0QlMjBsaXN0KHNldChhbGxfdGV4dCkpJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCJTIydm9jYWIlMjIlM0ElMjAlNUJ2b2NhYiU1RCUyQyUyMCUyMmFsbF90ZXh0JTIyJTNBJTIwJTVCYWxsX3RleHQlNUQlN0QlMEElMEElMEF2b2NhYnMlMjAlM0QlMjBkYXRhc2V0Lm1hcCglMEElMjAlMjAlMjAlMjBleHRyYWN0X2FsbF9jaGFycyUyQyUwQSUyMCUyMCUyMCUyMGJhdGNoZWQlM0RUcnVlJTJDJTBBJTIwJTIwJTIwJTIwYmF0Y2hfc2l6ZSUzRC0xJTJDJTBBJTIwJTIwJTIwJTIwa2VlcF9pbl9tZW1vcnklM0RUcnVlJTJDJTBBJTIwJTIwJTIwJTIwcmVtb3ZlX2NvbHVtbnMlM0RkYXRhc2V0LmNvbHVtbl9uYW1lcyUyQyUwQSklMEElMEFkYXRhc2V0X3ZvY2FiJTIwJTNEJTIwc2V0KHZvY2FicyU1QiUyMnZvY2FiJTIyJTVEJTVCMCU1RCklMEF0b2tlbml6ZXJfdm9jYWIlMjAlM0QlMjAlN0JrJTIwZm9yJTIwayUyQyUyMF8lMjBpbiUyMHRva2VuaXplci5nZXRfdm9jYWIoKS5pdGVtcygpJTdE",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">extract_all_chars</span>(<span class="hljs-params">batch</span>):
    all_text = <span class="hljs-string">&quot; &quot;</span>.join(batch[<span class="hljs-string">&quot;text&quot;</span>])
    vocab = <span class="hljs-built_in">list</span>(<span class="hljs-built_in">set</span>(all_text))
    <span class="hljs-keyword">return</span> {<span class="hljs-string">&quot;vocab&quot;</span>: [vocab], <span class="hljs-string">&quot;all_text&quot;</span>: [all_text]}


vocabs = dataset.<span class="hljs-built_in">map</span>(
    extract_all_chars,
    batched=<span class="hljs-literal">True</span>,
    batch_size=-<span class="hljs-number">1</span>,
    keep_in_memory=<span class="hljs-literal">True</span>,
    remove_columns=dataset.column_names,
)

dataset_vocab = <span class="hljs-built_in">set</span>(vocabs[<span class="hljs-string">&quot;vocab&quot;</span>][<span class="hljs-number">0</span>])
tokenizer_vocab = {k <span class="hljs-keyword">for</span> k, _ <span class="hljs-keyword">in</span> tokenizer.get_vocab().items()}`,wrap:!1}}),sl=new c({props:{code:"ZGF0YXNldF92b2NhYiUyMC0lMjB0b2tlbml6ZXJfdm9jYWI=",highlighted:"dataset_vocab - tokenizer_vocab",wrap:!1}}),al=new c({props:{code:"JTdCJyUyMCclMkMlMjAnJUMzJUEwJyUyQyUyMCclQzMlQTcnJTJDJTIwJyVDMyVBOCclMkMlMjAnJUMzJUFCJyUyQyUyMCclQzMlQUQnJTJDJTIwJyVDMyVBRiclMkMlMjAnJUMzJUI2JyUyQyUyMCclQzMlQkMnJTdE",highlighted:"{&#x27; &#x27;, &#x27;à&#x27;, &#x27;ç&#x27;, &#x27;è&#x27;, &#x27;ë&#x27;, &#x27;í&#x27;, &#x27;ï&#x27;, &#x27;ö&#x27;, &#x27;ü&#x27;}",wrap:!1}}),Ml=new c({props:{code:"cmVwbGFjZW1lbnRzJTIwJTNEJTIwJTVCJTBBJTIwJTIwJTIwJTIwKCUyMiVDMyVBMCUyMiUyQyUyMCUyMmElMjIpJTJDJTBBJTIwJTIwJTIwJTIwKCUyMiVDMyVBNyUyMiUyQyUyMCUyMmMlMjIpJTJDJTBBJTIwJTIwJTIwJTIwKCUyMiVDMyVBOCUyMiUyQyUyMCUyMmUlMjIpJTJDJTBBJTIwJTIwJTIwJTIwKCUyMiVDMyVBQiUyMiUyQyUyMCUyMmUlMjIpJTJDJTBBJTIwJTIwJTIwJTIwKCUyMiVDMyVBRCUyMiUyQyUyMCUyMmklMjIpJTJDJTBBJTIwJTIwJTIwJTIwKCUyMiVDMyVBRiUyMiUyQyUyMCUyMmklMjIpJTJDJTBBJTIwJTIwJTIwJTIwKCUyMiVDMyVCNiUyMiUyQyUyMCUyMm8lMjIpJTJDJTBBJTIwJTIwJTIwJTIwKCUyMiVDMyVCQyUyMiUyQyUyMCUyMnUlMjIpJTJDJTBBJTVEJTBBJTBBJTBBZGVmJTIwY2xlYW51cF90ZXh0KGlucHV0cyklM0ElMEElMjAlMjAlMjAlMjBmb3IlMjBzcmMlMkMlMjBkc3QlMjBpbiUyMHJlcGxhY2VtZW50cyUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlucHV0cyU1QiUyMnRleHQlMjIlNUQlMjAlM0QlMjBpbnB1dHMlNUIlMjJ0ZXh0JTIyJTVELnJlcGxhY2Uoc3JjJTJDJTIwZHN0KSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMGlucHV0cyUwQSUwQSUwQWRhdGFzZXQlMjAlM0QlMjBkYXRhc2V0Lm1hcChjbGVhbnVwX3RleHQp",highlighted:`replacements = [
    (<span class="hljs-string">&quot;à&quot;</span>, <span class="hljs-string">&quot;a&quot;</span>),
    (<span class="hljs-string">&quot;ç&quot;</span>, <span class="hljs-string">&quot;c&quot;</span>),
    (<span class="hljs-string">&quot;è&quot;</span>, <span class="hljs-string">&quot;e&quot;</span>),
    (<span class="hljs-string">&quot;ë&quot;</span>, <span class="hljs-string">&quot;e&quot;</span>),
    (<span class="hljs-string">&quot;í&quot;</span>, <span class="hljs-string">&quot;i&quot;</span>),
    (<span class="hljs-string">&quot;ï&quot;</span>, <span class="hljs-string">&quot;i&quot;</span>),
    (<span class="hljs-string">&quot;ö&quot;</span>, <span class="hljs-string">&quot;o&quot;</span>),
    (<span class="hljs-string">&quot;ü&quot;</span>, <span class="hljs-string">&quot;u&quot;</span>),
]


<span class="hljs-keyword">def</span> <span class="hljs-title function_">cleanup_text</span>(<span class="hljs-params">inputs</span>):
    <span class="hljs-keyword">for</span> src, dst <span class="hljs-keyword">in</span> replacements:
        inputs[<span class="hljs-string">&quot;text&quot;</span>] = inputs[<span class="hljs-string">&quot;text&quot;</span>].replace(src, dst)
    <span class="hljs-keyword">return</span> inputs


dataset = dataset.<span class="hljs-built_in">map</span>(cleanup_text)`,wrap:!1}}),il=new u({props:{title:"Дикторы",local:"дикторы",headingTag:"h3"}}),ml=new c({props:{code:"ZnJvbSUyMGNvbGxlY3Rpb25zJTIwaW1wb3J0JTIwZGVmYXVsdGRpY3QlMEElMEFzcGVha2VyX2NvdW50cyUyMCUzRCUyMGRlZmF1bHRkaWN0KGludCklMEElMEFmb3IlMjBzcGVha2VyX2lkJTIwaW4lMjBkYXRhc2V0JTVCJTIyc3BlYWtlcl9pZCUyMiU1RCUzQSUwQSUyMCUyMCUyMCUyMHNwZWFrZXJfY291bnRzJTVCc3BlYWtlcl9pZCU1RCUyMCUyQiUzRCUyMDE=",highlighted:`<span class="hljs-keyword">from</span> collections <span class="hljs-keyword">import</span> defaultdict

speaker_counts = defaultdict(<span class="hljs-built_in">int</span>)

<span class="hljs-keyword">for</span> speaker_id <span class="hljs-keyword">in</span> dataset[<span class="hljs-string">&quot;speaker_id&quot;</span>]:
    speaker_counts[speaker_id] += <span class="hljs-number">1</span>`,wrap:!1}}),jl=new c({props:{code:"aW1wb3J0JTIwbWF0cGxvdGxpYi5weXBsb3QlMjBhcyUyMHBsdCUwQSUwQXBsdC5maWd1cmUoKSUwQXBsdC5oaXN0KHNwZWFrZXJfY291bnRzLnZhbHVlcygpJTJDJTIwYmlucyUzRDIwKSUwQXBsdC55bGFiZWwoJTIyU3BlYWtlcnMlMjIpJTBBcGx0LnhsYWJlbCglMjJFeGFtcGxlcyUyMiklMEFwbHQuc2hvdygp",highlighted:`<span class="hljs-keyword">import</span> matplotlib.pyplot <span class="hljs-keyword">as</span> plt

plt.figure()
plt.hist(speaker_counts.values(), bins=<span class="hljs-number">20</span>)
plt.ylabel(<span class="hljs-string">&quot;Speakers&quot;</span>)
plt.xlabel(<span class="hljs-string">&quot;Examples&quot;</span>)
plt.show()`,wrap:!1}}),cl=new c({props:{code:"ZGVmJTIwc2VsZWN0X3NwZWFrZXIoc3BlYWtlcl9pZCklM0ElMEElMjAlMjAlMjAlMjByZXR1cm4lMjAxMDAlMjAlM0MlM0QlMjBzcGVha2VyX2NvdW50cyU1QnNwZWFrZXJfaWQlNUQlMjAlM0MlM0QlMjA0MDAlMEElMEElMEFkYXRhc2V0JTIwJTNEJTIwZGF0YXNldC5maWx0ZXIoc2VsZWN0X3NwZWFrZXIlMkMlMjBpbnB1dF9jb2x1bW5zJTNEJTVCJTIyc3BlYWtlcl9pZCUyMiU1RCk=",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">select_speaker</span>(<span class="hljs-params">speaker_id</span>):
    <span class="hljs-keyword">return</span> <span class="hljs-number">100</span> &lt;= speaker_counts[speaker_id] &lt;= <span class="hljs-number">400</span>


dataset = dataset.<span class="hljs-built_in">filter</span>(select_speaker, input_columns=[<span class="hljs-string">&quot;speaker_id&quot;</span>])`,wrap:!1}}),rl=new c({props:{code:"bGVuKHNldChkYXRhc2V0JTVCJTIyc3BlYWtlcl9pZCUyMiU1RCkp",highlighted:'<span class="hljs-built_in">len</span>(<span class="hljs-built_in">set</span>(dataset[<span class="hljs-string">&quot;speaker_id&quot;</span>]))',wrap:!1}}),hl=new c({props:{code:"NDI=",highlighted:"42",wrap:!1}}),ol=new c({props:{code:"bGVuKGRhdGFzZXQp",highlighted:'<span class="hljs-built_in">len</span>(dataset)',wrap:!1}}),bl=new c({props:{code:"OTk3Mw==",highlighted:'<span class="hljs-number">9973</span>',wrap:!1}}),$l=new u({props:{title:"Эмбеддинги диктора",local:"эмбеддинги-диктора",headingTag:"h3"}}),Zl=new c({props:{code:"aW1wb3J0JTIwb3MlMEFpbXBvcnQlMjB0b3JjaCUwQWZyb20lMjBzcGVlY2hicmFpbi5wcmV0cmFpbmVkJTIwaW1wb3J0JTIwRW5jb2RlckNsYXNzaWZpZXIlMEElMEFzcGtfbW9kZWxfbmFtZSUyMCUzRCUyMCUyMnNwZWVjaGJyYWluJTJGc3BrcmVjLXh2ZWN0LXZveGNlbGViJTIyJTBBJTBBZGV2aWNlJTIwJTNEJTIwJTIyY3VkYSUyMiUyMGlmJTIwdG9yY2guY3VkYS5pc19hdmFpbGFibGUoKSUyMGVsc2UlMjAlMjJjcHUlMjIlMEFzcGVha2VyX21vZGVsJTIwJTNEJTIwRW5jb2RlckNsYXNzaWZpZXIuZnJvbV9ocGFyYW1zKCUwQSUyMCUyMCUyMCUyMHNvdXJjZSUzRHNwa19tb2RlbF9uYW1lJTJDJTBBJTIwJTIwJTIwJTIwcnVuX29wdHMlM0QlN0IlMjJkZXZpY2UlMjIlM0ElMjBkZXZpY2UlN0QlMkMlMEElMjAlMjAlMjAlMjBzYXZlZGlyJTNEb3MucGF0aC5qb2luKCUyMiUyRnRtcCUyMiUyQyUyMHNwa19tb2RlbF9uYW1lKSUyQyUwQSklMEElMEElMEFkZWYlMjBjcmVhdGVfc3BlYWtlcl9lbWJlZGRpbmcod2F2ZWZvcm0pJTNBJTBBJTIwJTIwJTIwJTIwd2l0aCUyMHRvcmNoLm5vX2dyYWQoKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNwZWFrZXJfZW1iZWRkaW5ncyUyMCUzRCUyMHNwZWFrZXJfbW9kZWwuZW5jb2RlX2JhdGNoKHRvcmNoLnRlbnNvcih3YXZlZm9ybSkpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3BlYWtlcl9lbWJlZGRpbmdzJTIwJTNEJTIwdG9yY2gubm4uZnVuY3Rpb25hbC5ub3JtYWxpemUoc3BlYWtlcl9lbWJlZGRpbmdzJTJDJTIwZGltJTNEMiklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzcGVha2VyX2VtYmVkZGluZ3MlMjAlM0QlMjBzcGVha2VyX2VtYmVkZGluZ3Muc3F1ZWV6ZSgpLmNwdSgpLm51bXB5KCklMEElMjAlMjAlMjAlMjByZXR1cm4lMjBzcGVha2VyX2VtYmVkZGluZ3M=",highlighted:`<span class="hljs-keyword">import</span> os
<span class="hljs-keyword">import</span> torch
<span class="hljs-keyword">from</span> speechbrain.pretrained <span class="hljs-keyword">import</span> EncoderClassifier

spk_model_name = <span class="hljs-string">&quot;speechbrain/spkrec-xvect-voxceleb&quot;</span>

device = <span class="hljs-string">&quot;cuda&quot;</span> <span class="hljs-keyword">if</span> torch.cuda.is_available() <span class="hljs-keyword">else</span> <span class="hljs-string">&quot;cpu&quot;</span>
speaker_model = EncoderClassifier.from_hparams(
    source=spk_model_name,
    run_opts={<span class="hljs-string">&quot;device&quot;</span>: device},
    savedir=os.path.join(<span class="hljs-string">&quot;/tmp&quot;</span>, spk_model_name),
)


<span class="hljs-keyword">def</span> <span class="hljs-title function_">create_speaker_embedding</span>(<span class="hljs-params">waveform</span>):
    <span class="hljs-keyword">with</span> torch.no_grad():
        speaker_embeddings = speaker_model.encode_batch(torch.tensor(waveform))
        speaker_embeddings = torch.nn.functional.normalize(speaker_embeddings, dim=<span class="hljs-number">2</span>)
        speaker_embeddings = speaker_embeddings.squeeze().cpu().numpy()
    <span class="hljs-keyword">return</span> speaker_embeddings`,wrap:!1}}),Al=new u({props:{title:"Обработка датасета",local:"обработка-датасета",headingTag:"h3"}}),Vl=new c({props:{code:"ZGVmJTIwcHJlcGFyZV9kYXRhc2V0KGV4YW1wbGUpJTNBJTBBJTIwJTIwJTIwJTIwYXVkaW8lMjAlM0QlMjBleGFtcGxlJTVCJTIyYXVkaW8lMjIlNUQlMEElMEElMjAlMjAlMjAlMjBleGFtcGxlJTIwJTNEJTIwcHJvY2Vzc29yKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHRleHQlM0RleGFtcGxlJTVCJTIydGV4dCUyMiU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGF1ZGlvX3RhcmdldCUzRGF1ZGlvJTVCJTIyYXJyYXklMjIlNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzYW1wbGluZ19yYXRlJTNEYXVkaW8lNUIlMjJzYW1wbGluZ19yYXRlJTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuX2F0dGVudGlvbl9tYXNrJTNERmFsc2UlMkMlMEElMjAlMjAlMjAlMjApJTBBJTBBJTIwJTIwJTIwJTIwJTIzJTIwc3RyaXAlMjBvZmYlMjB0aGUlMjBiYXRjaCUyMGRpbWVuc2lvbiUwQSUyMCUyMCUyMCUyMGV4YW1wbGUlNUIlMjJsYWJlbHMlMjIlNUQlMjAlM0QlMjBleGFtcGxlJTVCJTIybGFiZWxzJTIyJTVEJTVCMCU1RCUwQSUwQSUyMCUyMCUyMCUyMCUyMyUyMHVzZSUyMFNwZWVjaEJyYWluJTIwdG8lMjBvYnRhaW4lMjB4LXZlY3RvciUwQSUyMCUyMCUyMCUyMGV4YW1wbGUlNUIlMjJzcGVha2VyX2VtYmVkZGluZ3MlMjIlNUQlMjAlM0QlMjBjcmVhdGVfc3BlYWtlcl9lbWJlZGRpbmcoYXVkaW8lNUIlMjJhcnJheSUyMiU1RCklMEElMEElMjAlMjAlMjAlMjByZXR1cm4lMjBleGFtcGxl",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">prepare_dataset</span>(<span class="hljs-params">example</span>):
    audio = example[<span class="hljs-string">&quot;audio&quot;</span>]

    example = processor(
        text=example[<span class="hljs-string">&quot;text&quot;</span>],
        audio_target=audio[<span class="hljs-string">&quot;array&quot;</span>],
        sampling_rate=audio[<span class="hljs-string">&quot;sampling_rate&quot;</span>],
        return_attention_mask=<span class="hljs-literal">False</span>,
    )

    <span class="hljs-comment"># strip off the batch dimension</span>
    example[<span class="hljs-string">&quot;labels&quot;</span>] = example[<span class="hljs-string">&quot;labels&quot;</span>][<span class="hljs-number">0</span>]

    <span class="hljs-comment"># use SpeechBrain to obtain x-vector</span>
    example[<span class="hljs-string">&quot;speaker_embeddings&quot;</span>] = create_speaker_embedding(audio[<span class="hljs-string">&quot;array&quot;</span>])

    <span class="hljs-keyword">return</span> example`,wrap:!1}}),_l=new c({props:{code:"cHJvY2Vzc2VkX2V4YW1wbGUlMjAlM0QlMjBwcmVwYXJlX2RhdGFzZXQoZGF0YXNldCU1QjAlNUQpJTBBbGlzdChwcm9jZXNzZWRfZXhhbXBsZS5rZXlzKCkp",highlighted:`processed_example = prepare_dataset(dataset[<span class="hljs-number">0</span>])
<span class="hljs-built_in">list</span>(processed_example.keys())`,wrap:!1}}),vl=new c({props:{code:"JTVCJ2lucHV0X2lkcyclMkMlMjAnbGFiZWxzJyUyQyUyMCdzdG9wX2xhYmVscyclMkMlMjAnc3BlYWtlcl9lbWJlZGRpbmdzJyU1RA==",highlighted:'[<span class="hljs-symbol">&#x27;input_ids</span>&#x27;, <span class="hljs-symbol">&#x27;labels</span>&#x27;, <span class="hljs-symbol">&#x27;stop_labels</span>&#x27;, <span class="hljs-symbol">&#x27;speaker_embeddings</span>&#x27;]',wrap:!1}}),El=new c({props:{code:"cHJvY2Vzc2VkX2V4YW1wbGUlNUIlMjJzcGVha2VyX2VtYmVkZGluZ3MlMjIlNUQuc2hhcGU=",highlighted:'processed_example[<span class="hljs-string">&quot;speaker_embeddings&quot;</span>].shape',wrap:!1}}),Xl=new c({props:{code:"KDUxMiUyQyk=",highlighted:'(<span class="hljs-number">512</span><span class="hljs-punctuation">,</span>)',wrap:!1}}),Dl=new c({props:{code:"aW1wb3J0JTIwbWF0cGxvdGxpYi5weXBsb3QlMjBhcyUyMHBsdCUwQSUwQXBsdC5maWd1cmUoKSUwQXBsdC5pbXNob3cocHJvY2Vzc2VkX2V4YW1wbGUlNUIlMjJsYWJlbHMlMjIlNUQuVCklMEFwbHQuc2hvdygp",highlighted:`<span class="hljs-keyword">import</span> matplotlib.pyplot <span class="hljs-keyword">as</span> plt

plt.figure()
plt.imshow(processed_example[<span class="hljs-string">&quot;labels&quot;</span>].T)
plt.show()`,wrap:!1}}),Hl=new c({props:{code:"ZGF0YXNldCUyMCUzRCUyMGRhdGFzZXQubWFwKHByZXBhcmVfZGF0YXNldCUyQyUyMHJlbW92ZV9jb2x1bW5zJTNEZGF0YXNldC5jb2x1bW5fbmFtZXMp",highlighted:'dataset = dataset.<span class="hljs-built_in">map</span>(prepare_dataset, remove_columns=dataset.column_names)',wrap:!1}}),Sl=new c({props:{code:"ZGVmJTIwaXNfbm90X3Rvb19sb25nKGlucHV0X2lkcyklM0ElMEElMjAlMjAlMjAlMjBpbnB1dF9sZW5ndGglMjAlM0QlMjBsZW4oaW5wdXRfaWRzKSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMGlucHV0X2xlbmd0aCUyMCUzQyUyMDIwMCUwQSUwQSUwQWRhdGFzZXQlMjAlM0QlMjBkYXRhc2V0LmZpbHRlcihpc19ub3RfdG9vX2xvbmclMkMlMjBpbnB1dF9jb2x1bW5zJTNEJTVCJTIyaW5wdXRfaWRzJTIyJTVEKSUwQWxlbihkYXRhc2V0KQ==",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">is_not_too_long</span>(<span class="hljs-params">input_ids</span>):
    input_length = <span class="hljs-built_in">len</span>(input_ids)
    <span class="hljs-keyword">return</span> input_length &lt; <span class="hljs-number">200</span>


dataset = dataset.<span class="hljs-built_in">filter</span>(is_not_too_long, input_columns=[<span class="hljs-string">&quot;input_ids&quot;</span>])
<span class="hljs-built_in">len</span>(dataset)`,wrap:!1}}),Pl=new c({props:{code:"ODI1OQ==",highlighted:'<span class="hljs-number">8259</span>',wrap:!1}}),Kl=new c({props:{code:"ZGF0YXNldCUyMCUzRCUyMGRhdGFzZXQudHJhaW5fdGVzdF9zcGxpdCh0ZXN0X3NpemUlM0QwLjEp",highlighted:'dataset = dataset.train_test_split(test_size=<span class="hljs-number">0.1</span>)',wrap:!1}}),lt=new u({props:{title:"Коллатор данных",local:"коллатор-данных",headingTag:"h3"}}),et=new c({props:{code:"ZnJvbSUyMGRhdGFjbGFzc2VzJTIwaW1wb3J0JTIwZGF0YWNsYXNzJTBBZnJvbSUyMHR5cGluZyUyMGltcG9ydCUyMEFueSUyQyUyMERpY3QlMkMlMjBMaXN0JTJDJTIwVW5pb24lMEElMEElMEElNDBkYXRhY2xhc3MlMEFjbGFzcyUyMFRUU0RhdGFDb2xsYXRvcldpdGhQYWRkaW5nJTNBJTBBJTIwJTIwJTIwJTIwcHJvY2Vzc29yJTNBJTIwQW55JTBBJTBBJTIwJTIwJTIwJTIwZGVmJTIwX19jYWxsX18oJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZiUyQyUyMGZlYXR1cmVzJTNBJTIwTGlzdCU1QkRpY3QlNUJzdHIlMkMlMjBVbmlvbiU1Qkxpc3QlNUJpbnQlNUQlMkMlMjB0b3JjaC5UZW5zb3IlNUQlNUQlNUQlMEElMjAlMjAlMjAlMjApJTIwLSUzRSUyMERpY3QlNUJzdHIlMkMlMjB0b3JjaC5UZW5zb3IlNUQlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbnB1dF9pZHMlMjAlM0QlMjAlNUIlN0IlMjJpbnB1dF9pZHMlMjIlM0ElMjBmZWF0dXJlJTVCJTIyaW5wdXRfaWRzJTIyJTVEJTdEJTIwZm9yJTIwZmVhdHVyZSUyMGluJTIwZmVhdHVyZXMlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsYWJlbF9mZWF0dXJlcyUyMCUzRCUyMCU1QiU3QiUyMmlucHV0X3ZhbHVlcyUyMiUzQSUyMGZlYXR1cmUlNUIlMjJsYWJlbHMlMjIlNUQlN0QlMjBmb3IlMjBmZWF0dXJlJTIwaW4lMjBmZWF0dXJlcyU1RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNwZWFrZXJfZmVhdHVyZXMlMjAlM0QlMjAlNUJmZWF0dXJlJTVCJTIyc3BlYWtlcl9lbWJlZGRpbmdzJTIyJTVEJTIwZm9yJTIwZmVhdHVyZSUyMGluJTIwZmVhdHVyZXMlNUQlMEElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBjb2xsYXRlJTIwdGhlJTIwaW5wdXRzJTIwYW5kJTIwdGFyZ2V0cyUyMGludG8lMjBhJTIwYmF0Y2glMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBiYXRjaCUyMCUzRCUyMHByb2Nlc3Nvci5wYWQoJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaW5wdXRfaWRzJTNEaW5wdXRfaWRzJTJDJTIwbGFiZWxzJTNEbGFiZWxfZmVhdHVyZXMlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMnB0JTIyJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKSUwQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMHJlcGxhY2UlMjBwYWRkaW5nJTIwd2l0aCUyMC0xMDAlMjB0byUyMGlnbm9yZSUyMGxvc3MlMjBjb3JyZWN0bHklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBiYXRjaCU1QiUyMmxhYmVscyUyMiU1RCUyMCUzRCUyMGJhdGNoJTVCJTIybGFiZWxzJTIyJTVELm1hc2tlZF9maWxsKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGJhdGNoLmRlY29kZXJfYXR0ZW50aW9uX21hc2sudW5zcXVlZXplKC0xKS5uZSgxKSUyQyUyMC0xMDAlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjApJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwbm90JTIwdXNlZCUyMGR1cmluZyUyMGZpbmUtdHVuaW5nJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZGVsJTIwYmF0Y2glNUIlMjJkZWNvZGVyX2F0dGVudGlvbl9tYXNrJTIyJTVEJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwcm91bmQlMjBkb3duJTIwdGFyZ2V0JTIwbGVuZ3RocyUyMHRvJTIwbXVsdGlwbGUlMjBvZiUyMHJlZHVjdGlvbiUyMGZhY3RvciUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwbW9kZWwuY29uZmlnLnJlZHVjdGlvbl9mYWN0b3IlMjAlM0UlMjAxJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdGFyZ2V0X2xlbmd0aHMlMjAlM0QlMjB0b3JjaC50ZW5zb3IoJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCbGVuKGZlYXR1cmUlNUIlMjJpbnB1dF92YWx1ZXMlMjIlNUQpJTIwZm9yJTIwZmVhdHVyZSUyMGluJTIwbGFiZWxfZmVhdHVyZXMlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjApJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdGFyZ2V0X2xlbmd0aHMlMjAlM0QlMjB0YXJnZXRfbGVuZ3Rocy5uZXcoJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbGVuZ3RoJTIwLSUyMGxlbmd0aCUyMCUyNSUyMG1vZGVsLmNvbmZpZy5yZWR1Y3Rpb25fZmFjdG9yJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZm9yJTIwbGVuZ3RoJTIwaW4lMjB0YXJnZXRfbGVuZ3RocyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtYXhfbGVuZ3RoJTIwJTNEJTIwbWF4KHRhcmdldF9sZW5ndGhzKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGJhdGNoJTVCJTIybGFiZWxzJTIyJTVEJTIwJTNEJTIwYmF0Y2glNUIlMjJsYWJlbHMlMjIlNUQlNUIlM0ElMkMlMjAlM0FtYXhfbGVuZ3RoJTVEJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwYWxzbyUyMGFkZCUyMGluJTIwdGhlJTIwc3BlYWtlciUyMGVtYmVkZGluZ3MlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBiYXRjaCU1QiUyMnNwZWFrZXJfZW1iZWRkaW5ncyUyMiU1RCUyMCUzRCUyMHRvcmNoLnRlbnNvcihzcGVha2VyX2ZlYXR1cmVzKSUwQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMGJhdGNo",highlighted:`<span class="hljs-keyword">from</span> dataclasses <span class="hljs-keyword">import</span> dataclass
<span class="hljs-keyword">from</span> typing <span class="hljs-keyword">import</span> <span class="hljs-type">Any</span>, <span class="hljs-type">Dict</span>, <span class="hljs-type">List</span>, <span class="hljs-type">Union</span>


<span class="hljs-meta">@dataclass</span>
<span class="hljs-keyword">class</span> <span class="hljs-title class_">TTSDataCollatorWithPadding</span>:
    processor: <span class="hljs-type">Any</span>

    <span class="hljs-keyword">def</span> <span class="hljs-title function_">__call__</span>(<span class="hljs-params">
        self, features: <span class="hljs-type">List</span>[<span class="hljs-type">Dict</span>[<span class="hljs-built_in">str</span>, <span class="hljs-type">Union</span>[<span class="hljs-type">List</span>[<span class="hljs-built_in">int</span>], torch.Tensor]]]
    </span>) -&gt; <span class="hljs-type">Dict</span>[<span class="hljs-built_in">str</span>, torch.Tensor]:
        input_ids = [{<span class="hljs-string">&quot;input_ids&quot;</span>: feature[<span class="hljs-string">&quot;input_ids&quot;</span>]} <span class="hljs-keyword">for</span> feature <span class="hljs-keyword">in</span> features]
        label_features = [{<span class="hljs-string">&quot;input_values&quot;</span>: feature[<span class="hljs-string">&quot;labels&quot;</span>]} <span class="hljs-keyword">for</span> feature <span class="hljs-keyword">in</span> features]
        speaker_features = [feature[<span class="hljs-string">&quot;speaker_embeddings&quot;</span>] <span class="hljs-keyword">for</span> feature <span class="hljs-keyword">in</span> features]

        <span class="hljs-comment"># collate the inputs and targets into a batch</span>
        batch = processor.pad(
            input_ids=input_ids, labels=label_features, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>
        )

        <span class="hljs-comment"># replace padding with -100 to ignore loss correctly</span>
        batch[<span class="hljs-string">&quot;labels&quot;</span>] = batch[<span class="hljs-string">&quot;labels&quot;</span>].masked_fill(
            batch.decoder_attention_mask.unsqueeze(-<span class="hljs-number">1</span>).ne(<span class="hljs-number">1</span>), -<span class="hljs-number">100</span>
        )

        <span class="hljs-comment"># not used during fine-tuning</span>
        <span class="hljs-keyword">del</span> batch[<span class="hljs-string">&quot;decoder_attention_mask&quot;</span>]

        <span class="hljs-comment"># round down target lengths to multiple of reduction factor</span>
        <span class="hljs-keyword">if</span> model.config.reduction_factor &gt; <span class="hljs-number">1</span>:
            target_lengths = torch.tensor(
                [<span class="hljs-built_in">len</span>(feature[<span class="hljs-string">&quot;input_values&quot;</span>]) <span class="hljs-keyword">for</span> feature <span class="hljs-keyword">in</span> label_features]
            )
            target_lengths = target_lengths.new(
                [
                    length - length % model.config.reduction_factor
                    <span class="hljs-keyword">for</span> length <span class="hljs-keyword">in</span> target_lengths
                ]
            )
            max_length = <span class="hljs-built_in">max</span>(target_lengths)
            batch[<span class="hljs-string">&quot;labels&quot;</span>] = batch[<span class="hljs-string">&quot;labels&quot;</span>][:, :max_length]

        <span class="hljs-comment"># also add in the speaker embeddings</span>
        batch[<span class="hljs-string">&quot;speaker_embeddings&quot;</span>] = torch.tensor(speaker_features)

        <span class="hljs-keyword">return</span> batch`,wrap:!1}}),nt=new c({props:{code:"ZGF0YV9jb2xsYXRvciUyMCUzRCUyMFRUU0RhdGFDb2xsYXRvcldpdGhQYWRkaW5nKHByb2Nlc3NvciUzRHByb2Nlc3Nvcik=",highlighted:"data_collator = TTSDataCollatorWithPadding(processor=processor)",wrap:!1}}),at=new u({props:{title:"Обучение модели",local:"обучение-модели",headingTag:"h2"}}),Mt=new c({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFNwZWVjaFQ1Rm9yVGV4dFRvU3BlZWNoJTBBJTBBbW9kZWwlMjAlM0QlMjBTcGVlY2hUNUZvclRleHRUb1NwZWVjaC5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> SpeechT5ForTextToSpeech

model = SpeechT5ForTextToSpeech.from_pretrained(checkpoint)`,wrap:!1}}),it=new c({props:{code:"ZnJvbSUyMGZ1bmN0b29scyUyMGltcG9ydCUyMHBhcnRpYWwlMEElMEElMjMlMjAlRDAlQkUlRDElODIlRDAlQkElRDAlQkIlRDElOEUlRDElODclRDAlQjglRDElODIlRDElOEMlMjAlRDAlQkElRDElOEQlRDElODglMjAlRDAlQjIlRDAlQkUlMjAlRDAlQjIlRDElODAlRDAlQjUlRDAlQkMlRDElOEYlMjAlRDAlQkUlRDAlQjElRDElODMlRDElODclRDAlQjUlRDAlQkQlRDAlQjglRDElOEYlMkMlMjAlRDElODIlRDAlQjAlRDAlQkElMjAlRDAlQkElRDAlQjAlRDAlQkElMjAlRDAlQkUlRDAlQkQlMjAlRDAlQkQlRDAlQjUlRDElODElRDAlQkUlRDAlQjIlRDAlQkMlRDAlQjUlRDElODElRDElODIlRDAlQjglRDAlQkMlMjAlRDElODElMjAlRDAlQjMlRDElODAlRDAlQjAlRDAlQjQlRDAlQjglRDAlQjUlRDAlQkQlRDElODIlRDAlQkQlRDElOEIlRDAlQkMlRDAlQjglMjAlRDAlQkElRDAlQkUlRDAlQkQlRDElODIlRDElODAlRDAlQkUlRDAlQkIlRDElOEMlRDAlQkQlRDElOEIlRDAlQkMlRDAlQjglMjAlRDElODIlRDAlQkUlRDElODclRDAlQkElRDAlQjAlRDAlQkMlRDAlQjglMEFtb2RlbC5jb25maWcudXNlX2NhY2hlJTIwJTNEJTIwRmFsc2UlMEElMEElMjMlMjAlRDAlQjclRDAlQjAlRDAlQjQlRDAlQjAlRDAlQkQlRDAlQjglRDAlQkMlMjAlRDElOEYlRDAlQjclRDElOEIlRDAlQkElMjAlRDAlQjglMjAlRDAlQjclRDAlQjAlRDAlQjQlRDAlQjAlRDElODclRDElODMlMjAlRDAlQjQlRDAlQkIlRDElOEYlMjAlRDAlQjMlRDAlQjUlRDAlQkQlRDAlQjUlRDElODAlRDAlQjAlRDElODYlRDAlQjglRDAlQjglMjAlRDAlQjglMjAlRDElODElRDAlQkQlRDAlQkUlRDAlQjIlRDAlQjAlMjAlRDAlQjIlRDAlQkElRDAlQkIlRDElOEUlRDElODclRDAlQjglRDAlQkMlMjAlRDAlQkElRDElOEQlRDElODglMEFtb2RlbC5nZW5lcmF0ZSUyMCUzRCUyMHBhcnRpYWwobW9kZWwuZ2VuZXJhdGUlMkMlMjB1c2VfY2FjaGUlM0RUcnVlKQ==",highlighted:`<span class="hljs-keyword">from</span> functools <span class="hljs-keyword">import</span> partial

<span class="hljs-comment"># отключить кэш во время обучения, так как он несовместим с градиентными контрольными точками</span>
model.config.use_cache = <span class="hljs-literal">False</span>

<span class="hljs-comment"># заданим язык и задачу для генерации и снова включим кэш</span>
model.generate = partial(model.generate, use_cache=<span class="hljs-literal">True</span>)`,wrap:!1}}),mt=new c({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFNlcTJTZXFUcmFpbmluZ0FyZ3VtZW50cyUwQSUwQXRyYWluaW5nX2FyZ3MlMjAlM0QlMjBTZXEyU2VxVHJhaW5pbmdBcmd1bWVudHMoJTBBJTIwJTIwJTIwJTIwb3V0cHV0X2RpciUzRCUyMnNwZWVjaHQ1X2ZpbmV0dW5lZF92b3hwb3B1bGlfbmwlMjIlMkMlMjAlMjAlMjMlMjBjaGFuZ2UlMjB0byUyMGElMjByZXBvJTIwbmFtZSUyMG9mJTIweW91ciUyMGNob2ljZSUwQSUyMCUyMCUyMCUyMHBlcl9kZXZpY2VfdHJhaW5fYmF0Y2hfc2l6ZSUzRDQlMkMlMEElMjAlMjAlMjAlMjBncmFkaWVudF9hY2N1bXVsYXRpb25fc3RlcHMlM0Q4JTJDJTBBJTIwJTIwJTIwJTIwbGVhcm5pbmdfcmF0ZSUzRDFlLTUlMkMlMEElMjAlMjAlMjAlMjB3YXJtdXBfc3RlcHMlM0Q1MDAlMkMlMEElMjAlMjAlMjAlMjBtYXhfc3RlcHMlM0Q0MDAwJTJDJTBBJTIwJTIwJTIwJTIwZ3JhZGllbnRfY2hlY2twb2ludGluZyUzRFRydWUlMkMlMEElMjAlMjAlMjAlMjBmcDE2JTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMGV2YWx1YXRpb25fc3RyYXRlZ3klM0QlMjJzdGVwcyUyMiUyQyUwQSUyMCUyMCUyMCUyMHBlcl9kZXZpY2VfZXZhbF9iYXRjaF9zaXplJTNEMiUyQyUwQSUyMCUyMCUyMCUyMHNhdmVfc3RlcHMlM0QxMDAwJTJDJTBBJTIwJTIwJTIwJTIwZXZhbF9zdGVwcyUzRDEwMDAlMkMlMEElMjAlMjAlMjAlMjBsb2dnaW5nX3N0ZXBzJTNEMjUlMkMlMEElMjAlMjAlMjAlMjByZXBvcnRfdG8lM0QlNUIlMjJ0ZW5zb3Jib2FyZCUyMiU1RCUyQyUwQSUyMCUyMCUyMCUyMGxvYWRfYmVzdF9tb2RlbF9hdF9lbmQlM0RUcnVlJTJDJTBBJTIwJTIwJTIwJTIwZ3JlYXRlcl9pc19iZXR0ZXIlM0RGYWxzZSUyQyUwQSUyMCUyMCUyMCUyMGxhYmVsX25hbWVzJTNEJTVCJTIybGFiZWxzJTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwcHVzaF90b19odWIlM0RUcnVlJTJDJTBBKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> Seq2SeqTrainingArguments

training_args = Seq2SeqTrainingArguments(
    output_dir=<span class="hljs-string">&quot;speecht5_finetuned_voxpopuli_nl&quot;</span>,  <span class="hljs-comment"># change to a repo name of your choice</span>
    per_device_train_batch_size=<span class="hljs-number">4</span>,
    gradient_accumulation_steps=<span class="hljs-number">8</span>,
    learning_rate=<span class="hljs-number">1e-5</span>,
    warmup_steps=<span class="hljs-number">500</span>,
    max_steps=<span class="hljs-number">4000</span>,
    gradient_checkpointing=<span class="hljs-literal">True</span>,
    fp16=<span class="hljs-literal">True</span>,
    evaluation_strategy=<span class="hljs-string">&quot;steps&quot;</span>,
    per_device_eval_batch_size=<span class="hljs-number">2</span>,
    save_steps=<span class="hljs-number">1000</span>,
    eval_steps=<span class="hljs-number">1000</span>,
    logging_steps=<span class="hljs-number">25</span>,
    report_to=[<span class="hljs-string">&quot;tensorboard&quot;</span>],
    load_best_model_at_end=<span class="hljs-literal">True</span>,
    greater_is_better=<span class="hljs-literal">False</span>,
    label_names=[<span class="hljs-string">&quot;labels&quot;</span>],
    push_to_hub=<span class="hljs-literal">True</span>,
)`,wrap:!1}}),jt=new c({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFNlcTJTZXFUcmFpbmVyJTBBJTBBdHJhaW5lciUyMCUzRCUyMFNlcTJTZXFUcmFpbmVyKCUwQSUyMCUyMCUyMCUyMGFyZ3MlM0R0cmFpbmluZ19hcmdzJTJDJTBBJTIwJTIwJTIwJTIwbW9kZWwlM0Rtb2RlbCUyQyUwQSUyMCUyMCUyMCUyMHRyYWluX2RhdGFzZXQlM0RkYXRhc2V0JTVCJTIydHJhaW4lMjIlNUQlMkMlMEElMjAlMjAlMjAlMjBldmFsX2RhdGFzZXQlM0RkYXRhc2V0JTVCJTIydGVzdCUyMiU1RCUyQyUwQSUyMCUyMCUyMCUyMGRhdGFfY29sbGF0b3IlM0RkYXRhX2NvbGxhdG9yJTJDJTBBJTIwJTIwJTIwJTIwdG9rZW5pemVyJTNEcHJvY2Vzc29yJTJDJTBBKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> Seq2SeqTrainer

trainer = Seq2SeqTrainer(
    args=training_args,
    model=model,
    train_dataset=dataset[<span class="hljs-string">&quot;train&quot;</span>],
    eval_dataset=dataset[<span class="hljs-string">&quot;test&quot;</span>],
    data_collator=data_collator,
    tokenizer=processor,
)`,wrap:!1}}),ct=new c({props:{code:"dHJhaW5lci50cmFpbigp",highlighted:"trainer.train()",wrap:!1}}),rt=new c({props:{code:"dHJhaW5lci5wdXNoX3RvX2h1Yigp",highlighted:"trainer.push_to_hub()",wrap:!1}}),ut=new u({props:{title:"Инференс",local:"инференс",headingTag:"h2"}}),ft=new c({props:{code:"bW9kZWwlMjAlM0QlMjBTcGVlY2hUNUZvclRleHRUb1NwZWVjaC5mcm9tX3ByZXRyYWluZWQoJTBBJTIwJTIwJTIwJTIwJTIyWU9VUl9BQ0NPVU5UJTJGc3BlZWNodDVfZmluZXR1bmVkX3ZveHBvcHVsaV9ubCUyMiUwQSk=",highlighted:`model = SpeechT5ForTextToSpeech.from_pretrained(
    <span class="hljs-string">&quot;YOUR_ACCOUNT/speecht5_finetuned_voxpopuli_nl&quot;</span>
)`,wrap:!1}}),dt=new c({props:{code:"ZXhhbXBsZSUyMCUzRCUyMGRhdGFzZXQlNUIlMjJ0ZXN0JTIyJTVEJTVCMzA0JTVEJTBBc3BlYWtlcl9lbWJlZGRpbmdzJTIwJTNEJTIwdG9yY2gudGVuc29yKGV4YW1wbGUlNUIlMjJzcGVha2VyX2VtYmVkZGluZ3MlMjIlNUQpLnVuc3F1ZWV6ZSgwKQ==",highlighted:`example = dataset[<span class="hljs-string">&quot;test&quot;</span>][<span class="hljs-number">304</span>]
speaker_embeddings = torch.tensor(example[<span class="hljs-string">&quot;speaker_embeddings&quot;</span>]).unsqueeze(<span class="hljs-number">0</span>)`,wrap:!1}}),Ct=new c({props:{code:"dGV4dCUyMCUzRCUyMCUyMmhhbGxvJTIwYWxsZW1hYWwlMkMlMjBpayUyMHByYWF0JTIwbmVkZXJsYW5kcy4lMjBncm9ldGplcyUyMGFhbiUyMGllZGVyZWVuISUyMg==",highlighted:'text = <span class="hljs-string">&quot;hallo allemaal, ik praat nederlands. groetjes aan iedereen!&quot;</span>',wrap:!1}}),$t=new c({props:{code:"aW5wdXRzJTIwJTNEJTIwcHJvY2Vzc29yKHRleHQlM0R0ZXh0JTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJwdCUyMik=",highlighted:'inputs = processor(text=text, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)',wrap:!1}}),Rt=new c({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFNwZWVjaFQ1SGlmaUdhbiUwQSUwQXZvY29kZXIlMjAlM0QlMjBTcGVlY2hUNUhpZmlHYW4uZnJvbV9wcmV0cmFpbmVkKCUyMm1pY3Jvc29mdCUyRnNwZWVjaHQ1X2hpZmlnYW4lMjIpJTBBc3BlZWNoJTIwJTNEJTIwbW9kZWwuZ2VuZXJhdGVfc3BlZWNoKGlucHV0cyU1QiUyMmlucHV0X2lkcyUyMiU1RCUyQyUyMHNwZWFrZXJfZW1iZWRkaW5ncyUyQyUyMHZvY29kZXIlM0R2b2NvZGVyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> SpeechT5HifiGan

vocoder = SpeechT5HifiGan.from_pretrained(<span class="hljs-string">&quot;microsoft/speecht5_hifigan&quot;</span>)
speech = model.generate_speech(inputs[<span class="hljs-string">&quot;input_ids&quot;</span>], speaker_embeddings, vocoder=vocoder)`,wrap:!1}}),Qt=new c({props:{code:"ZnJvbSUyMElQeXRob24uZGlzcGxheSUyMGltcG9ydCUyMEF1ZGlvJTBBJTBBQXVkaW8oc3BlZWNoLm51bXB5KCklMkMlMjByYXRlJTNEMTYwMDAp",highlighted:`<span class="hljs-keyword">from</span> IPython.display <span class="hljs-keyword">import</span> Audio

Audio(speech.numpy(), rate=<span class="hljs-number">16000</span>)`,wrap:!1}}),Vt=new da({props:{source:"https://github.com/huggingface/audio-transformers-course/blob/main/chapters/ru/chapter6/fine-tuning.mdx"}}),{c(){U=p("meta"),d=n(),r=p("p"),Bt=n(),i(b.$$.fragment),vt=n(),i(C.$$.fragment),Wt=n(),I=p("p"),I.textContent=tn,Et=n(),i($.$$.fragment),Yt=n(),k=p("p"),k.textContent=en,Xt=n(),i(R.$$.fragment),Nt=n(),i(h.$$.fragment),Dt=n(),Z=p("p"),Z.textContent=sn,Ft=n(),i(Q.$$.fragment),zt=n(),x=p("p"),x.textContent=nn,Ht=n(),i(A.$$.fragment),qt=n(),i(g.$$.fragment),St=n(),V=p("p"),V.innerHTML=an,Lt=n(),B=p("p"),B.textContent=pn,Pt=n(),_=p("p"),_.textContent=Mn,Ot=n(),i(G.$$.fragment),Kt=n(),v=p("p"),v.innerHTML=yn,le=n(),i(W.$$.fragment),te=n(),E=p("p"),E.textContent=Jn,ee=n(),i(Y.$$.fragment),se=n(),i(X.$$.fragment),ne=n(),N=p("p"),N.textContent=mn,ae=n(),i(D.$$.fragment),pe=n(),i(F.$$.fragment),Me=n(),z=p("p"),z.textContent=Tn,ye=n(),i(H.$$.fragment),ie=n(),q=p("p"),q.textContent=jn,Je=n(),i(S.$$.fragment),me=n(),L=p("p"),L.innerHTML=wn,Te=n(),i(P.$$.fragment),je=n(),O=p("p"),O.innerHTML=cn,we=n(),K=p("p"),K.innerHTML=Un,ce=n(),ll=p("p"),ll.innerHTML=rn,Ue=n(),i(tl.$$.fragment),re=n(),el=p("p"),el.textContent=un,ue=n(),i(sl.$$.fragment),he=n(),nl=p("p"),nl.innerHTML=hn,fe=n(),i(al.$$.fragment),oe=n(),pl=p("p"),pl.innerHTML=fn,de=n(),i(Ml.$$.fragment),be=n(),yl=p("p"),yl.textContent=on,Ce=n(),i(il.$$.fragment),Ie=n(),Jl=p("p"),Jl.textContent=dn,$e=n(),i(ml.$$.fragment),ke=n(),Tl=p("p"),Tl.textContent=bn,Re=n(),i(jl.$$.fragment),Ze=n(),f=p("div"),f.innerHTML=Cn,Qe=n(),wl=p("p"),wl.textContent=In,xe=n(),i(cl.$$.fragment),Ae=n(),Ul=p("p"),Ul.textContent=$n,ge=n(),i(rl.$$.fragment),Ve=n(),ul=p("p"),ul.innerHTML=kn,Be=n(),i(hl.$$.fragment),_e=n(),fl=p("p"),fl.textContent=Rn,Ge=n(),i(ol.$$.fragment),ve=n(),dl=p("p"),dl.innerHTML=Zn,We=n(),i(bl.$$.fragment),Ee=n(),Cl=p("p"),Cl.textContent=Qn,Ye=n(),Il=p("p"),Il.textContent=xn,Xe=n(),i($l.$$.fragment),Ne=n(),kl=p("p"),kl.innerHTML=An,De=n(),Rl=p("p"),Rl.innerHTML=gn,Fe=n(),i(Zl.$$.fragment),ze=n(),Ql=p("p"),Ql.innerHTML=Vn,He=n(),xl=p("p"),xl.innerHTML=Bn,qe=n(),i(Al.$$.fragment),Se=n(),gl=p("p"),gl.innerHTML=_n,Le=n(),i(Vl.$$.fragment),Pe=n(),Bl=p("p"),Bl.textContent=Gn,Oe=n(),i(_l.$$.fragment),Ke=n(),Gl=p("p"),Gl.innerHTML=vn,ls=n(),i(vl.$$.fragment),ts=n(),Wl=p("p"),Wl.textContent=Wn,es=n(),i(El.$$.fragment),ss=n(),Yl=p("p"),Yl.innerHTML=En,ns=n(),i(Xl.$$.fragment),as=n(),Nl=p("p"),Nl.textContent=Yn,ps=n(),i(Dl.$$.fragment),Ms=n(),o=p("div"),o.innerHTML=Xn,ys=n(),Fl=p("p"),Fl.textContent=Nn,is=n(),zl=p("p"),zl.textContent=Dn,Js=n(),i(Hl.$$.fragment),ms=n(),ql=p("p"),ql.textContent=Fn,Ts=n(),i(Sl.$$.fragment),js=n(),Ll=p("p"),Ll.innerHTML=zn,ws=n(),i(Pl.$$.fragment),cs=n(),Ol=p("p"),Ol.textContent=Hn,Us=n(),i(Kl.$$.fragment),rs=n(),i(lt.$$.fragment),us=n(),tt=p("p"),tt.innerHTML=qn,hs=n(),i(et.$$.fragment),fs=n(),st=p("p"),st.textContent=Sn,os=n(),i(nt.$$.fragment),ds=n(),i(at.$$.fragment),bs=n(),pt=p("p"),pt.textContent=Ln,Cs=n(),i(Mt.$$.fragment),Is=n(),yt=p("p"),yt.innerHTML=Pn,$s=n(),i(it.$$.fragment),ks=n(),Jt=p("p"),Jt.textContent=On,Rs=n(),i(mt.$$.fragment),Zs=n(),Tt=p("p"),Tt.innerHTML=Kn,Qs=n(),i(jt.$$.fragment),xs=n(),wt=p("p"),wt.innerHTML=la,As=n(),i(ct.$$.fragment),gs=n(),Ut=p("p"),Ut.textContent=ta,Vs=n(),i(rt.$$.fragment),Bs=n(),i(ut.$$.fragment),_s=n(),ht=p("p"),ht.textContent=ea,Gs=n(),i(ft.$$.fragment),vs=n(),ot=p("p"),ot.textContent=sa,Ws=n(),i(dt.$$.fragment),Es=n(),bt=p("p"),bt.textContent=na,Ys=n(),i(Ct.$$.fragment),Xs=n(),It=p("p"),It.textContent=aa,Ns=n(),i($t.$$.fragment),Ds=n(),kt=p("p"),kt.textContent=pa,Fs=n(),i(Rt.$$.fragment),zs=n(),Zt=p("p"),Zt.textContent=Ma,Hs=n(),i(Qt.$$.fragment),qs=n(),xt=p("p"),xt.textContent=ya,Ss=n(),At=p("p"),At.innerHTML=ia,Ls=n(),gt=p("p"),gt.textContent=Ja,Ps=n(),i(Vt.$$.fragment),Os=n(),_t=p("p"),this.h()},l(l){const t=ua("svelte-u9bgzb",document.head);U=M(t,"META",{name:!0,content:!0}),t.forEach(e),d=a(l),r=M(l,"P",{}),Ta(r).forEach(e),Bt=a(l),J(b.$$.fragment,l),vt=a(l),J(C.$$.fragment,l),Wt=a(l),I=M(l,"P",{"data-svelte-h":!0}),y(I)!=="svelte-8bltl"&&(I.textContent=tn),Et=a(l),J($.$$.fragment,l),Yt=a(l),k=M(l,"P",{"data-svelte-h":!0}),y(k)!=="svelte-izsfon"&&(k.textContent=en),Xt=a(l),J(R.$$.fragment,l),Nt=a(l),J(h.$$.fragment,l),Dt=a(l),Z=M(l,"P",{"data-svelte-h":!0}),y(Z)!=="svelte-xcyd0c"&&(Z.textContent=sn),Ft=a(l),J(Q.$$.fragment,l),zt=a(l),x=M(l,"P",{"data-svelte-h":!0}),y(x)!=="svelte-1n5cqib"&&(x.textContent=nn),Ht=a(l),J(A.$$.fragment,l),qt=a(l),J(g.$$.fragment,l),St=a(l),V=M(l,"P",{"data-svelte-h":!0}),y(V)!=="svelte-1j0brfm"&&(V.innerHTML=an),Lt=a(l),B=M(l,"P",{"data-svelte-h":!0}),y(B)!=="svelte-wlzddh"&&(B.textContent=pn),Pt=a(l),_=M(l,"P",{"data-svelte-h":!0}),y(_)!=="svelte-tndgny"&&(_.textContent=Mn),Ot=a(l),J(G.$$.fragment,l),Kt=a(l),v=M(l,"P",{"data-svelte-h":!0}),y(v)!=="svelte-1mvdyro"&&(v.innerHTML=yn),le=a(l),J(W.$$.fragment,l),te=a(l),E=M(l,"P",{"data-svelte-h":!0}),y(E)!=="svelte-1qhkgx9"&&(E.textContent=Jn),ee=a(l),J(Y.$$.fragment,l),se=a(l),J(X.$$.fragment,l),ne=a(l),N=M(l,"P",{"data-svelte-h":!0}),y(N)!=="svelte-hacnda"&&(N.textContent=mn),ae=a(l),J(D.$$.fragment,l),pe=a(l),J(F.$$.fragment,l),Me=a(l),z=M(l,"P",{"data-svelte-h":!0}),y(z)!=="svelte-pxsz1o"&&(z.textContent=Tn),ye=a(l),J(H.$$.fragment,l),ie=a(l),q=M(l,"P",{"data-svelte-h":!0}),y(q)!=="svelte-hhmg0u"&&(q.textContent=jn),Je=a(l),J(S.$$.fragment,l),me=a(l),L=M(l,"P",{"data-svelte-h":!0}),y(L)!=="svelte-1mvdyro"&&(L.innerHTML=wn),Te=a(l),J(P.$$.fragment,l),je=a(l),O=M(l,"P",{"data-svelte-h":!0}),y(O)!=="svelte-147m7af"&&(O.innerHTML=cn),we=a(l),K=M(l,"P",{"data-svelte-h":!0}),y(K)!=="svelte-okgqir"&&(K.innerHTML=Un),ce=a(l),ll=M(l,"P",{"data-svelte-h":!0}),y(ll)!=="svelte-1ysmakp"&&(ll.innerHTML=rn),Ue=a(l),J(tl.$$.fragment,l),re=a(l),el=M(l,"P",{"data-svelte-h":!0}),y(el)!=="svelte-1frt52r"&&(el.textContent=un),ue=a(l),J(sl.$$.fragment,l),he=a(l),nl=M(l,"P",{"data-svelte-h":!0}),y(nl)!=="svelte-1mvdyro"&&(nl.innerHTML=hn),fe=a(l),J(al.$$.fragment,l),oe=a(l),pl=M(l,"P",{"data-svelte-h":!0}),y(pl)!=="svelte-fg573h"&&(pl.innerHTML=fn),de=a(l),J(Ml.$$.fragment,l),be=a(l),yl=M(l,"P",{"data-svelte-h":!0}),y(yl)!=="svelte-138gm4p"&&(yl.textContent=on),Ce=a(l),J(il.$$.fragment,l),Ie=a(l),Jl=M(l,"P",{"data-svelte-h":!0}),y(Jl)!=="svelte-t1t9qy"&&(Jl.textContent=dn),$e=a(l),J(ml.$$.fragment,l),ke=a(l),Tl=M(l,"P",{"data-svelte-h":!0}),y(Tl)!=="svelte-7t0xxj"&&(Tl.textContent=bn),Re=a(l),J(jl.$$.fragment,l),Ze=a(l),f=M(l,"DIV",{class:!0,"data-svelte-h":!0}),y(f)!=="svelte-1uufiik"&&(f.innerHTML=Cn),Qe=a(l),wl=M(l,"P",{"data-svelte-h":!0}),y(wl)!=="svelte-15je7j5"&&(wl.textContent=In),xe=a(l),J(cl.$$.fragment,l),Ae=a(l),Ul=M(l,"P",{"data-svelte-h":!0}),y(Ul)!=="svelte-u7eqkn"&&(Ul.textContent=$n),ge=a(l),J(rl.$$.fragment,l),Ve=a(l),ul=M(l,"P",{"data-svelte-h":!0}),y(ul)!=="svelte-1mvdyro"&&(ul.innerHTML=kn),Be=a(l),J(hl.$$.fragment,l),_e=a(l),fl=M(l,"P",{"data-svelte-h":!0}),y(fl)!=="svelte-z9bfhb"&&(fl.textContent=Rn),Ge=a(l),J(ol.$$.fragment,l),ve=a(l),dl=M(l,"P",{"data-svelte-h":!0}),y(dl)!=="svelte-1mvdyro"&&(dl.innerHTML=Zn),We=a(l),J(bl.$$.fragment,l),Ee=a(l),Cl=M(l,"P",{"data-svelte-h":!0}),y(Cl)!=="svelte-1ps1iiz"&&(Cl.textContent=Qn),Ye=a(l),Il=M(l,"P",{"data-svelte-h":!0}),y(Il)!=="svelte-139qbcw"&&(Il.textContent=xn),Xe=a(l),J($l.$$.fragment,l),Ne=a(l),kl=M(l,"P",{"data-svelte-h":!0}),y(kl)!=="svelte-p3m4km"&&(kl.innerHTML=An),De=a(l),Rl=M(l,"P",{"data-svelte-h":!0}),y(Rl)!=="svelte-taqkhq"&&(Rl.innerHTML=gn),Fe=a(l),J(Zl.$$.fragment,l),ze=a(l),Ql=M(l,"P",{"data-svelte-h":!0}),y(Ql)!=="svelte-e3airu"&&(Ql.innerHTML=Vn),He=a(l),xl=M(l,"P",{"data-svelte-h":!0}),y(xl)!=="svelte-1i0w5jk"&&(xl.innerHTML=Bn),qe=a(l),J(Al.$$.fragment,l),Se=a(l),gl=M(l,"P",{"data-svelte-h":!0}),y(gl)!=="svelte-12dg9zu"&&(gl.innerHTML=_n),Le=a(l),J(Vl.$$.fragment,l),Pe=a(l),Bl=M(l,"P",{"data-svelte-h":!0}),y(Bl)!=="svelte-vyoyt2"&&(Bl.textContent=Gn),Oe=a(l),J(_l.$$.fragment,l),Ke=a(l),Gl=M(l,"P",{"data-svelte-h":!0}),y(Gl)!=="svelte-1mvdyro"&&(Gl.innerHTML=vn),ls=a(l),J(vl.$$.fragment,l),ts=a(l),Wl=M(l,"P",{"data-svelte-h":!0}),y(Wl)!=="svelte-2nvf42"&&(Wl.textContent=Wn),es=a(l),J(El.$$.fragment,l),ss=a(l),Yl=M(l,"P",{"data-svelte-h":!0}),y(Yl)!=="svelte-1mvdyro"&&(Yl.innerHTML=En),ns=a(l),J(Xl.$$.fragment,l),as=a(l),Nl=M(l,"P",{"data-svelte-h":!0}),y(Nl)!=="svelte-1ycajx1"&&(Nl.textContent=Yn),ps=a(l),J(Dl.$$.fragment,l),Ms=a(l),o=M(l,"DIV",{class:!0,"data-svelte-h":!0}),y(o)!=="svelte-j4o1b8"&&(o.innerHTML=Xn),ys=a(l),Fl=M(l,"P",{"data-svelte-h":!0}),y(Fl)!=="svelte-12yxndm"&&(Fl.textContent=Nn),is=a(l),zl=M(l,"P",{"data-svelte-h":!0}),y(zl)!=="svelte-1cx65z4"&&(zl.textContent=Dn),Js=a(l),J(Hl.$$.fragment,l),ms=a(l),ql=M(l,"P",{"data-svelte-h":!0}),y(ql)!=="svelte-4c0nlh"&&(ql.textContent=Fn),Ts=a(l),J(Sl.$$.fragment,l),js=a(l),Ll=M(l,"P",{"data-svelte-h":!0}),y(Ll)!=="svelte-1mvdyro"&&(Ll.innerHTML=zn),ws=a(l),J(Pl.$$.fragment,l),cs=a(l),Ol=M(l,"P",{"data-svelte-h":!0}),y(Ol)!=="svelte-12kqf3u"&&(Ol.textContent=Hn),Us=a(l),J(Kl.$$.fragment,l),rs=a(l),J(lt.$$.fragment,l),us=a(l),tt=M(l,"P",{"data-svelte-h":!0}),y(tt)!=="svelte-av8zr0"&&(tt.innerHTML=qn),hs=a(l),J(et.$$.fragment,l),fs=a(l),st=M(l,"P",{"data-svelte-h":!0}),y(st)!=="svelte-100fe39"&&(st.textContent=Sn),os=a(l),J(nt.$$.fragment,l),ds=a(l),J(at.$$.fragment,l),bs=a(l),pt=M(l,"P",{"data-svelte-h":!0}),y(pt)!=="svelte-1xuk540"&&(pt.textContent=Ln),Cs=a(l),J(Mt.$$.fragment,l),Is=a(l),yt=M(l,"P",{"data-svelte-h":!0}),y(yt)!=="svelte-1tqkg0a"&&(yt.innerHTML=Pn),$s=a(l),J(it.$$.fragment,l),ks=a(l),Jt=M(l,"P",{"data-svelte-h":!0}),y(Jt)!=="svelte-1haaffx"&&(Jt.textContent=On),Rs=a(l),J(mt.$$.fragment,l),Zs=a(l),Tt=M(l,"P",{"data-svelte-h":!0}),y(Tt)!=="svelte-1pvbr9r"&&(Tt.innerHTML=Kn),Qs=a(l),J(jt.$$.fragment,l),xs=a(l),wt=M(l,"P",{"data-svelte-h":!0}),y(wt)!=="svelte-1uviv04"&&(wt.innerHTML=la),As=a(l),J(ct.$$.fragment,l),gs=a(l),Ut=M(l,"P",{"data-svelte-h":!0}),y(Ut)!=="svelte-hefgo2"&&(Ut.textContent=ta),Vs=a(l),J(rt.$$.fragment,l),Bs=a(l),J(ut.$$.fragment,l),_s=a(l),ht=M(l,"P",{"data-svelte-h":!0}),y(ht)!=="svelte-jls05p"&&(ht.textContent=ea),Gs=a(l),J(ft.$$.fragment,l),vs=a(l),ot=M(l,"P",{"data-svelte-h":!0}),y(ot)!=="svelte-18xrhu4"&&(ot.textContent=sa),Ws=a(l),J(dt.$$.fragment,l),Es=a(l),bt=M(l,"P",{"data-svelte-h":!0}),y(bt)!=="svelte-1vadpfy"&&(bt.textContent=na),Ys=a(l),J(Ct.$$.fragment,l),Xs=a(l),It=M(l,"P",{"data-svelte-h":!0}),y(It)!=="svelte-sfvde1"&&(It.textContent=aa),Ns=a(l),J($t.$$.fragment,l),Ds=a(l),kt=M(l,"P",{"data-svelte-h":!0}),y(kt)!=="svelte-1otseb5"&&(kt.textContent=pa),Fs=a(l),J(Rt.$$.fragment,l),zs=a(l),Zt=M(l,"P",{"data-svelte-h":!0}),y(Zt)!=="svelte-eothhd"&&(Zt.textContent=Ma),Hs=a(l),J(Qt.$$.fragment,l),qs=a(l),xt=M(l,"P",{"data-svelte-h":!0}),y(xt)!=="svelte-188hwef"&&(xt.textContent=ya),Ss=a(l),At=M(l,"P",{"data-svelte-h":!0}),y(At)!=="svelte-ygi586"&&(At.innerHTML=ia),Ls=a(l),gt=M(l,"P",{"data-svelte-h":!0}),y(gt)!=="svelte-s2kks0"&&(gt.textContent=Ja),Ps=a(l),J(Vt.$$.fragment,l),Os=a(l),_t=M(l,"P",{}),Ta(_t).forEach(e),this.h()},h(){ln(U,"name","hf:doc:metadata"),ln(U,"content",Ia),ln(f,"class","flex justify-center"),ln(o,"class","flex justify-center")},m(l,t){ha(document.head,U),s(l,d,t),s(l,r,t),s(l,Bt,t),m(b,l,t),s(l,vt,t),m(C,l,t),s(l,Wt,t),s(l,I,t),s(l,Et,t),m($,l,t),s(l,Yt,t),s(l,k,t),s(l,Xt,t),m(R,l,t),s(l,Nt,t),m(h,l,t),s(l,Dt,t),s(l,Z,t),s(l,Ft,t),m(Q,l,t),s(l,zt,t),s(l,x,t),s(l,Ht,t),m(A,l,t),s(l,qt,t),m(g,l,t),s(l,St,t),s(l,V,t),s(l,Lt,t),s(l,B,t),s(l,Pt,t),s(l,_,t),s(l,Ot,t),m(G,l,t),s(l,Kt,t),s(l,v,t),s(l,le,t),m(W,l,t),s(l,te,t),s(l,E,t),s(l,ee,t),m(Y,l,t),s(l,se,t),m(X,l,t),s(l,ne,t),s(l,N,t),s(l,ae,t),m(D,l,t),s(l,pe,t),m(F,l,t),s(l,Me,t),s(l,z,t),s(l,ye,t),m(H,l,t),s(l,ie,t),s(l,q,t),s(l,Je,t),m(S,l,t),s(l,me,t),s(l,L,t),s(l,Te,t),m(P,l,t),s(l,je,t),s(l,O,t),s(l,we,t),s(l,K,t),s(l,ce,t),s(l,ll,t),s(l,Ue,t),m(tl,l,t),s(l,re,t),s(l,el,t),s(l,ue,t),m(sl,l,t),s(l,he,t),s(l,nl,t),s(l,fe,t),m(al,l,t),s(l,oe,t),s(l,pl,t),s(l,de,t),m(Ml,l,t),s(l,be,t),s(l,yl,t),s(l,Ce,t),m(il,l,t),s(l,Ie,t),s(l,Jl,t),s(l,$e,t),m(ml,l,t),s(l,ke,t),s(l,Tl,t),s(l,Re,t),m(jl,l,t),s(l,Ze,t),s(l,f,t),s(l,Qe,t),s(l,wl,t),s(l,xe,t),m(cl,l,t),s(l,Ae,t),s(l,Ul,t),s(l,ge,t),m(rl,l,t),s(l,Ve,t),s(l,ul,t),s(l,Be,t),m(hl,l,t),s(l,_e,t),s(l,fl,t),s(l,Ge,t),m(ol,l,t),s(l,ve,t),s(l,dl,t),s(l,We,t),m(bl,l,t),s(l,Ee,t),s(l,Cl,t),s(l,Ye,t),s(l,Il,t),s(l,Xe,t),m($l,l,t),s(l,Ne,t),s(l,kl,t),s(l,De,t),s(l,Rl,t),s(l,Fe,t),m(Zl,l,t),s(l,ze,t),s(l,Ql,t),s(l,He,t),s(l,xl,t),s(l,qe,t),m(Al,l,t),s(l,Se,t),s(l,gl,t),s(l,Le,t),m(Vl,l,t),s(l,Pe,t),s(l,Bl,t),s(l,Oe,t),m(_l,l,t),s(l,Ke,t),s(l,Gl,t),s(l,ls,t),m(vl,l,t),s(l,ts,t),s(l,Wl,t),s(l,es,t),m(El,l,t),s(l,ss,t),s(l,Yl,t),s(l,ns,t),m(Xl,l,t),s(l,as,t),s(l,Nl,t),s(l,ps,t),m(Dl,l,t),s(l,Ms,t),s(l,o,t),s(l,ys,t),s(l,Fl,t),s(l,is,t),s(l,zl,t),s(l,Js,t),m(Hl,l,t),s(l,ms,t),s(l,ql,t),s(l,Ts,t),m(Sl,l,t),s(l,js,t),s(l,Ll,t),s(l,ws,t),m(Pl,l,t),s(l,cs,t),s(l,Ol,t),s(l,Us,t),m(Kl,l,t),s(l,rs,t),m(lt,l,t),s(l,us,t),s(l,tt,t),s(l,hs,t),m(et,l,t),s(l,fs,t),s(l,st,t),s(l,os,t),m(nt,l,t),s(l,ds,t),m(at,l,t),s(l,bs,t),s(l,pt,t),s(l,Cs,t),m(Mt,l,t),s(l,Is,t),s(l,yt,t),s(l,$s,t),m(it,l,t),s(l,ks,t),s(l,Jt,t),s(l,Rs,t),m(mt,l,t),s(l,Zs,t),s(l,Tt,t),s(l,Qs,t),m(jt,l,t),s(l,xs,t),s(l,wt,t),s(l,As,t),m(ct,l,t),s(l,gs,t),s(l,Ut,t),s(l,Vs,t),m(rt,l,t),s(l,Bs,t),m(ut,l,t),s(l,_s,t),s(l,ht,t),s(l,Gs,t),m(ft,l,t),s(l,vs,t),s(l,ot,t),s(l,Ws,t),m(dt,l,t),s(l,Es,t),s(l,bt,t),s(l,Ys,t),m(Ct,l,t),s(l,Xs,t),s(l,It,t),s(l,Ns,t),m($t,l,t),s(l,Ds,t),s(l,kt,t),s(l,Fs,t),m(Rt,l,t),s(l,zs,t),s(l,Zt,t),s(l,Hs,t),m(Qt,l,t),s(l,qs,t),s(l,xt,t),s(l,Ss,t),s(l,At,t),s(l,Ls,t),s(l,gt,t),s(l,Ps,t),m(Vt,l,t),s(l,Os,t),s(l,_t,t),Ks=!0},p(l,[t]){const ma={};t&2&&(ma.$$scope={dirty:t,ctx:l}),h.$set(ma)},i(l){Ks||(T(b.$$.fragment,l),T(C.$$.fragment,l),T($.$$.fragment,l),T(R.$$.fragment,l),T(h.$$.fragment,l),T(Q.$$.fragment,l),T(A.$$.fragment,l),T(g.$$.fragment,l),T(G.$$.fragment,l),T(W.$$.fragment,l),T(Y.$$.fragment,l),T(X.$$.fragment,l),T(D.$$.fragment,l),T(F.$$.fragment,l),T(H.$$.fragment,l),T(S.$$.fragment,l),T(P.$$.fragment,l),T(tl.$$.fragment,l),T(sl.$$.fragment,l),T(al.$$.fragment,l),T(Ml.$$.fragment,l),T(il.$$.fragment,l),T(ml.$$.fragment,l),T(jl.$$.fragment,l),T(cl.$$.fragment,l),T(rl.$$.fragment,l),T(hl.$$.fragment,l),T(ol.$$.fragment,l),T(bl.$$.fragment,l),T($l.$$.fragment,l),T(Zl.$$.fragment,l),T(Al.$$.fragment,l),T(Vl.$$.fragment,l),T(_l.$$.fragment,l),T(vl.$$.fragment,l),T(El.$$.fragment,l),T(Xl.$$.fragment,l),T(Dl.$$.fragment,l),T(Hl.$$.fragment,l),T(Sl.$$.fragment,l),T(Pl.$$.fragment,l),T(Kl.$$.fragment,l),T(lt.$$.fragment,l),T(et.$$.fragment,l),T(nt.$$.fragment,l),T(at.$$.fragment,l),T(Mt.$$.fragment,l),T(it.$$.fragment,l),T(mt.$$.fragment,l),T(jt.$$.fragment,l),T(ct.$$.fragment,l),T(rt.$$.fragment,l),T(ut.$$.fragment,l),T(ft.$$.fragment,l),T(dt.$$.fragment,l),T(Ct.$$.fragment,l),T($t.$$.fragment,l),T(Rt.$$.fragment,l),T(Qt.$$.fragment,l),T(Vt.$$.fragment,l),Ks=!0)},o(l){j(b.$$.fragment,l),j(C.$$.fragment,l),j($.$$.fragment,l),j(R.$$.fragment,l),j(h.$$.fragment,l),j(Q.$$.fragment,l),j(A.$$.fragment,l),j(g.$$.fragment,l),j(G.$$.fragment,l),j(W.$$.fragment,l),j(Y.$$.fragment,l),j(X.$$.fragment,l),j(D.$$.fragment,l),j(F.$$.fragment,l),j(H.$$.fragment,l),j(S.$$.fragment,l),j(P.$$.fragment,l),j(tl.$$.fragment,l),j(sl.$$.fragment,l),j(al.$$.fragment,l),j(Ml.$$.fragment,l),j(il.$$.fragment,l),j(ml.$$.fragment,l),j(jl.$$.fragment,l),j(cl.$$.fragment,l),j(rl.$$.fragment,l),j(hl.$$.fragment,l),j(ol.$$.fragment,l),j(bl.$$.fragment,l),j($l.$$.fragment,l),j(Zl.$$.fragment,l),j(Al.$$.fragment,l),j(Vl.$$.fragment,l),j(_l.$$.fragment,l),j(vl.$$.fragment,l),j(El.$$.fragment,l),j(Xl.$$.fragment,l),j(Dl.$$.fragment,l),j(Hl.$$.fragment,l),j(Sl.$$.fragment,l),j(Pl.$$.fragment,l),j(Kl.$$.fragment,l),j(lt.$$.fragment,l),j(et.$$.fragment,l),j(nt.$$.fragment,l),j(at.$$.fragment,l),j(Mt.$$.fragment,l),j(it.$$.fragment,l),j(mt.$$.fragment,l),j(jt.$$.fragment,l),j(ct.$$.fragment,l),j(rt.$$.fragment,l),j(ut.$$.fragment,l),j(ft.$$.fragment,l),j(dt.$$.fragment,l),j(Ct.$$.fragment,l),j($t.$$.fragment,l),j(Rt.$$.fragment,l),j(Qt.$$.fragment,l),j(Vt.$$.fragment,l),Ks=!1},d(l){l&&(e(d),e(r),e(Bt),e(vt),e(Wt),e(I),e(Et),e(Yt),e(k),e(Xt),e(Nt),e(Dt),e(Z),e(Ft),e(zt),e(x),e(Ht),e(qt),e(St),e(V),e(Lt),e(B),e(Pt),e(_),e(Ot),e(Kt),e(v),e(le),e(te),e(E),e(ee),e(se),e(ne),e(N),e(ae),e(pe),e(Me),e(z),e(ye),e(ie),e(q),e(Je),e(me),e(L),e(Te),e(je),e(O),e(we),e(K),e(ce),e(ll),e(Ue),e(re),e(el),e(ue),e(he),e(nl),e(fe),e(oe),e(pl),e(de),e(be),e(yl),e(Ce),e(Ie),e(Jl),e($e),e(ke),e(Tl),e(Re),e(Ze),e(f),e(Qe),e(wl),e(xe),e(Ae),e(Ul),e(ge),e(Ve),e(ul),e(Be),e(_e),e(fl),e(Ge),e(ve),e(dl),e(We),e(Ee),e(Cl),e(Ye),e(Il),e(Xe),e(Ne),e(kl),e(De),e(Rl),e(Fe),e(ze),e(Ql),e(He),e(xl),e(qe),e(Se),e(gl),e(Le),e(Pe),e(Bl),e(Oe),e(Ke),e(Gl),e(ls),e(ts),e(Wl),e(es),e(ss),e(Yl),e(ns),e(as),e(Nl),e(ps),e(Ms),e(o),e(ys),e(Fl),e(is),e(zl),e(Js),e(ms),e(ql),e(Ts),e(js),e(Ll),e(ws),e(cs),e(Ol),e(Us),e(rs),e(us),e(tt),e(hs),e(fs),e(st),e(os),e(ds),e(bs),e(pt),e(Cs),e(Is),e(yt),e($s),e(ks),e(Jt),e(Rs),e(Zs),e(Tt),e(Qs),e(xs),e(wt),e(As),e(gs),e(Ut),e(Vs),e(Bs),e(_s),e(ht),e(Gs),e(vs),e(ot),e(Ws),e(Es),e(bt),e(Ys),e(Xs),e(It),e(Ns),e(Ds),e(kt),e(Fs),e(zs),e(Zt),e(Hs),e(qs),e(xt),e(Ss),e(At),e(Ls),e(gt),e(Ps),e(Os),e(_t)),e(U),w(b,l),w(C,l),w($,l),w(R,l),w(h,l),w(Q,l),w(A,l),w(g,l),w(G,l),w(W,l),w(Y,l),w(X,l),w(D,l),w(F,l),w(H,l),w(S,l),w(P,l),w(tl,l),w(sl,l),w(al,l),w(Ml,l),w(il,l),w(ml,l),w(jl,l),w(cl,l),w(rl,l),w(hl,l),w(ol,l),w(bl,l),w($l,l),w(Zl,l),w(Al,l),w(Vl,l),w(_l,l),w(vl,l),w(El,l),w(Xl,l),w(Dl,l),w(Hl,l),w(Sl,l),w(Pl,l),w(Kl,l),w(lt,l),w(et,l),w(nt,l),w(at,l),w(Mt,l),w(it,l),w(mt,l),w(jt,l),w(ct,l),w(rt,l),w(ut,l),w(ft,l),w(dt,l),w(Ct,l),w($t,l),w(Rt,l),w(Qt,l),w(Vt,l)}}}const Ia='{"title":"Дообучение SpeechT5","local":"дообучение-speecht5","sections":[{"title":"House-keeping","local":"house-keeping","sections":[],"depth":2},{"title":"Набор данных","local":"набор-данных","sections":[],"depth":2},{"title":"Препроцессинг данных","local":"препроцессинг-данных","sections":[{"title":"Очистка текста для токенизации SpeechT5","local":"очистка-текста-для-токенизации-speecht5","sections":[],"depth":3},{"title":"Дикторы","local":"дикторы","sections":[],"depth":3},{"title":"Эмбеддинги диктора","local":"эмбеддинги-диктора","sections":[],"depth":3},{"title":"Обработка датасета","local":"обработка-датасета","sections":[],"depth":3},{"title":"Коллатор данных","local":"коллатор-данных","sections":[],"depth":3}],"depth":2},{"title":"Обучение модели","local":"обучение-модели","sections":[],"depth":2},{"title":"Инференс","local":"инференс","sections":[],"depth":2}],"depth":1}';function $a(Gt){return wa(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Aa extends Ua{constructor(U){super(),ra(this,U,$a,Ca,ja,{})}}export{Aa as component};
