import{s as _n,a as jn,o as kn,n as $e}from"../chunks/scheduler.cd324960.js";import{S as Zn,i as In,e as i,s as n,c as M,h as Sn,a,d as l,b as p,f as Vn,g as r,j as m,k as Q,l as Hn,m as s,n as c,t as C,o as y,p as T,q as Gn,r as Bn}from"../chunks/index.d5c3adcc.js";import{T as de}from"../chunks/Tip.889bec11.js";import{C as gn,H as as,E as En}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.8955e42b.js";import{C as h}from"../chunks/CodeBlock.e6d23c2c.js";function Wn(U){let o,v=`Несмотря на то что в начале работы дообученные модели используют один и тот же набор весов из общей предварительно обученной модели, конечные версии
в итоге оказываются совершенно разными. Например, вы не можете взять дообученную ASR-модель и поменять местами пред-сети и пост-сети,
чтобы получить рабочую TTS-модель. SpeechT5 гибкая, но не настолько ;)`;return{c(){o=i("p"),o.textContent=v},l(f){o=a(f,"P",{"data-svelte-h":!0}),m(o)!=="svelte-hc3zlu"&&(o.textContent=v)},m(f,u){s(f,o,u)},p:$e,d(f){f&&l(o)}}}function Rn(U){let o,v=`Эмбеддинги диктора - это метод компактного представления личности диктора в виде вектора
фиксированного размера, независимо от длины высказывания. Эти эмбеддинги фиксируют важную информацию о голосе,
акценте, интонации и других уникальных характеристиках, отличающих одного диктора от другого. Такие эмбеддинги могут быть
использованы для верификации диктора, диаризации, идентификации диктора и т.д.`,f,u,b="Наиболее распространенными методами генерации эмбеддингов диктора являются:",x,w,j="<li>I-векторы (I-Vectors): I-векторы (векторы идентичности) основаны на смешанной модели Гаусса (Gaussian mixture model, GMM). Они представляют говорящих в виде низкоразмерных векторов фиксированной длины, полученных на основе статистики GMM, специфичной для конкретного говорящего, и получаются неконтролируемым (unsupervised) способом.</li> <li>X-векторы (X-Vectors): X-векторы создаются с помощью глубоких нейронных сетей (DNN) и захватывают информацию о дикторе на уровне фрейма с учетом временного контекста.</li>",d,J,L=`<a href="https://www.danielpovey.com/files/2018_icassp_xvectors.pdf" rel="nofollow">X-Vectors</a> это современный метод, который показывает более высокую эффективность
на оценочных наборах данных по сравнению с I-векторами.  Для получения X-векторов используется глубокая нейронная сеть: она обучается различать
дикторов и сопоставляет высказывания переменной длины с эмбеддингами фиксированной размерности. Также можно загрузить X-вектор заранее вычисленных эмбеддингов диктора, в котором будут заключены речевые характеристики конкретного диктора.`;return{c(){o=i("p"),o.textContent=v,f=n(),u=i("p"),u.textContent=b,x=n(),w=i("ul"),w.innerHTML=j,d=n(),J=i("p"),J.innerHTML=L},l($){o=a($,"P",{"data-svelte-h":!0}),m(o)!=="svelte-17h6l7r"&&(o.textContent=v),f=p($),u=a($,"P",{"data-svelte-h":!0}),m(u)!=="svelte-12x00y8"&&(u.textContent=b),x=p($),w=a($,"UL",{"data-svelte-h":!0}),m(w)!=="svelte-1j6uk8q"&&(w.innerHTML=j),d=p($),J=a($,"P",{"data-svelte-h":!0}),m(J)!=="svelte-1v4olv4"&&(J.innerHTML=L)},m($,V){s($,o,V),s($,f,V),s($,u,V),s($,x,V),s($,w,V),s($,d,V),s($,J,V)},p:$e,d($){$&&(l(o),l(f),l(u),l(x),l(w),l(d),l(J))}}}function Nn(U){let o,v=`<a href="https://arxiv.org/pdf/2010.05646v2.pdf" rel="nofollow">HiFi-GAN</a> представляет собой современную генеративную состязательную сеть (generative adversarial network, GAN), разработанную
для высокоточного синтеза речи. Она способна генерировать высококачественные и реалистичные формы волны звука на основе спектрограмм.`,f,u,b=`В общем случае HiFi-GAN состоит из одного генератора и двух дискриминаторов. Генератор представляет собой полностью сверточную
нейронную сеть, которая принимает на вход mel-спектрограмму и учится генерировать исходные аудиосигналы. Роль дискриминаторов
заключается в том, чтобы различать реальный и сгенерированный звук. Оба дискриминатора фокусируются на различных аспектах звука.`,x,w,j=`HiFi-GAN обучается на большом наборе данных высококачественных аудиозаписей. В нем используется так называемое <em>состязательное обучение</em>,
при котором сети генератора и дискриминатора соревнуются друг с другом. Вначале генератор выдает низкокачественный звук и дискриминатор легко
отличает его от реального звука. В ходе обучения генератор улучшает свой выход, пытаясь обмануть дискриминатор. Дискриминатор, в свою очередь,
становится более точным в различении реального и сгенерированного звука. Такая состязательная обратная связь помогает обеим сетям совершенствоваться
с течением времени. В конечном итоге HiFi-GAN учится генерировать звук высокой достоверности, близкий по характеристикам к обучающим данным.`;return{c(){o=i("p"),o.innerHTML=v,f=n(),u=i("p"),u.textContent=b,x=n(),w=i("p"),w.innerHTML=j},l(d){o=a(d,"P",{"data-svelte-h":!0}),m(o)!=="svelte-1dwgn1g"&&(o.innerHTML=v),f=p(d),u=a(d,"P",{"data-svelte-h":!0}),m(u)!=="svelte-nji8zz"&&(u.textContent=b),x=p(d),w=a(d,"P",{"data-svelte-h":!0}),m(w)!=="svelte-45ja6n"&&(w.innerHTML=j)},m(d,J){s(d,o,J),s(d,f,J),s(d,u,J),s(d,x,J),s(d,w,J)},p:$e,d(d){d&&(l(o),l(f),l(u),l(x),l(w))}}}function Xn(U){let o,v='Bark, как и другие 🤗 модели трансформеров, могут быть оптимизированы всего в нескольких строках кода в отношении скорости и потребления памяти. Чтобы узнать, как это сделать, нажмите на <a href="https://colab.research.google.com/github/ylacombe/notebooks/blob/main/Benchmark_Bark_HuggingFace.ipynb" rel="nofollow">этот демонстрационный блокнот Colab</a>.';return{c(){o=i("p"),o.innerHTML=v},l(f){o=a(f,"P",{"data-svelte-h":!0}),m(o)!=="svelte-15dc2di"&&(o.innerHTML=v)},m(f,u){s(f,o,u)},p:$e,d(f){f&&l(o)}}}function zn(U){let o,v,f;return v=new h({props:{code:"cGlwJTIwaW5zdGFsbCUyMGdpdCUyQmh0dHBzJTNBJTJGJTJGZ2l0aHViLmNvbSUyRmhvbGxhbmNlJTJGdHJhbnNmb3JtZXJzLmdpdCU0MDY5MDBlOGJhNjUzMjE2MmE4NjEzZDIyNzBlYzIyODZjM2Y1OGY1N2I=",highlighted:"pip install git+https://github.com/hollance/transformers.git@6900e8ba6532162a8613d2270ec2286c3f58f57b",wrap:!1}}),{c(){o=Gn(`Модель MMS была добавлена в 🤗 Transformers совсем недавно, поэтому ее API может немного измениться. На момент выхода этого раздела
MMS для TTS планируется интегрировать в Transformers \`main\` через пару дней.
После слияния вам придется установить библиотеку из исходного кода. Тем временем, если вы хотите попробовать следующий пример инференса,
вы можете установить модель из ветки PR:

	`),M(v.$$.fragment)},l(u){o=Bn(u,`Модель MMS была добавлена в 🤗 Transformers совсем недавно, поэтому ее API может немного измениться. На момент выхода этого раздела
MMS для TTS планируется интегрировать в Transformers \`main\` через пару дней.
После слияния вам придется установить библиотеку из исходного кода. Тем временем, если вы хотите попробовать следующий пример инференса,
вы можете установить модель из ветки PR:

	`),r(v.$$.fragment,u)},m(u,b){s(u,o,b),c(v,u,b),f=!0},p:$e,i(u){f||(C(v.$$.fragment,u),f=!0)},o(u){y(v.$$.fragment,u),f=!1},d(u){u&&l(o),T(v,u)}}}function Qn(U){let o,v,f,u,b,x,w,j,d,J=`По сравнению с задачами ASR (автоматическое распознавание речи) и классификации звука, здесь значительно меньше предварительно обученных
контрольных точек. На 🤗 Hub вы найдете около 300 подходящих контрольных точек. Среди
этих предварительно обученных моделей мы остановимся на двух архитектурах, которые легко доступны для вас в библиотеке
🤗 Transformers - SpeechT5 и Massive Multilingual Speech (MMS).
В этом разделе мы рассмотрим, как использовать эти предварительно обученные модели в библиотеке Transformers для TTS.`,L,$,V,F,ms=`<a href="https://arxiv.org/abs/2110.07205" rel="nofollow">SpeechT5</a> - это модель, опубликованная Джуньи Ао и другими специалистами компании Microsoft, которая способна
решать целый ряд речевых задач. Несмотря на то, что в данном разделе мы сосредоточились на аспекте преобразования текста в речь,
эта модель может быть адаптирована как для задач преобразования речи в текст (автоматическое распознавание речи или идентификация диктора),
так и для задач преобразования речи в речь (например, улучшение речи или преобразование между различными голосами). Это обусловлено тем, как эта модель
была спроектирована и предварительно обучена.`,ve,P,os=`В основе SpeechT5 лежит обычная модель трансформера энкодер-декодер. Как и любой другой трансформер, модель энкодер-декодер
осуществляет преобразование последовательности в последовательность с использованием скрытых представлений. Эта основа трансформера
одинакова для всех задач, поддерживаемых SpeechT5.`,we,Y,us=`Этот трансформер дополнен шестью модально-специфическими (речь/текст) <em>пред-сетями</em> и <em>пост-сетями</em>. Входная речь или текст
(в зависимости от задачи) предварительно обрабатывается через соответствующую предварительную сеть для получения скрытых представлений, которые может использовать трансформер.
Выходные данные трансформера передаются в пост-сеть, которая использует их для генерации вывода в целевой модальности.`,he,q,fs="Вот как выглядит архитектура (изображение из оригинальной статьи):",be,k,Ms='<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/speecht5/architecture.jpg" alt="SpeechT5 architecture from the original paper"/>',Je,A,rs=`SpeechT5 сначала проходит предварительное обучение на больших объемах немаркированных речевых и текстовых данных, чтобы получить единое представление
различных модальностей. На этапе предварительного обучения все предварительные и последующие сети используются одновременно.`,xe,D,cs=`После предварительного обучения вся структура энкодера-декодера настраивается для каждой конкретной задачи. На этом этапе используются только те
пред-сети и пост-сети, которые имеют отношение к конкретной задаче. Например, чтобы использовать SpeechT5 для преобразования текста в речь, необходимо
использовать предварительную сеть энкодера текста для текстовых входов и предварительную и пост-сети декодера речи для речевых выходов.`,Ue,K,Cs=`Такой подход позволяет получить несколько моделей, дообученных для различных речевых задач, все они выигрывают от первоначального
предварительного обучения на немаркированных данных.`,Ve,Z,_e,O,ys="Посмотрим, какие пред- и пост-сети использует SpeechT5 для решения задачи TTS:",je,tt,Ts="<li>Предварительная сеть энкодера текста: Слой эмбедингов текста, который сопоставляет текстовые токены со скрытыми представлениями, ожидаемыми энкодером. Это аналогично тому, что происходит в NLP-модели, такой как BERT.</li> <li>Предварительная сеть декодера речи: На вход подается лог мел спектрограммы, и с помощью последовательности линейных слоев спектрограмма сжимается в скрытые представления.</li> <li>Пост-сеть декодера речи: Здесь прогнозируется остаток, который добавляется к выходной спектрограмме и используется для уточнения результатов.</li>",ke,et,ds="В совокупности именно так выглядит архитектура SpeechT5 для преобразования текста в речь:",Ze,I,$s='<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/speecht5/tts.jpg" alt="SpeechT5 architecture for TTS"/>',Ie,lt,vs=`Как видите, на выходе получается лог-мел спектрограмма, а не конечная форма волны. Если вы помните, мы вкратце касались
этой темы в <a href="../chapter3/introduction#spectrogram-output">Разделе 3</a>. Обычно модели, генерирующие звук, выдают
лог мел спектограмму, которой необходимо преобразовать в форму волны с помощью дополнительной нейронной сети, называемой вокодером.`,Se,st,ws="Давайте посмотрим, как это можно сделать.",He,nt,hs=`Сначала загрузим из 🤗 Hub настроенную TTS-модель SpeechT5, а также объект процессора, используемый для токенизации
и извлечения признаков:`,Ge,pt,Be,it,bs="Далее необходимо выполнить токенизацию входного текста.",ge,at,Ee,mt,Js=`Модель SpeechT5 TTS не ограничивается созданием речи для одного диктора. Вместо этого она использует так называемые эмбединги диктора,
которые фиксируют голосовые характеристики конкретного диктора.`,We,S,Re,ot,xs=`Загрузим такие эмбединги диктора из набора датсета в Hub. Эмбединги были получены из <a href="http://www.festvox.org/cmu_arctic/" rel="nofollow">датасета CMU ARCTIC</a> с помощью
<a href="https://huggingface.co/mechanicalsea/speecht5-vc/blob/main/manifest/utils/prep_cmu_arctic_spkemb.py" rel="nofollow">этого скрипта</a>, но любой Х-вектор эмбединг должен работать.`,Ne,ut,Xe,ft,Us="Эмбеддинг диктора представляет собой тензор формы (1, 512). Данный эмбеддинг диктора описывает женский голос.",ze,Mt,Vs="На данном этапе у нас уже достаточно входных данных, чтобы сгенерировать на выходе лог-мел спектрограмму, это можно сделать следующим образом:",Qe,rt,Le,ct,_s=`В результате получается тензор формы (140, 80), содержащий лог-мел спектрограмму. Первое измерение - длина последовательности, и
она может изменяться между запусками, так как предварительная сеть декодер речи всегда применяет исключение (dropout) к входной последовательности. Это вносит некоторую
случайную вариативность в генерируемую речь.`,Fe,Ct,js=`Однако если мы хотим генерировать форму волны речи, нам необходимо указать вокодер, который будет использоваться для преобразования спектрограммы в форму волны.
Теоретически можно использовать любой вокодер, работающий с 80-биновыми мел-спектрограммами. Удобно, что 🤗 Transformers предлагает вокодер,
основанный на HiFi-GAN. Его весовые коэффициенты были любезно предоставлены авторами SpeechT5.`,Pe,H,Ye,yt,ks="Загрузить вокодер так же просто, как и любую другую модель 🤗 Transformers.",qe,Tt,Ae,dt,Zs="Теперь достаточно передать его в качестве аргумента при генерации речи, и выходные данные будут автоматически преобразованы в форму волны речи.",De,$t,Ke,vt,Is="Давайте послушаем результат. Частота дискретизации, используемая SpeechT5, всегда равна 16 кГц.",Oe,wt,tl,ht,Ss="Отлично!",el,bt,Hs=`Не стесняйтесь пользоваться демонстрационной версией SpeechT5, изучайте другие голоса, экспериментируйте с вводом. Обратите внимание, что эта
предварительно обученная контрольная точка поддерживает только английский язык:`,ll,_,Gs="",Bs,sl,Jt,nl,xt,gs='Bark - это модель преобразования текста в речь на основе трансформера, предложенная компанией Suno AI в <a href="https://github.com/suno-ai/bark" rel="nofollow">suno-ai/bark</a>.',pl,Ut,Es='В отличие от SpeechT5, Bark генерирует непосредственно “сырые” формы волны речи, что избавляет от необходимости использования отдельного вокодера при инференсе - он уже интегрирован. Такая эффективность достигается за счет использования <a href="https://huggingface.co/docs/transformers/main/en/model_doc/encodec" rel="nofollow"><code>Encodec</code></a>, который служит одновременно и кодеком, и инструментом сжатия.',il,Vt,Ws="С помощью <code>Encodec</code> можно сжимать звук в облегченный формат для уменьшения занимаемой памяти и впоследствии распаковывать его для восстановления исходного звучания. Процесс сжатия осуществляется с помощью 8 кодовых книг (codebook), каждая из которых состоит из целочисленных векторов. Эти кодовые книги можно рассматривать как представления или эмбеддинги звука в целочисленной форме. Важно отметить, что каждая последующая кодовая книга улучшает качество восстановления звука из предыдущих кодовых книг. Поскольку кодовые книги являются целочисленными векторами, они могут быть выучены с помощью трансформерных моделей, которые очень эффективно справляются с этой задачей. Именно для этого и был специально обучен Bark.",al,_t,Rs="Если говорить более конкретно, то Bark состоит из 4 основных моделей:",ml,jt,Ns='<li><code>BarkSemanticModel</code> (также называемая ‘текстовой’ моделью): каузальная авторегрессионная трансформерная модель, принимающая на вход токены из текста и предсказывающая семантические токены, отражающие смысл текста.</li> <li><code>BarkCoarseModel</code> (также называемая моделью ‘грубой акустики’): каузальный авторегрессионный трансформер, принимающий на вход результаты работы модели <code>BarkSemanticModel</code>. Его цель - предсказать первые две кодовые книги, необходимые для работы <a href="https://github.com/facebookresearch/encodec" rel="nofollow">EnCodec</a>.</li> <li><code>BarkFineModel</code> (модель ‘тонкой акустики’), на этот раз некаузальный автоэнкодерный трансформер, который итеративно предсказывает последние кодовые книги на основе суммы эбеддингов предыдущих кодовых книг.</li> <li>спрогнозировав все каналы кодовой книги из <code>EncodecModel</code>, Bark использует ее для декодирования выходного звукового массива.</li>',ol,kt,Xs="Следует отметить, что каждый из первых трех модулей может поддерживать условные эмбеддинги диктора, обусловливающие выходной звук в соответствии с определенным заранее заданным голосом.",ul,Zt,zs="Bark - это высокоуправляемая модель преобразования текста в речь, то есть ее можно использовать с различными настройками, в чем мы сейчас убедимся.",fl,It,Qs="Прежде всего, загрузите модель и ее процессор.",Ml,St,Ls="Роль процессора здесь двухсторонняя:",rl,Ht,Fs="<li>Он используется для токенизации входного текста, т.е. для разбиения его на небольшие фрагменты, понятные модели.</li> <li>В нем хранятся эбеддинги дикторов, т.е. голосовые предустановки, которые могут обуславливать генерацию.</li>",cl,Gt,Cl,Bt,Ps='Bark очень универсален и может генерировать звук, обусловленный <a href="https://suno-ai.notion.site/8b8e8749ed514b0cbf3f699013548683?v=bc67cff786b04b50b3ceb756fd05f68c" rel="nofollow">библиотекой эбеддингов дикторов</a> которая может быть загружена через процессор.',yl,gt,Tl,G,Ys=`<source src="https://huggingface.co/datasets/ylacombe/hf-course-audio-files/resolve/main/first_sample.wav" type="audio/wav"/> 
Your browser does not support the audio element.`,dl,Et,qs='Он также может генерировать готовую многоязычную речь, например, на французском и китайском языках. Список поддерживаемых языков можно найти <a href="https://huggingface.co/suno/bark" rel="nofollow">здесь</a>. В отличие от MMS, о котором речь пойдет ниже, здесь не нужно указывать используемый язык, а достаточно просто адаптировать входной текст к соответствующему языку.',$l,Wt,vl,B,As=`<source src="https://huggingface.co/datasets/ylacombe/hf-course-audio-files/resolve/main/second_sample.wav" type="audio/wav"/> 
Your browser does not support the audio element.`,wl,Rt,Ds="Модель также может генерировать <strong>невербальные коммуникации</strong>, такие как смех, вздох и плач. Для этого достаточно модифицировать входной текст соответствующими подсказками, такими как <code>[clears throat]</code>, <code>[laughter]</code> или <code>...</code>.",hl,Nt,bl,g,Ks=`<source src="https://huggingface.co/datasets/ylacombe/hf-course-audio-files/resolve/main/third_sample.wav" type="audio/wav"/> 
Your browser does not support the audio element.`,Jl,Xt,Os="Bark может даже генерировать музыку. Вы можете помочь, добавив ♪ музыкальные ноты ♪ вокруг ваших слов.",xl,zt,Ul,E,tn=`<source src="https://huggingface.co/datasets/ylacombe/hf-course-audio-files/resolve/main/fourth_sample.wav" type="audio/wav"/> 
Your browser does not support the audio element.`,Vl,Qt,en="В отличие от SpeechT5, Bark напрямую генерирует форму волны сырой речи. Это означает, что для инференса не нужно добавлять вокодер, он уже “встроен”.",_l,Lt,ln=`Кроме того, Bark поддерживает пакетную обработку, то есть можно одновременно обрабатывать несколько текстовых записей за счет более интенсивных вычислений.
На некоторых аппаратных средствах, таких как GPU, пакетная обработка позволяет ускорить общую генерацию, что означает, что генерация всех образцов одновременно может быть быстрее, чем генерация их по одному.`,jl,Ft,sn="Попробуем сгенерировать несколько примеров:",kl,Pt,Zl,Yt,nn="Давайте прослушаем выводы по очереди.",Il,qt,pn="Первый:",Sl,At,Hl,W,an=`<source src="https://huggingface.co/datasets/ylacombe/hf-course-audio-files/resolve/main/batch_1.wav" type="audio/wav"/> 
Your browser does not support the audio element.`,Gl,Dt,mn="Второй:",Bl,Kt,gl,R,on=`<source src="https://huggingface.co/datasets/ylacombe/hf-course-audio-files/resolve/main/batch_2.wav" type="audio/wav"/> 
Your browser does not support the audio element.`,El,Ot,un="Третий:",Wl,te,Rl,N,fn=`<source src="https://huggingface.co/datasets/ylacombe/hf-course-audio-files/resolve/main/batch_3.wav" type="audio/wav"/> 
Your browser does not support the audio element.`,Nl,X,Xl,ee,zl,le,Mn=`Что делать, если вам нужна предварительно обученная модель на языке, отличном от английского? Массивная многоязыковая речь (Massive Multilingual Speech, MMS) - это
еще одна модель, которая охватывает целый ряд речевых задач, но при этом поддерживает большое количество языков. Например, она может
синтезировать речь на более чем 1100 языках.`,Ql,se,rn=`MMS для преобразования текста в речь базируется на технологии описанной в <a href="(https://arxiv.org/pdf/2106.06103.pdf)">статье VITS написанной Kim и другими специалистами в 2021 году</a>,
которая является одним из современных подходов в TTS.`,Ll,ne,cn=`VITS - это сеть генерации речи, преобразующая текст в сырую форму волны речи. Он работает как условный вариационный
автокодер, вычисляя звуковые признаки из входного текста. Сначала генерируются акустические признаки, представленные
в виде спектрограмм. Затем форма сигнала декодируется с помощью транспонированных сверточных слоев, адаптированных из HiFi-GAN.
В процессе инференса кодировки текста подвергаются апсемплингу и преобразуются в волновые формы с помощью потокового модуля и декодера HiFi-GAN.
Это означает, что не нужно добавлять вокодер для инференса, он уже “встроен”.`,Fl,z,Pl,pe,Cn=`Давайте попробуем использовать MMS и посмотрим, как можно синтезировать речь на языке, отличном от английского, например, на немецком.
Сначала загрузим контрольную точку модели и токенизатор для нужного языка:`,Yl,ie,ql,ae,yn=`Вы можете заметить, что для загрузки модели MMS необходимо использовать <code>VitsModel</code> и <code>VitsTokenizer</code>. Это связано с тем, что MMS для преобразования текста в речь
основана на модели VITS, о которой говорилось выше.`,Al,me,Tn="Возьмем для примера текст на немецком языке, например, эти две первые строчки из детской песенки:",Dl,oe,Kl,ue,dn="Для генерации выходной волновой формы необходимо предварительно обработать текст с помощью токенизатора и передать его в модель:",Ol,fe,ts,Me,$n="Давайте послушаем:",es,re,ls,ce,vn='Замечательно! Если вы хотите попробовать MMS на другом языке, найдите другие подходящие контрольные точки <code>vits</code> <a href="https://huggingface.co/models?filter=vits" rel="nofollow">в 🤗 Hub</a>.',ss,Ce,wn="Теперь давайте посмотрим, как можно самостоятельно дообучить модель TTS!",ns,ye,ps,Te,is;return b=new gn({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),w=new as({props:{title:"Предварительно обученные модели text-to-speech",local:"предварительно-обученные-модели-text-to-speech",headingTag:"h1"}}),$=new as({props:{title:"SpeechT5",local:"speecht5",headingTag:"h2"}}),Z=new de({props:{$$slots:{default:[Wn]},$$scope:{ctx:U}}}),pt=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFNwZWVjaFQ1UHJvY2Vzc29yJTJDJTIwU3BlZWNoVDVGb3JUZXh0VG9TcGVlY2glMEElMEFwcm9jZXNzb3IlMjAlM0QlMjBTcGVlY2hUNVByb2Nlc3Nvci5mcm9tX3ByZXRyYWluZWQoJTIybWljcm9zb2Z0JTJGc3BlZWNodDVfdHRzJTIyKSUwQW1vZGVsJTIwJTNEJTIwU3BlZWNoVDVGb3JUZXh0VG9TcGVlY2guZnJvbV9wcmV0cmFpbmVkKCUyMm1pY3Jvc29mdCUyRnNwZWVjaHQ1X3R0cyUyMik=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> SpeechT5Processor, SpeechT5ForTextToSpeech

processor = SpeechT5Processor.from_pretrained(<span class="hljs-string">&quot;microsoft/speecht5_tts&quot;</span>)
model = SpeechT5ForTextToSpeech.from_pretrained(<span class="hljs-string">&quot;microsoft/speecht5_tts&quot;</span>)`,wrap:!1}}),at=new h({props:{code:"aW5wdXRzJTIwJTNEJTIwcHJvY2Vzc29yKHRleHQlM0QlMjJEb24ndCUyMGNvdW50JTIwdGhlJTIwZGF5cyUyQyUyMG1ha2UlMjB0aGUlMjBkYXlzJTIwY291bnQuJTIyJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJwdCUyMik=",highlighted:'inputs = processor(text=<span class="hljs-string">&quot;Don&#x27;t count the days, make the days count.&quot;</span>, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)',wrap:!1}}),S=new de({props:{$$slots:{default:[Rn]},$$scope:{ctx:U}}}),ut=new h({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBZW1iZWRkaW5nc19kYXRhc2V0JTIwJTNEJTIwbG9hZF9kYXRhc2V0KCUyMk1hdHRoaWpzJTJGY211LWFyY3RpYy14dmVjdG9ycyUyMiUyQyUyMHNwbGl0JTNEJTIydmFsaWRhdGlvbiUyMiklMEElMEFpbXBvcnQlMjB0b3JjaCUwQSUwQXNwZWFrZXJfZW1iZWRkaW5ncyUyMCUzRCUyMHRvcmNoLnRlbnNvcihlbWJlZGRpbmdzX2RhdGFzZXQlNUI3MzA2JTVEJTVCJTIyeHZlY3RvciUyMiU1RCkudW5zcXVlZXplKDAp",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset

embeddings_dataset = load_dataset(<span class="hljs-string">&quot;Matthijs/cmu-arctic-xvectors&quot;</span>, split=<span class="hljs-string">&quot;validation&quot;</span>)

<span class="hljs-keyword">import</span> torch

speaker_embeddings = torch.tensor(embeddings_dataset[<span class="hljs-number">7306</span>][<span class="hljs-string">&quot;xvector&quot;</span>]).unsqueeze(<span class="hljs-number">0</span>)`,wrap:!1}}),rt=new h({props:{code:"c3BlY3Ryb2dyYW0lMjAlM0QlMjBtb2RlbC5nZW5lcmF0ZV9zcGVlY2goaW5wdXRzJTVCJTIyaW5wdXRfaWRzJTIyJTVEJTJDJTIwc3BlYWtlcl9lbWJlZGRpbmdzKQ==",highlighted:'spectrogram = model.generate_speech(inputs[<span class="hljs-string">&quot;input_ids&quot;</span>], speaker_embeddings)',wrap:!1}}),H=new de({props:{$$slots:{default:[Nn]},$$scope:{ctx:U}}}),Tt=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFNwZWVjaFQ1SGlmaUdhbiUwQSUwQXZvY29kZXIlMjAlM0QlMjBTcGVlY2hUNUhpZmlHYW4uZnJvbV9wcmV0cmFpbmVkKCUyMm1pY3Jvc29mdCUyRnNwZWVjaHQ1X2hpZmlnYW4lMjIp",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>)`,wrap:!1}}),$t=new h({props:{code:"c3BlZWNoJTIwJTNEJTIwbW9kZWwuZ2VuZXJhdGVfc3BlZWNoKGlucHV0cyU1QiUyMmlucHV0X2lkcyUyMiU1RCUyQyUyMHNwZWFrZXJfZW1iZWRkaW5ncyUyQyUyMHZvY29kZXIlM0R2b2NvZGVyKQ==",highlighted:'speech = model.generate_speech(inputs[<span class="hljs-string">&quot;input_ids&quot;</span>], speaker_embeddings, vocoder=vocoder)',wrap:!1}}),wt=new h({props:{code:"ZnJvbSUyMElQeXRob24uZGlzcGxheSUyMGltcG9ydCUyMEF1ZGlvJTBBJTBBQXVkaW8oc3BlZWNoJTJDJTIwcmF0ZSUzRDE2MDAwKQ==",highlighted:`<span class="hljs-keyword">from</span> IPython.display <span class="hljs-keyword">import</span> Audio

Audio(speech, rate=<span class="hljs-number">16000</span>)`,wrap:!1}}),Jt=new as({props:{title:"Bark",local:"bark",headingTag:"h2"}}),Gt=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJhcmtNb2RlbCUyQyUyMEJhcmtQcm9jZXNzb3IlMEElMEFtb2RlbCUyMCUzRCUyMEJhcmtNb2RlbC5mcm9tX3ByZXRyYWluZWQoJTIyc3VubyUyRmJhcmstc21hbGwlMjIpJTBBcHJvY2Vzc29yJTIwJTNEJTIwQmFya1Byb2Nlc3Nvci5mcm9tX3ByZXRyYWluZWQoJTIyc3VubyUyRmJhcmstc21hbGwlMjIp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BarkModel, BarkProcessor

model = BarkModel.from_pretrained(<span class="hljs-string">&quot;suno/bark-small&quot;</span>)
processor = BarkProcessor.from_pretrained(<span class="hljs-string">&quot;suno/bark-small&quot;</span>)`,wrap:!1}}),gt=new h({props:{code:"JTIzJTIwYWRkJTIwYSUyMHNwZWFrZXIlMjBlbWJlZGRpbmclMEFpbnB1dHMlMjAlM0QlMjBwcm9jZXNzb3IoJTIyVGhpcyUyMGlzJTIwYSUyMHRlc3QhJTIyJTJDJTIwdm9pY2VfcHJlc2V0JTNEJTIydjIlMkZlbl9zcGVha2VyXzMlMjIpJTBBJTBBc3BlZWNoX291dHB1dCUyMCUzRCUyMG1vZGVsLmdlbmVyYXRlKCoqaW5wdXRzKS5jcHUoKS5udW1weSgp",highlighted:`<span class="hljs-comment"># add a speaker embedding</span>
inputs = processor(<span class="hljs-string">&quot;This is a test!&quot;</span>, voice_preset=<span class="hljs-string">&quot;v2/en_speaker_3&quot;</span>)

speech_output = model.generate(**inputs).cpu().numpy()`,wrap:!1}}),Wt=new h({props:{code:"JTIzJTIwdHJ5JTIwaXQlMjBpbiUyMEZyZW5jaCUyQyUyMGxldCdzJTIwYWxzbyUyMGFkZCUyMGElMjBGcmVuY2glMjBzcGVha2VyJTIwZW1iZWRkaW5nJTBBaW5wdXRzJTIwJTNEJTIwcHJvY2Vzc29yKCUyMkMnZXN0JTIwdW4lMjB0ZXN0ISUyMiUyQyUyMHZvaWNlX3ByZXNldCUzRCUyMnYyJTJGZnJfc3BlYWtlcl8xJTIyKSUwQSUwQXNwZWVjaF9vdXRwdXQlMjAlM0QlMjBtb2RlbC5nZW5lcmF0ZSgqKmlucHV0cykuY3B1KCkubnVtcHkoKQ==",highlighted:`<span class="hljs-comment"># try it in French, let&#x27;s also add a French speaker embedding</span>
inputs = processor(<span class="hljs-string">&quot;C&#x27;est un test!&quot;</span>, voice_preset=<span class="hljs-string">&quot;v2/fr_speaker_1&quot;</span>)

speech_output = model.generate(**inputs).cpu().numpy()`,wrap:!1}}),Nt=new h({props:{code:"aW5wdXRzJTIwJTNEJTIwcHJvY2Vzc29yKCUwQSUyMCUyMCUyMCUyMCUyMiU1QmNsZWFycyUyMHRocm9hdCU1RCUyMFRoaXMlMjBpcyUyMGElMjB0ZXN0JTIwLi4uJTIwYW5kJTIwSSUyMGp1c3QlMjB0b29rJTIwYSUyMGxvbmclMjBwYXVzZS4lMjIlMkMlMEElMjAlMjAlMjAlMjB2b2ljZV9wcmVzZXQlM0QlMjJ2MiUyRmZyX3NwZWFrZXJfMSUyMiUyQyUwQSklMEElMEFzcGVlY2hfb3V0cHV0JTIwJTNEJTIwbW9kZWwuZ2VuZXJhdGUoKippbnB1dHMpLmNwdSgpLm51bXB5KCk=",highlighted:`inputs = processor(
    <span class="hljs-string">&quot;[clears throat] This is a test ... and I just took a long pause.&quot;</span>,
    voice_preset=<span class="hljs-string">&quot;v2/fr_speaker_1&quot;</span>,
)

speech_output = model.generate(**inputs).cpu().numpy()`,wrap:!1}}),zt=new h({props:{code:"aW5wdXRzJTIwJTNEJTIwcHJvY2Vzc29yKCUwQSUyMCUyMCUyMCUyMCUyMiVFMiU5OSVBQSUyMEluJTIwdGhlJTIwbWlnaHR5JTIwanVuZ2xlJTJDJTIwSSdtJTIwdHJ5aW5nJTIwdG8lMjBnZW5lcmF0ZSUyMGJhcmtzLiUyMiUyQyUwQSklMEElMEFzcGVlY2hfb3V0cHV0JTIwJTNEJTIwbW9kZWwuZ2VuZXJhdGUoKippbnB1dHMpLmNwdSgpLm51bXB5KCk=",highlighted:`inputs = processor(
    <span class="hljs-string">&quot;♪ In the mighty jungle, I&#x27;m trying to generate barks.&quot;</span>,
)

speech_output = model.generate(**inputs).cpu().numpy()`,wrap:!1}}),Pt=new h({props:{code:"aW5wdXRfbGlzdCUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMiU1QmNsZWFycyUyMHRocm9hdCU1RCUyMEhlbGxvJTIwdWglMjAuLi4lMkMlMjBteSUyMGRvZyUyMGlzJTIwY3V0ZSUyMCU1QmxhdWdodGVyJTVEJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIyTGV0J3MlMjB0cnklMjBnZW5lcmF0aW5nJTIwc3BlZWNoJTJDJTIwd2l0aCUyMEJhcmslMkMlMjBhJTIwdGV4dC10by1zcGVlY2glMjBtb2RlbCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMiVFMiU5OSVBQSUyMEluJTIwdGhlJTIwanVuZ2xlJTJDJTIwdGhlJTIwbWlnaHR5JTIwanVuZ2xlJTJDJTIwdGhlJTIwbGlvbiUyMGJhcmtzJTIwdG9uaWdodCUyMCVFMiU5OSVBQSUyMiUyQyUwQSU1RCUwQSUwQSUyMyUyMCVEMSU4MiVEMCVCMCVEMCVCQSVEMCVCNiVEMCVCNSUyMCVEMCVCNCVEMCVCRSVEMCVCMSVEMCVCMCVEMCVCMiVEMCVCQiVEMSU4RiVEMCVCNSVEMCVCQyUyMCVEMSU4RCVEMCVCQyVEMCVCMSVEMCVCNSVEMCVCNCVEMCVCNCVEMCVCOCVEMCVCRCVEMCVCMyVEMCVCOCUyMCVEMCVCNCVEMCVCOCVEMCVCQSVEMSU4MiVEMCVCRSVEMSU4MCVEMCVCMCUwQWlucHV0cyUyMCUzRCUyMHByb2Nlc3NvcihpbnB1dF9saXN0JTJDJTIwdm9pY2VfcHJlc2V0JTNEJTIydjIlMkZlbl9zcGVha2VyXzMlMjIpJTBBJTBBc3BlZWNoX291dHB1dCUyMCUzRCUyMG1vZGVsLmdlbmVyYXRlKCoqaW5wdXRzKS5jcHUoKS5udW1weSgp",highlighted:`input_list = [
    <span class="hljs-string">&quot;[clears throat] Hello uh ..., my dog is cute [laughter]&quot;</span>,
    <span class="hljs-string">&quot;Let&#x27;s try generating speech, with Bark, a text-to-speech model&quot;</span>,
    <span class="hljs-string">&quot;♪ In the jungle, the mighty jungle, the lion barks tonight ♪&quot;</span>,
]

<span class="hljs-comment"># также добавляем эмбеддинги диктора</span>
inputs = processor(input_list, voice_preset=<span class="hljs-string">&quot;v2/en_speaker_3&quot;</span>)

speech_output = model.generate(**inputs).cpu().numpy()`,wrap:!1}}),At=new h({props:{code:"ZnJvbSUyMElQeXRob24uZGlzcGxheSUyMGltcG9ydCUyMEF1ZGlvJTBBJTBBc2FtcGxpbmdfcmF0ZSUyMCUzRCUyMG1vZGVsLmdlbmVyYXRpb25fY29uZmlnLnNhbXBsZV9yYXRlJTBBQXVkaW8oc3BlZWNoX291dHB1dCU1QjAlNUQlMkMlMjByYXRlJTNEc2FtcGxpbmdfcmF0ZSk=",highlighted:`<span class="hljs-keyword">from</span> IPython.display <span class="hljs-keyword">import</span> Audio

sampling_rate = model.generation_config.sample_rate
Audio(speech_output[<span class="hljs-number">0</span>], rate=sampling_rate)`,wrap:!1}}),Kt=new h({props:{code:"QXVkaW8oc3BlZWNoX291dHB1dCU1QjElNUQlMkMlMjByYXRlJTNEc2FtcGxpbmdfcmF0ZSk=",highlighted:'Audio(speech_output[<span class="hljs-number">1</span>], rate=sampling_rate)',wrap:!1}}),te=new h({props:{code:"QXVkaW8oc3BlZWNoX291dHB1dCU1QjIlNUQlMkMlMjByYXRlJTNEc2FtcGxpbmdfcmF0ZSk=",highlighted:'Audio(speech_output[<span class="hljs-number">2</span>], rate=sampling_rate)',wrap:!1}}),X=new de({props:{$$slots:{default:[Xn]},$$scope:{ctx:U}}}),ee=new as({props:{title:"Massive Multilingual Speech (MMS)",local:"massive-multilingual-speech-mms",headingTag:"h2"}}),z=new de({props:{warning:!0,$$slots:{default:[zn]},$$scope:{ctx:U}}}),ie=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFZpdHNNb2RlbCUyQyUyMFZpdHNUb2tlbml6ZXIlMEElMEFtb2RlbCUyMCUzRCUyMFZpdHNNb2RlbC5mcm9tX3ByZXRyYWluZWQoJTIyZmFjZWJvb2slMkZtbXMtdHRzLWRldSUyMiklMEF0b2tlbml6ZXIlMjAlM0QlMjBWaXRzVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJmYWNlYm9vayUyRm1tcy10dHMtZGV1JTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> VitsModel, VitsTokenizer

model = VitsModel.from_pretrained(<span class="hljs-string">&quot;facebook/mms-tts-deu&quot;</span>)
tokenizer = VitsTokenizer.from_pretrained(<span class="hljs-string">&quot;facebook/mms-tts-deu&quot;</span>)`,wrap:!1}}),oe=new h({props:{code:"dGV4dF9leGFtcGxlJTIwJTNEJTIwKCUwQSUyMCUyMCUyMCUyMCUyMkljaCUyMGJpbiUyMFNjaG5hcHBpJTIwZGFzJTIwa2xlaW5lJTIwS3Jva29kaWwlMkMlMjBrb21tJTIwYXVzJTIwJUMzJTg0Z3lwdGVuJTIwZGFzJTIwbGllZ3QlMjBkaXJla3QlMjBhbSUyME5pbC4lMjIlMEEp",highlighted:`text_example = (
    <span class="hljs-string">&quot;Ich bin Schnappi das kleine Krokodil, komm aus Ägypten das liegt direkt am Nil.&quot;</span>
)`,wrap:!1}}),fe=new h({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFpbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIodGV4dF9leGFtcGxlJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJwdCUyMiklMEFpbnB1dF9pZHMlMjAlM0QlMjBpbnB1dHMlNUIlMjJpbnB1dF9pZHMlMjIlNUQlMEElMEElMEF3aXRoJTIwdG9yY2gubm9fZ3JhZCgpJTNBJTBBJTIwJTIwJTIwJTIwb3V0cHV0cyUyMCUzRCUyMG1vZGVsKGlucHV0X2lkcyklMEElMEFzcGVlY2glMjAlM0QlMjBvdXRwdXRzLmF1ZGlvJTVCMCU1RA==",highlighted:`<span class="hljs-keyword">import</span> torch

inputs = tokenizer(text_example, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)
input_ids = inputs[<span class="hljs-string">&quot;input_ids&quot;</span>]


<span class="hljs-keyword">with</span> torch.no_grad():
    outputs = model(input_ids)

speech = outputs.audio[<span class="hljs-number">0</span>]`,wrap:!1}}),re=new h({props:{code:"ZnJvbSUyMElQeXRob24uZGlzcGxheSUyMGltcG9ydCUyMEF1ZGlvJTBBJTBBQXVkaW8oc3BlZWNoJTJDJTIwcmF0ZSUzRDE2MDAwKQ==",highlighted:`<span class="hljs-keyword">from</span> IPython.display <span class="hljs-keyword">import</span> Audio

Audio(speech, rate=<span class="hljs-number">16000</span>)`,wrap:!1}}),ye=new En({props:{source:"https://github.com/huggingface/audio-transformers-course/blob/main/chapters/ru/chapter6/pre-trained_models.mdx"}}),{c(){o=i("meta"),v=n(),f=i("p"),u=n(),M(b.$$.fragment),x=n(),M(w.$$.fragment),j=n(),d=i("p"),d.textContent=J,L=n(),M($.$$.fragment),V=n(),F=i("p"),F.innerHTML=ms,ve=n(),P=i("p"),P.textContent=os,we=n(),Y=i("p"),Y.innerHTML=us,he=n(),q=i("p"),q.textContent=fs,be=n(),k=i("div"),k.innerHTML=Ms,Je=n(),A=i("p"),A.textContent=rs,xe=n(),D=i("p"),D.textContent=cs,Ue=n(),K=i("p"),K.textContent=Cs,Ve=n(),M(Z.$$.fragment),_e=n(),O=i("p"),O.textContent=ys,je=n(),tt=i("ul"),tt.innerHTML=Ts,ke=n(),et=i("p"),et.textContent=ds,Ze=n(),I=i("div"),I.innerHTML=$s,Ie=n(),lt=i("p"),lt.innerHTML=vs,Se=n(),st=i("p"),st.textContent=ws,He=n(),nt=i("p"),nt.textContent=hs,Ge=n(),M(pt.$$.fragment),Be=n(),it=i("p"),it.textContent=bs,ge=n(),M(at.$$.fragment),Ee=n(),mt=i("p"),mt.textContent=Js,We=n(),M(S.$$.fragment),Re=n(),ot=i("p"),ot.innerHTML=xs,Ne=n(),M(ut.$$.fragment),Xe=n(),ft=i("p"),ft.textContent=Us,ze=n(),Mt=i("p"),Mt.textContent=Vs,Qe=n(),M(rt.$$.fragment),Le=n(),ct=i("p"),ct.textContent=_s,Fe=n(),Ct=i("p"),Ct.textContent=js,Pe=n(),M(H.$$.fragment),Ye=n(),yt=i("p"),yt.textContent=ks,qe=n(),M(Tt.$$.fragment),Ae=n(),dt=i("p"),dt.textContent=Zs,De=n(),M($t.$$.fragment),Ke=n(),vt=i("p"),vt.textContent=Is,Oe=n(),M(wt.$$.fragment),tl=n(),ht=i("p"),ht.textContent=Ss,el=n(),bt=i("p"),bt.textContent=Hs,ll=n(),_=i("iframe"),_.innerHTML=Gs,sl=n(),M(Jt.$$.fragment),nl=n(),xt=i("p"),xt.innerHTML=gs,pl=n(),Ut=i("p"),Ut.innerHTML=Es,il=n(),Vt=i("p"),Vt.innerHTML=Ws,al=n(),_t=i("p"),_t.textContent=Rs,ml=n(),jt=i("ul"),jt.innerHTML=Ns,ol=n(),kt=i("p"),kt.textContent=Xs,ul=n(),Zt=i("p"),Zt.textContent=zs,fl=n(),It=i("p"),It.textContent=Qs,Ml=n(),St=i("p"),St.textContent=Ls,rl=n(),Ht=i("ol"),Ht.innerHTML=Fs,cl=n(),M(Gt.$$.fragment),Cl=n(),Bt=i("p"),Bt.innerHTML=Ps,yl=n(),M(gt.$$.fragment),Tl=n(),G=i("audio"),G.innerHTML=Ys,dl=n(),Et=i("p"),Et.innerHTML=qs,$l=n(),M(Wt.$$.fragment),vl=n(),B=i("audio"),B.innerHTML=As,wl=n(),Rt=i("p"),Rt.innerHTML=Ds,hl=n(),M(Nt.$$.fragment),bl=n(),g=i("audio"),g.innerHTML=Ks,Jl=n(),Xt=i("p"),Xt.textContent=Os,xl=n(),M(zt.$$.fragment),Ul=n(),E=i("audio"),E.innerHTML=tn,Vl=n(),Qt=i("p"),Qt.textContent=en,_l=n(),Lt=i("p"),Lt.textContent=ln,jl=n(),Ft=i("p"),Ft.textContent=sn,kl=n(),M(Pt.$$.fragment),Zl=n(),Yt=i("p"),Yt.textContent=nn,Il=n(),qt=i("p"),qt.textContent=pn,Sl=n(),M(At.$$.fragment),Hl=n(),W=i("audio"),W.innerHTML=an,Gl=n(),Dt=i("p"),Dt.textContent=mn,Bl=n(),M(Kt.$$.fragment),gl=n(),R=i("audio"),R.innerHTML=on,El=n(),Ot=i("p"),Ot.textContent=un,Wl=n(),M(te.$$.fragment),Rl=n(),N=i("audio"),N.innerHTML=fn,Nl=n(),M(X.$$.fragment),Xl=n(),M(ee.$$.fragment),zl=n(),le=i("p"),le.textContent=Mn,Ql=n(),se=i("p"),se.innerHTML=rn,Ll=n(),ne=i("p"),ne.textContent=cn,Fl=n(),M(z.$$.fragment),Pl=n(),pe=i("p"),pe.textContent=Cn,Yl=n(),M(ie.$$.fragment),ql=n(),ae=i("p"),ae.innerHTML=yn,Al=n(),me=i("p"),me.textContent=Tn,Dl=n(),M(oe.$$.fragment),Kl=n(),ue=i("p"),ue.textContent=dn,Ol=n(),M(fe.$$.fragment),ts=n(),Me=i("p"),Me.textContent=$n,es=n(),M(re.$$.fragment),ls=n(),ce=i("p"),ce.innerHTML=vn,ss=n(),Ce=i("p"),Ce.textContent=wn,ns=n(),M(ye.$$.fragment),ps=n(),Te=i("p"),this.h()},l(t){const e=Sn("svelte-u9bgzb",document.head);o=a(e,"META",{name:!0,content:!0}),e.forEach(l),v=p(t),f=a(t,"P",{}),Vn(f).forEach(l),u=p(t),r(b.$$.fragment,t),x=p(t),r(w.$$.fragment,t),j=p(t),d=a(t,"P",{"data-svelte-h":!0}),m(d)!=="svelte-1g5vjst"&&(d.textContent=J),L=p(t),r($.$$.fragment,t),V=p(t),F=a(t,"P",{"data-svelte-h":!0}),m(F)!=="svelte-11sfcic"&&(F.innerHTML=ms),ve=p(t),P=a(t,"P",{"data-svelte-h":!0}),m(P)!=="svelte-1k7166z"&&(P.textContent=os),we=p(t),Y=a(t,"P",{"data-svelte-h":!0}),m(Y)!=="svelte-1ah6hmb"&&(Y.innerHTML=us),he=p(t),q=a(t,"P",{"data-svelte-h":!0}),m(q)!=="svelte-mdwwnw"&&(q.textContent=fs),be=p(t),k=a(t,"DIV",{class:!0,"data-svelte-h":!0}),m(k)!=="svelte-1j5439p"&&(k.innerHTML=Ms),Je=p(t),A=a(t,"P",{"data-svelte-h":!0}),m(A)!=="svelte-15oloyl"&&(A.textContent=rs),xe=p(t),D=a(t,"P",{"data-svelte-h":!0}),m(D)!=="svelte-1qt7hks"&&(D.textContent=cs),Ue=p(t),K=a(t,"P",{"data-svelte-h":!0}),m(K)!=="svelte-1qxljmn"&&(K.textContent=Cs),Ve=p(t),r(Z.$$.fragment,t),_e=p(t),O=a(t,"P",{"data-svelte-h":!0}),m(O)!=="svelte-4ue9y1"&&(O.textContent=ys),je=p(t),tt=a(t,"UL",{"data-svelte-h":!0}),m(tt)!=="svelte-1d1siu0"&&(tt.innerHTML=Ts),ke=p(t),et=a(t,"P",{"data-svelte-h":!0}),m(et)!=="svelte-ba2872"&&(et.textContent=ds),Ze=p(t),I=a(t,"DIV",{class:!0,"data-svelte-h":!0}),m(I)!=="svelte-sze2fn"&&(I.innerHTML=$s),Ie=p(t),lt=a(t,"P",{"data-svelte-h":!0}),m(lt)!=="svelte-1pbsjvz"&&(lt.innerHTML=vs),Se=p(t),st=a(t,"P",{"data-svelte-h":!0}),m(st)!=="svelte-1uujmz1"&&(st.textContent=ws),He=p(t),nt=a(t,"P",{"data-svelte-h":!0}),m(nt)!=="svelte-191d2te"&&(nt.textContent=hs),Ge=p(t),r(pt.$$.fragment,t),Be=p(t),it=a(t,"P",{"data-svelte-h":!0}),m(it)!=="svelte-1c59t7j"&&(it.textContent=bs),ge=p(t),r(at.$$.fragment,t),Ee=p(t),mt=a(t,"P",{"data-svelte-h":!0}),m(mt)!=="svelte-8g4fwa"&&(mt.textContent=Js),We=p(t),r(S.$$.fragment,t),Re=p(t),ot=a(t,"P",{"data-svelte-h":!0}),m(ot)!=="svelte-rr8dvl"&&(ot.innerHTML=xs),Ne=p(t),r(ut.$$.fragment,t),Xe=p(t),ft=a(t,"P",{"data-svelte-h":!0}),m(ft)!=="svelte-om75d2"&&(ft.textContent=Us),ze=p(t),Mt=a(t,"P",{"data-svelte-h":!0}),m(Mt)!=="svelte-jst9y0"&&(Mt.textContent=Vs),Qe=p(t),r(rt.$$.fragment,t),Le=p(t),ct=a(t,"P",{"data-svelte-h":!0}),m(ct)!=="svelte-jvllb4"&&(ct.textContent=_s),Fe=p(t),Ct=a(t,"P",{"data-svelte-h":!0}),m(Ct)!=="svelte-1nv84fw"&&(Ct.textContent=js),Pe=p(t),r(H.$$.fragment,t),Ye=p(t),yt=a(t,"P",{"data-svelte-h":!0}),m(yt)!=="svelte-1mmpfkb"&&(yt.textContent=ks),qe=p(t),r(Tt.$$.fragment,t),Ae=p(t),dt=a(t,"P",{"data-svelte-h":!0}),m(dt)!=="svelte-coxdjd"&&(dt.textContent=Zs),De=p(t),r($t.$$.fragment,t),Ke=p(t),vt=a(t,"P",{"data-svelte-h":!0}),m(vt)!=="svelte-1ccbqtc"&&(vt.textContent=Is),Oe=p(t),r(wt.$$.fragment,t),tl=p(t),ht=a(t,"P",{"data-svelte-h":!0}),m(ht)!=="svelte-s43z0q"&&(ht.textContent=Ss),el=p(t),bt=a(t,"P",{"data-svelte-h":!0}),m(bt)!=="svelte-1osag5i"&&(bt.textContent=Hs),ll=p(t),_=a(t,"IFRAME",{src:!0,frameborder:!0,width:!0,height:!0,"data-svelte-h":!0}),m(_)!=="svelte-k7mwvh"&&(_.innerHTML=Gs),sl=p(t),r(Jt.$$.fragment,t),nl=p(t),xt=a(t,"P",{"data-svelte-h":!0}),m(xt)!=="svelte-1jox7be"&&(xt.innerHTML=gs),pl=p(t),Ut=a(t,"P",{"data-svelte-h":!0}),m(Ut)!=="svelte-sia2gt"&&(Ut.innerHTML=Es),il=p(t),Vt=a(t,"P",{"data-svelte-h":!0}),m(Vt)!=="svelte-zaj8ee"&&(Vt.innerHTML=Ws),al=p(t),_t=a(t,"P",{"data-svelte-h":!0}),m(_t)!=="svelte-i0qqxr"&&(_t.textContent=Rs),ml=p(t),jt=a(t,"UL",{"data-svelte-h":!0}),m(jt)!=="svelte-bx76x4"&&(jt.innerHTML=Ns),ol=p(t),kt=a(t,"P",{"data-svelte-h":!0}),m(kt)!=="svelte-f6lgh6"&&(kt.textContent=Xs),ul=p(t),Zt=a(t,"P",{"data-svelte-h":!0}),m(Zt)!=="svelte-omxt4b"&&(Zt.textContent=zs),fl=p(t),It=a(t,"P",{"data-svelte-h":!0}),m(It)!=="svelte-11b4s9h"&&(It.textContent=Qs),Ml=p(t),St=a(t,"P",{"data-svelte-h":!0}),m(St)!=="svelte-yf9sg7"&&(St.textContent=Ls),rl=p(t),Ht=a(t,"OL",{"data-svelte-h":!0}),m(Ht)!=="svelte-19baphd"&&(Ht.innerHTML=Fs),cl=p(t),r(Gt.$$.fragment,t),Cl=p(t),Bt=a(t,"P",{"data-svelte-h":!0}),m(Bt)!=="svelte-1l3kk43"&&(Bt.innerHTML=Ps),yl=p(t),r(gt.$$.fragment,t),Tl=p(t),G=a(t,"AUDIO",{"data-svelte-h":!0}),m(G)!=="svelte-1dcfkqn"&&(G.innerHTML=Ys),dl=p(t),Et=a(t,"P",{"data-svelte-h":!0}),m(Et)!=="svelte-143g0j8"&&(Et.innerHTML=qs),$l=p(t),r(Wt.$$.fragment,t),vl=p(t),B=a(t,"AUDIO",{"data-svelte-h":!0}),m(B)!=="svelte-1mf2amh"&&(B.innerHTML=As),wl=p(t),Rt=a(t,"P",{"data-svelte-h":!0}),m(Rt)!=="svelte-1oy15ug"&&(Rt.innerHTML=Ds),hl=p(t),r(Nt.$$.fragment,t),bl=p(t),g=a(t,"AUDIO",{"data-svelte-h":!0}),m(g)!=="svelte-18uewve"&&(g.innerHTML=Ks),Jl=p(t),Xt=a(t,"P",{"data-svelte-h":!0}),m(Xt)!=="svelte-1lzic7c"&&(Xt.textContent=Os),xl=p(t),r(zt.$$.fragment,t),Ul=p(t),E=a(t,"AUDIO",{"data-svelte-h":!0}),m(E)!=="svelte-xst92l"&&(E.innerHTML=tn),Vl=p(t),Qt=a(t,"P",{"data-svelte-h":!0}),m(Qt)!=="svelte-8fdeag"&&(Qt.textContent=en),_l=p(t),Lt=a(t,"P",{"data-svelte-h":!0}),m(Lt)!=="svelte-1915ryj"&&(Lt.textContent=ln),jl=p(t),Ft=a(t,"P",{"data-svelte-h":!0}),m(Ft)!=="svelte-ceom5s"&&(Ft.textContent=sn),kl=p(t),r(Pt.$$.fragment,t),Zl=p(t),Yt=a(t,"P",{"data-svelte-h":!0}),m(Yt)!=="svelte-eywaab"&&(Yt.textContent=nn),Il=p(t),qt=a(t,"P",{"data-svelte-h":!0}),m(qt)!=="svelte-1c5c4uo"&&(qt.textContent=pn),Sl=p(t),r(At.$$.fragment,t),Hl=p(t),W=a(t,"AUDIO",{"data-svelte-h":!0}),m(W)!=="svelte-v3niu0"&&(W.innerHTML=an),Gl=p(t),Dt=a(t,"P",{"data-svelte-h":!0}),m(Dt)!=="svelte-76t6u7"&&(Dt.textContent=mn),Bl=p(t),r(Kt.$$.fragment,t),gl=p(t),R=a(t,"AUDIO",{"data-svelte-h":!0}),m(R)!=="svelte-1x1ywin"&&(R.innerHTML=on),El=p(t),Ot=a(t,"P",{"data-svelte-h":!0}),m(Ot)!=="svelte-gxucqo"&&(Ot.textContent=un),Wl=p(t),r(te.$$.fragment,t),Rl=p(t),N=a(t,"AUDIO",{"data-svelte-h":!0}),m(N)!=="svelte-69zylm"&&(N.innerHTML=fn),Nl=p(t),r(X.$$.fragment,t),Xl=p(t),r(ee.$$.fragment,t),zl=p(t),le=a(t,"P",{"data-svelte-h":!0}),m(le)!=="svelte-6qa0cf"&&(le.textContent=Mn),Ql=p(t),se=a(t,"P",{"data-svelte-h":!0}),m(se)!=="svelte-o8x7wu"&&(se.innerHTML=rn),Ll=p(t),ne=a(t,"P",{"data-svelte-h":!0}),m(ne)!=="svelte-1xi4ie0"&&(ne.textContent=cn),Fl=p(t),r(z.$$.fragment,t),Pl=p(t),pe=a(t,"P",{"data-svelte-h":!0}),m(pe)!=="svelte-9mj118"&&(pe.textContent=Cn),Yl=p(t),r(ie.$$.fragment,t),ql=p(t),ae=a(t,"P",{"data-svelte-h":!0}),m(ae)!=="svelte-182n4pq"&&(ae.innerHTML=yn),Al=p(t),me=a(t,"P",{"data-svelte-h":!0}),m(me)!=="svelte-zb5z0m"&&(me.textContent=Tn),Dl=p(t),r(oe.$$.fragment,t),Kl=p(t),ue=a(t,"P",{"data-svelte-h":!0}),m(ue)!=="svelte-q3nrw4"&&(ue.textContent=dn),Ol=p(t),r(fe.$$.fragment,t),ts=p(t),Me=a(t,"P",{"data-svelte-h":!0}),m(Me)!=="svelte-bng695"&&(Me.textContent=$n),es=p(t),r(re.$$.fragment,t),ls=p(t),ce=a(t,"P",{"data-svelte-h":!0}),m(ce)!=="svelte-12bex8v"&&(ce.innerHTML=vn),ss=p(t),Ce=a(t,"P",{"data-svelte-h":!0}),m(Ce)!=="svelte-845ivz"&&(Ce.textContent=wn),ns=p(t),r(ye.$$.fragment,t),ps=p(t),Te=a(t,"P",{}),Vn(Te).forEach(l),this.h()},h(){Q(o,"name","hf:doc:metadata"),Q(o,"content",Ln),Q(k,"class","flex justify-center"),Q(I,"class","flex justify-center"),jn(_.src,Bs="https://matthijs-speecht5-tts-demo.hf.space")||Q(_,"src",Bs),Q(_,"frameborder","0"),Q(_,"width","850"),Q(_,"height","450"),G.controls="",B.controls="",g.controls="",E.controls="",W.controls="",R.controls="",N.controls=""},m(t,e){Hn(document.head,o),s(t,v,e),s(t,f,e),s(t,u,e),c(b,t,e),s(t,x,e),c(w,t,e),s(t,j,e),s(t,d,e),s(t,L,e),c($,t,e),s(t,V,e),s(t,F,e),s(t,ve,e),s(t,P,e),s(t,we,e),s(t,Y,e),s(t,he,e),s(t,q,e),s(t,be,e),s(t,k,e),s(t,Je,e),s(t,A,e),s(t,xe,e),s(t,D,e),s(t,Ue,e),s(t,K,e),s(t,Ve,e),c(Z,t,e),s(t,_e,e),s(t,O,e),s(t,je,e),s(t,tt,e),s(t,ke,e),s(t,et,e),s(t,Ze,e),s(t,I,e),s(t,Ie,e),s(t,lt,e),s(t,Se,e),s(t,st,e),s(t,He,e),s(t,nt,e),s(t,Ge,e),c(pt,t,e),s(t,Be,e),s(t,it,e),s(t,ge,e),c(at,t,e),s(t,Ee,e),s(t,mt,e),s(t,We,e),c(S,t,e),s(t,Re,e),s(t,ot,e),s(t,Ne,e),c(ut,t,e),s(t,Xe,e),s(t,ft,e),s(t,ze,e),s(t,Mt,e),s(t,Qe,e),c(rt,t,e),s(t,Le,e),s(t,ct,e),s(t,Fe,e),s(t,Ct,e),s(t,Pe,e),c(H,t,e),s(t,Ye,e),s(t,yt,e),s(t,qe,e),c(Tt,t,e),s(t,Ae,e),s(t,dt,e),s(t,De,e),c($t,t,e),s(t,Ke,e),s(t,vt,e),s(t,Oe,e),c(wt,t,e),s(t,tl,e),s(t,ht,e),s(t,el,e),s(t,bt,e),s(t,ll,e),s(t,_,e),s(t,sl,e),c(Jt,t,e),s(t,nl,e),s(t,xt,e),s(t,pl,e),s(t,Ut,e),s(t,il,e),s(t,Vt,e),s(t,al,e),s(t,_t,e),s(t,ml,e),s(t,jt,e),s(t,ol,e),s(t,kt,e),s(t,ul,e),s(t,Zt,e),s(t,fl,e),s(t,It,e),s(t,Ml,e),s(t,St,e),s(t,rl,e),s(t,Ht,e),s(t,cl,e),c(Gt,t,e),s(t,Cl,e),s(t,Bt,e),s(t,yl,e),c(gt,t,e),s(t,Tl,e),s(t,G,e),s(t,dl,e),s(t,Et,e),s(t,$l,e),c(Wt,t,e),s(t,vl,e),s(t,B,e),s(t,wl,e),s(t,Rt,e),s(t,hl,e),c(Nt,t,e),s(t,bl,e),s(t,g,e),s(t,Jl,e),s(t,Xt,e),s(t,xl,e),c(zt,t,e),s(t,Ul,e),s(t,E,e),s(t,Vl,e),s(t,Qt,e),s(t,_l,e),s(t,Lt,e),s(t,jl,e),s(t,Ft,e),s(t,kl,e),c(Pt,t,e),s(t,Zl,e),s(t,Yt,e),s(t,Il,e),s(t,qt,e),s(t,Sl,e),c(At,t,e),s(t,Hl,e),s(t,W,e),s(t,Gl,e),s(t,Dt,e),s(t,Bl,e),c(Kt,t,e),s(t,gl,e),s(t,R,e),s(t,El,e),s(t,Ot,e),s(t,Wl,e),c(te,t,e),s(t,Rl,e),s(t,N,e),s(t,Nl,e),c(X,t,e),s(t,Xl,e),c(ee,t,e),s(t,zl,e),s(t,le,e),s(t,Ql,e),s(t,se,e),s(t,Ll,e),s(t,ne,e),s(t,Fl,e),c(z,t,e),s(t,Pl,e),s(t,pe,e),s(t,Yl,e),c(ie,t,e),s(t,ql,e),s(t,ae,e),s(t,Al,e),s(t,me,e),s(t,Dl,e),c(oe,t,e),s(t,Kl,e),s(t,ue,e),s(t,Ol,e),c(fe,t,e),s(t,ts,e),s(t,Me,e),s(t,es,e),c(re,t,e),s(t,ls,e),s(t,ce,e),s(t,ss,e),s(t,Ce,e),s(t,ns,e),c(ye,t,e),s(t,ps,e),s(t,Te,e),is=!0},p(t,[e]){const hn={};e&2&&(hn.$$scope={dirty:e,ctx:t}),Z.$set(hn);const bn={};e&2&&(bn.$$scope={dirty:e,ctx:t}),S.$set(bn);const Jn={};e&2&&(Jn.$$scope={dirty:e,ctx:t}),H.$set(Jn);const xn={};e&2&&(xn.$$scope={dirty:e,ctx:t}),X.$set(xn);const Un={};e&2&&(Un.$$scope={dirty:e,ctx:t}),z.$set(Un)},i(t){is||(C(b.$$.fragment,t),C(w.$$.fragment,t),C($.$$.fragment,t),C(Z.$$.fragment,t),C(pt.$$.fragment,t),C(at.$$.fragment,t),C(S.$$.fragment,t),C(ut.$$.fragment,t),C(rt.$$.fragment,t),C(H.$$.fragment,t),C(Tt.$$.fragment,t),C($t.$$.fragment,t),C(wt.$$.fragment,t),C(Jt.$$.fragment,t),C(Gt.$$.fragment,t),C(gt.$$.fragment,t),C(Wt.$$.fragment,t),C(Nt.$$.fragment,t),C(zt.$$.fragment,t),C(Pt.$$.fragment,t),C(At.$$.fragment,t),C(Kt.$$.fragment,t),C(te.$$.fragment,t),C(X.$$.fragment,t),C(ee.$$.fragment,t),C(z.$$.fragment,t),C(ie.$$.fragment,t),C(oe.$$.fragment,t),C(fe.$$.fragment,t),C(re.$$.fragment,t),C(ye.$$.fragment,t),is=!0)},o(t){y(b.$$.fragment,t),y(w.$$.fragment,t),y($.$$.fragment,t),y(Z.$$.fragment,t),y(pt.$$.fragment,t),y(at.$$.fragment,t),y(S.$$.fragment,t),y(ut.$$.fragment,t),y(rt.$$.fragment,t),y(H.$$.fragment,t),y(Tt.$$.fragment,t),y($t.$$.fragment,t),y(wt.$$.fragment,t),y(Jt.$$.fragment,t),y(Gt.$$.fragment,t),y(gt.$$.fragment,t),y(Wt.$$.fragment,t),y(Nt.$$.fragment,t),y(zt.$$.fragment,t),y(Pt.$$.fragment,t),y(At.$$.fragment,t),y(Kt.$$.fragment,t),y(te.$$.fragment,t),y(X.$$.fragment,t),y(ee.$$.fragment,t),y(z.$$.fragment,t),y(ie.$$.fragment,t),y(oe.$$.fragment,t),y(fe.$$.fragment,t),y(re.$$.fragment,t),y(ye.$$.fragment,t),is=!1},d(t){t&&(l(v),l(f),l(u),l(x),l(j),l(d),l(L),l(V),l(F),l(ve),l(P),l(we),l(Y),l(he),l(q),l(be),l(k),l(Je),l(A),l(xe),l(D),l(Ue),l(K),l(Ve),l(_e),l(O),l(je),l(tt),l(ke),l(et),l(Ze),l(I),l(Ie),l(lt),l(Se),l(st),l(He),l(nt),l(Ge),l(Be),l(it),l(ge),l(Ee),l(mt),l(We),l(Re),l(ot),l(Ne),l(Xe),l(ft),l(ze),l(Mt),l(Qe),l(Le),l(ct),l(Fe),l(Ct),l(Pe),l(Ye),l(yt),l(qe),l(Ae),l(dt),l(De),l(Ke),l(vt),l(Oe),l(tl),l(ht),l(el),l(bt),l(ll),l(_),l(sl),l(nl),l(xt),l(pl),l(Ut),l(il),l(Vt),l(al),l(_t),l(ml),l(jt),l(ol),l(kt),l(ul),l(Zt),l(fl),l(It),l(Ml),l(St),l(rl),l(Ht),l(cl),l(Cl),l(Bt),l(yl),l(Tl),l(G),l(dl),l(Et),l($l),l(vl),l(B),l(wl),l(Rt),l(hl),l(bl),l(g),l(Jl),l(Xt),l(xl),l(Ul),l(E),l(Vl),l(Qt),l(_l),l(Lt),l(jl),l(Ft),l(kl),l(Zl),l(Yt),l(Il),l(qt),l(Sl),l(Hl),l(W),l(Gl),l(Dt),l(Bl),l(gl),l(R),l(El),l(Ot),l(Wl),l(Rl),l(N),l(Nl),l(Xl),l(zl),l(le),l(Ql),l(se),l(Ll),l(ne),l(Fl),l(Pl),l(pe),l(Yl),l(ql),l(ae),l(Al),l(me),l(Dl),l(Kl),l(ue),l(Ol),l(ts),l(Me),l(es),l(ls),l(ce),l(ss),l(Ce),l(ns),l(ps),l(Te)),l(o),T(b,t),T(w,t),T($,t),T(Z,t),T(pt,t),T(at,t),T(S,t),T(ut,t),T(rt,t),T(H,t),T(Tt,t),T($t,t),T(wt,t),T(Jt,t),T(Gt,t),T(gt,t),T(Wt,t),T(Nt,t),T(zt,t),T(Pt,t),T(At,t),T(Kt,t),T(te,t),T(X,t),T(ee,t),T(z,t),T(ie,t),T(oe,t),T(fe,t),T(re,t),T(ye,t)}}}const Ln='{"title":"Предварительно обученные модели text-to-speech","local":"предварительно-обученные-модели-text-to-speech","sections":[{"title":"SpeechT5","local":"speecht5","sections":[],"depth":2},{"title":"Bark","local":"bark","sections":[],"depth":2},{"title":"Massive Multilingual Speech (MMS)","local":"massive-multilingual-speech-mms","sections":[],"depth":2}],"depth":1}';function Fn(U){return kn(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Kn extends Zn{constructor(o){super(),In(this,o,Fn,Qn,_n,{})}}export{Kn as component};
