import{s as wn,f as hn,o as bn,n as Je}from"../chunks/scheduler.f7e1785c.js";import{S as xn,i as kn,g as i,s as n,r as c,A as _n,h as a,f as l,c as p,j as $n,u as M,x as o,k as X,y as jn,a as s,v as J,d as T,t as y,w as U}from"../chunks/index.9f8f0838.js";import{T as Me}from"../chunks/Tip.4575d9cf.js";import{C as v}from"../chunks/CodeBlock.b3510e34.js";import{H as ss,E as Vn}from"../chunks/EditOnGithub.5a9bb8c5.js";function Zn(b){let m,$=`尽管模型开始时使用的是同一个预训练模型的相同权重集，但微调后的最终版本会大不相同。所以，您不能仅仅通过更换预处理和后处理网络，
就将一个微调后的 ASR 模型转换为一个可用的 TTS 模型。SpeechT5 很灵活，但还没有灵活到这个程度 QwQ`;return{c(){m=i("p"),m.textContent=$},l(u){m=a(u,"P",{"data-svelte-h":!0}),o(m)!=="svelte-812jep"&&(m.textContent=$)},m(u,r){s(u,m,r)},p:Je,d(u){u&&l(m)}}}function In(b){let m,$=`说话人嵌入（Speaker embeddings）是一个固定大小的向量，不论音频的长度如何都能用一种紧凑的方式表示说话人的身份。这些向量捕获了关于说话人的音色、口音、
语调以及其他独特特征的关键信息，这些特征区分了不同的说话人。这样的嵌入有说话人验证（speaker verification）、说话人分离（speaker diarization）、
说话人识别（speaker identification）等多种应用。生成说话人嵌入时最常用的技术包括：`,u,r,h="<li>I-Vectors（身份向量）：I-Vectors 基于高斯混合模型（Gaussian mixture model，GMM）。它属于无监督学习，用一个特定说话人的 GMM 的统计数据得出一个低维度、固定大小的向量来代表说话人。</li> <li>X-Vectors：X-Vectors 利用了深度神经网络（DNN），通过整合时间维度的上下文来捕获帧级的说话人信息。</li>",d,C,k=`<a href="https://www.danielpovey.com/files/2018_icassp_xvectors.pdf" rel="nofollow">X-Vectors</a> 是 SOTA（state-of-the-art）的方法，在测试集上的表现优于 I-Vectors。
X-Vectors 是深度神经网络产生的：它被训练以区分不同说话人，并将长度不一的语音音频映射到固定维度的嵌入。您还可以加载提前计算好的 X-Vector 说话人嵌入，它封装好了某个特定说话人的说话特征。`;return{c(){m=i("p"),m.textContent=$,u=n(),r=i("ul"),r.innerHTML=h,d=n(),C=i("p"),C.innerHTML=k},l(f){m=a(f,"P",{"data-svelte-h":!0}),o(m)!=="svelte-1kalzqc"&&(m.textContent=$),u=p(f),r=a(f,"UL",{"data-svelte-h":!0}),o(r)!=="svelte-1ofv3xe"&&(r.innerHTML=h),d=p(f),C=a(f,"P",{"data-svelte-h":!0}),o(C)!=="svelte-102j3b3"&&(C.innerHTML=k)},m(f,w){s(f,m,w),s(f,u,w),s(f,r,w),s(f,d,w),s(f,C,w)},p:Je,d(f){f&&(l(m),l(u),l(r),l(d),l(C))}}}function Bn(b){let m,$='<a href="https://arxiv.org/pdf/2010.05646v2.pdf" rel="nofollow">HiFi-GAN</a> 是一种用于高保真语音合成的 SOTA 生成对抗网络（GAN）。它能够根据输入的频谱图生成高品质且逼真的音频波形。',u,r,h=`总的来说，HiFi-GAN 由一个生成器和两个鉴别器组成。生成器是一个全卷积神经网络，它以梅尔谱作为输入并学习产生原始音频波形。
鉴别器负责区分真实音频和生成音频。这两个鉴别器关注音频的不同方面。`,d,C,k=`HiFi-GAN 在大量高品质音频数据上进行训练。它采用所谓的<em>对抗训练</em>，其中生成器和鉴别器网络相互竞争。最初，生成器产生的音频质量较低，
鉴别器可以轻松地将其与真实音频区分开。随着训练的进行，生成器改进其输出，目标是欺骗鉴别器。反过来，鉴别器也学会更准确地区分真实和生成的音频。
这种对抗性反馈循环帮助两个网络随时间推移提升性能。最终，HiFi-GAN 学会生成高保真音频，精密地模仿训练数据的特征。`;return{c(){m=i("p"),m.innerHTML=$,u=n(),r=i("p"),r.textContent=h,d=n(),C=i("p"),C.innerHTML=k},l(f){m=a(f,"P",{"data-svelte-h":!0}),o(m)!=="svelte-6v4gz4"&&(m.innerHTML=$),u=p(f),r=a(f,"P",{"data-svelte-h":!0}),o(r)!=="svelte-6as7bq"&&(r.textContent=h),d=p(f),C=a(f,"P",{"data-svelte-h":!0}),o(C)!=="svelte-xwig44"&&(C.innerHTML=k)},m(f,w){s(f,m,w),s(f,u,w),s(f,r,w),s(f,d,w),s(f,C,w)},p:Je,d(f){f&&(l(m),l(u),l(r),l(d),l(C))}}}function Hn(b){let m,$='Bark 与其他 🤗 Transformers 模型一样，只需几行代码即可针对速度和内存影响进行优化。要了解具体操作方法，请单击 <a href="https://colab.research.google.com/github/ylacombe/notebooks/blob/main/Benchmark_Bark_HuggingFace.ipynb" rel="nofollow">此 colab 演示笔记本</a>。';return{c(){m=i("p"),m.innerHTML=$},l(u){m=a(u,"P",{"data-svelte-h":!0}),o(m)!=="svelte-agupcp"&&(m.innerHTML=$)},m(u,r){s(u,m,r)},p:Je,d(u){u&&l(m)}}}function gn(b){let m,$="MMS 模型最近才被添加到 🤗 Transformers 中，所以您需要从源代码安装该库：",u,r,h;return r=new v({props:{code:"cGlwJTIwaW5zdGFsbCUyMGdpdCUyQmh0dHBzJTNBJTJGJTJGZ2l0aHViLmNvbSUyRmh1Z2dpbmdmYWNlJTJGdHJhbnNmb3JtZXJzLmdpdA==",highlighted:"pip install git+https://github.com/huggingface/transformers.git",wrap:!1}}),{c(){m=i("p"),m.textContent=$,u=n(),c(r.$$.fragment)},l(d){m=a(d,"P",{"data-svelte-h":!0}),o(m)!=="svelte-rzfbj9"&&(m.textContent=$),u=p(d),M(r.$$.fragment,d)},m(d,C){s(d,m,C),s(d,u,C),J(r,d,C),h=!0},p:Je,i(d){h||(T(r.$$.fragment,d),h=!0)},o(d){y(r.$$.fragment,d),h=!1},d(d){d&&(l(m),l(u)),U(r,d)}}}function Sn(b){let m,$,u,r,h,d,C,k=`与 ASR（语音识别）和音频分类任务相比，语音合成的预训练模型检查点明显较少。在 🤗 Hub 上，您可以找到近 300 个适合的检查点。
在这些预训练模型中，我们将重点关注两种在 🤗 Transformers 库中开箱即用的架构——SpeechT5 和 Massive Multilingual Speech（MMS）。
在本节中，我们将探索如何在 Transformers 库中使用这些预训练模型进行 TTS（语音合成）。`,f,w,Te,Q,ns=`<a href="https://arxiv.org/abs/2110.07205" rel="nofollow">SpeechT5</a> 是由 Microsoft 的 Junyi Ao 等人发布的模型，它能够处理一系列语音任务。虽然本单元中我们关注的是文本转语音，
但这个模型还可以用于语音转文本的任务（语音识别或说话人识别），以及语音转语音的任务（例如语音增强或变声器）。这是模型设计和预训练的方式所决定的。`,ye,z,ps="SpeechT5 的核心是一个常规的 Transformer 编码器-解码器模型。就像任何其他 Transformer 一样，编码器-解码器网络使用隐藏表示来模拟序列到序列的转换。这个 Transformer 骨架对 SpeechT5 支持的所有任务都是相同的。",Ue,E,is=`除此之外，SpeechT5 还有六个模态特定（语音/文本）的预处理网络（<em>pre-nets</em>）和后处理网络（<em>post-nets</em>）。输入的语音或文本（取决于任务）通过相应的预处理网络被预处理，
以获得 Transformer 可以使用的隐藏表示。然后，Transformer 的输出被送进后处理网络，转化为目标模态的输出。`,de,L,as="以下是该模型的架构（图片来源于原始论文）：",Ce,_,os='<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/speecht5/architecture.jpg" alt="SpeechT5 architecture from the original paper"/>',ve,P,ms="SpeechT5 首先使用大规模的未标注语音和文本数据进行预训练，以获得不同模态的统一表示。在预训练阶段，所有的预处理网络和后处理网络同时使用。",$e,q,us=`预训练之后，将整个编解码器骨架针对每个单独任务进行微调。在这个步骤中，只有与特定任务相关的预处理和后处理网络被采用。
例如，要使用 SpeechT5 进行语音合成，您需要选择文本编码器预处理网络来处理文本输入，以及语音解码器的预处理和后处理网络来处理语音输出。`,we,Y,rs="这样就可以获得多个针对不同语音任务微调的模型，它们都受益于最开始在未标注数据上预训练时学到的知识。",he,j,be,A,fs="让我们具体看看 SpeechT5 在 TTS（文本到语音）任务中使用的预/后处理网络是什么：",xe,D,cs="<li>文本编码器预处理网络（Text encoder pre-net）：一个文本嵌入层，将文本词元映射到编码器可以读入的隐藏表示。这与 NLP 模型（如 BERT）中的做法类似。</li> <li>语音解码器预处理网络（Speech decoder pre-net）：这个网络以对数梅尔谱（log mel spectrogram）为输入，并使用一连串的线性层来将频谱图压缩成隐藏表示。</li> <li>语音解码器后处理网络（Speech decoder post-net）：这个网络预测一个残差来添加到输出的频谱图中，用于优化模型输出的结果。</li>",ke,K,Ms="结合起来，这就是 SpeechT5 在语音合成中使用的架构：",_e,V,Js='<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/speecht5/tts.jpg" alt="SpeechT5 architecture for TTS"/>',je,O,Ts=`正如您所看到的，输出是一个对数梅尔谱，而不是最终的波形。如果您记得，我们在 <a href="../chapter3/introduction#spectrogram-output">第 3 单元</a> 简要讨论过这个话题。
生成语音的模型的输出常常是对数梅尔谱，还需要通过一个额外的神经网络，即声码器（vocoder），才能转换成波形。`,Ve,tt,ys="让我们看看具体应该怎么做。",Ze,et,Us="首先，让我们从 🤗 Hub 加载微调过的 TTS SpeechT5 模型，以及用于分词和特征提取的处理器对象：",Ie,lt,Be,st,ds="接下来，给输入的文本分词。",He,nt,ge,pt,Cs="SpeechT5 TTS 模型不仅限于生成一种音色的语音。相反，它能够使用所谓的“说话人嵌入”（speaker embeddings）来模仿各种特定说话人的声音特征。",Se,Z,Ge,it,vs='让我们从 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> 获得的，这里使用任何 X-Vector 嵌入都可以。',We,at,Ne,ot,$s="说话人嵌入是形状为 (1, 512) 的张量，我们选的这个说话人嵌入描述的是一个女声。",Re,mt,ws="此时，我们已经有足够的输入来生成对数梅尔谱作为输出，您可以这样做：",Fe,ut,Xe,rt,hs=`这会输出一个形状为 (140, 80) 的张量，包含对数梅尔谱。第一维是序列长度，可能每次运行代码它的取值都会不一样，
因为语音解码器预处理网络（pre-net）总是对输入序列用 dropout。这给生成的语音添加了一些随机变化。`,Qe,ft,bs=`如果我们想生成语音波形，我们还需要指定一个用于把频谱图转换为波形的声码器（vocoder）。理论上，您可以使用任何适用于 80-bin 梅尔谱的声码器。
🤗 Transformers 提供了一个基于 HiFi-GAN 的声码器，可以很方便地使用。其权重由 SpeechT5 的原作者友情提供。`,ze,I,Ee,ct,xs="加载声码器就像加载任何其他 🤗 Transformers 模型一样简单。",Le,Mt,Pe,Jt,ks="现在您需要做的就是在生成语音时将其作为参数传递，输出将自动转换为语音波形。",qe,Tt,Ye,yt,_s="让我们来听听输出的结果。SpeechT5 使用的采样率始终是 16 kHz。",Ae,Ut,De,dt,js="真不错！",Ke,Ct,Vs="请随意使用 SpeechT5 语音合成 demo 探索其他声音，尝试各种各样的输入。请注意，该预训练检查点仅支持英语：",Oe,x,Zs="",Is,tl,vt,el,$t,Bs='Bark 是 Suno AI 提出的基于 transformer 的语音合成模型，见 <a href="https://github.com/suno-ai/bark" rel="nofollow">suno-ai/bark</a>。',ll,wt,Hs='与 SpeechT5 不同，Bark 直接生成语音波形，无需在推理过程中使用单独的声码器——它已经集成了这一功能。这种功能是通过使用 <a href="https://huggingface.co/docs/transformers/main/en/model_doc/encodec" rel="nofollow"><code>Encodec</code></a> 实现的，它既是编解码器也是压缩工具。',sl,ht,gs=`借助 <code>Encodec</code>，您可以将音频压缩成轻量级格式以减少内存使用，然后再解压缩以恢复原始音频。这个压缩过程由 8 个 codebook 帮助完成，
每个 codebook 都由整数向量组成。可以将这些 codebook 视为音频的整数形式表示或嵌入，并且每个后续的 codebook 都能在前一个的基础上提高音频重建的质量。
由于 codebook 是整数向量，它们可以被 transformer 模型学习，而 transformer 在这项任务上非常高效。这正是 Bark 被训练去做的任务。`,nl,bt,Ss="更具体地说，Bark 由 4 个主要的模型组成：",pl,xt,Gs="<li><code>BarkSemanticModel</code>（也称为“文本”模型）：一个因果自回归的 transformer 模型，它接收分词后的文本作为输入，并预测表示文本含义的语义文本词元。</li> <li><code>BarkCoarseModel</code>（也称为“粗粒度声学”模型）：一个因果自回归的 transformer，它接收 <code>BarkSemanticModel</code> 模型的结果作为输入，预测 EnCodec 所需的前两个音频 codebook 。</li> <li><code>BarkFineModel</code>（“细粒度声学”模型），这次是一个非因果自编码 transformer，它基于之前生成的所有 codebook 嵌入，迭代地预测下一个 codebook 。</li> <li>在 <code>EncodecModel</code> 预测了所有 codebook 通道后，Bark 使用它来解码输出音频数组。</li>",il,kt,Ws="需要注意的是，前三个模块中的每一个都支持说话人嵌入作为条件参数，以根据预特定的预设调整输出的声音。",al,_t,Ns="Bark 是一个高度可控的语音合成模型，意味着您可以调整各种各样的设置，下面我们将见证这一功能。",ol,jt,Rs="在一切开始之前，我们需要加载模型及其处理器。",ml,Vt,Fs="处理器在这里有两方面的作用：",ul,Zt,Xs="<li>它用于对输入文本进行分词，即将其切割成模型可以理解的小片段。</li> <li>它存储说话人嵌入，即可以调节生成结果的声音预设。</li>",rl,It,fl,Bt,Qs='Bark 非常多功能，可以通过处理器加载一个 <a href="https://suno-ai.notion.site/8b8e8749ed514b0cbf3f699013548683?v=bc67cff786b04b50b3ceb756fd05f68c" rel="nofollow">说话人嵌入库</a> 中的说话人嵌入来调节它产生的声音。',cl,Ht,Ml,B,zs=`<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.`,Jl,gt,Es='它还可以生成随时可用的多语言语音，例如法语和中文。您可以在 <a href="https://huggingface.co/suno/bark" rel="nofollow">这里</a> 找到支持的语言列表。与下面讨论的 MMS 不同，它不需要指定所使用的语言，只需将输入文本调整为相应的语言即可。',Tl,St,yl,H,Ls=`<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.`,Ul,Gt,Ps="该模型还可以生成<strong>非语言交流</strong>，例如笑、叹息和哭泣。 您只需使用相应的提示修改输入文本，例如 <code>[clears throat]</code>、<code>[laughter]</code> 或 <code>...</code>。",dl,Wt,Cl,g,qs=`<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.`,vl,Nt,Ys="Bark 甚至可以产生音乐。您可以通过在单词周围添加 ♪ 音符 ♪ 来做到这一点。",$l,Rt,wl,S,As=`<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.`,hl,Ft,Ds="除了所有这些功能之外，Bark 还支持批处理，这意味着您可以同时处理多个文本条目，但代价是更密集的计算。在某些硬件（例如 GPU）上，批处理可以加快整体生成速度，这意味着一次性生成所有样本比逐个生成样本更快。",bl,Xt,Ks="让我们尝试生成一些示例：",xl,Qt,kl,zt,Os="让我们来一个一个听这些输出。",_l,Et,tn="第一个：",jl,Lt,Vl,G,en=`<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.`,Zl,Pt,ln="第二个：",Il,qt,Bl,W,sn=`<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.`,Hl,Yt,nn="第三个：",gl,At,Sl,N,pn=`<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.`,Gl,R,Wl,Dt,Nl,Kt,an="如果您需要一个非英语的预训练模型怎么办？Massive Multilingual Speech（MMS，大规模多语种语音）是另一个涵盖多种语音任务的模型，并且，它支持大量的语言。比方说，它可以合成超过 1,100 种语言的语音。",Rl,Ot,on='MMS 的语音合成是基于 <a href="https://arxiv.org/pdf/2106.06103.pdf" rel="nofollow">VITS Kim et al., 2021</a> 的，它是最先进的 TTS 方法之一。',Fl,te,mn=`VITS 是一个语音生成网络，可以将文本转换成语音波形。它的工作方式类似于条件变分自编码器（conditional variational auto-encoder），从输入文本估计音频特征。首先，生成用频谱图表示的声学特征。
然后，使用改编自 HiFi-GAN 的转置卷积层解码出波形。在推理过程中，文本编码被上采样并使用流模块（flow module）和 HiFi-GAN 解码器转换成波形。像 Bark 一样，这里不需要声码器（vocoder），因为已经直接生成波形了。`,Xl,F,Ql,ee,un="让我们试用一下 MMS，看看如何合成非英语的语音，例如德语。首先，我们将加载特定语言的检查点和分词器：",zl,le,El,se,rn="您可能会注意到，加载 MMS 模型需要使用 <code>VitsModel</code> 和 <code>VitsTokenizer</code>。这是因为如前所述，MMS 的 TTS 是基于 VITS 模型的。",Ll,ne,fn="让我们选择一首德语儿歌的前两句作为示例文本：",Pl,pe,ql,ie,cn="要生成波形输出，使用分词器预处理文本，并将其传递给模型：",Yl,ae,Al,oe,Mn="让我们来听听：",Dl,me,Kl,ue,Jn='Wunderbar！如果您想尝试其他语言的 MMS，可以 <a href="https://huggingface.co/models?filter=vits" rel="nofollow">在 🤗 Hub 上</a> 寻找其他合适的 <code>vits</code> 检查点。',Ol,re,Tn="现在，让我们看看如何自己微调一个 TTS 模型！",ts,fe,es,ce,ls;return h=new ss({props:{title:"语音合成的预训练模型",local:"语音合成的预训练模型",headingTag:"h1"}}),w=new ss({props:{title:"SpeechT5",local:"speecht5",headingTag:"h2"}}),j=new Me({props:{$$slots:{default:[Zn]},$$scope:{ctx:b}}}),lt=new v({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}}),nt=new v({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}}),Z=new Me({props:{$$slots:{default:[In]},$$scope:{ctx:b}}}),at=new v({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}}),ut=new v({props:{code:"c3BlY3Ryb2dyYW0lMjAlM0QlMjBtb2RlbC5nZW5lcmF0ZV9zcGVlY2goaW5wdXRzJTVCJTIyaW5wdXRfaWRzJTIyJTVEJTJDJTIwc3BlYWtlcl9lbWJlZGRpbmdzKQ==",highlighted:'spectrogram = model.generate_speech(inputs[<span class="hljs-string">&quot;input_ids&quot;</span>], speaker_embeddings)',wrap:!1}}),I=new Me({props:{$$slots:{default:[Bn]},$$scope:{ctx:b}}}),Mt=new v({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}}),Tt=new v({props:{code:"c3BlZWNoJTIwJTNEJTIwbW9kZWwuZ2VuZXJhdGVfc3BlZWNoKGlucHV0cyU1QiUyMmlucHV0X2lkcyUyMiU1RCUyQyUyMHNwZWFrZXJfZW1iZWRkaW5ncyUyQyUyMHZvY29kZXIlM0R2b2NvZGVyKQ==",highlighted:'speech = model.generate_speech(inputs[<span class="hljs-string">&quot;input_ids&quot;</span>], speaker_embeddings, vocoder=vocoder)',wrap:!1}}),Ut=new v({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}}),vt=new ss({props:{title:"Bark",local:"bark",headingTag:"h2"}}),It=new v({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}}),Ht=new v({props:{code:"JTIzJTIwJUU4JUFFJUJFJUU3JUJEJUFFJUU4JUFGJUI0JUU4JUFGJTlEJUU0JUJBJUJBJUU1JUI1JThDJUU1JTg1JUE1JTBBaW5wdXRzJTIwJTNEJTIwcHJvY2Vzc29yKCUyMlRoaXMlMjBpcyUyMGElMjB0ZXN0ISUyMiUyQyUyMHZvaWNlX3ByZXNldCUzRCUyMnYyJTJGZW5fc3BlYWtlcl8zJTIyKSUwQSUwQXNwZWVjaF9vdXRwdXQlMjAlM0QlMjBtb2RlbC5nZW5lcmF0ZSgqKmlucHV0cykuY3B1KCkubnVtcHkoKQ==",highlighted:`<span class="hljs-comment"># 设置说话人嵌入</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}}),St=new v({props:{code:"JTIzJTIwJUU4JUFGJTk1JUU4JUFGJTk1JUU2JUIzJTk1JUU4JUFGJUFEJUVGJUJDJThDJUU1JTkwJThDJUU2JTk3JUI2JUU2JTg4JTkxJUU0JUJCJUFDJUU0JUI5JTlGJUU2JTlEJUE1JUU3JTk0JUE4JUU0JUI4JTgwJUU0JUI4JUFBJUU2JUIzJTk1JUU4JUFGJUFEJUU4JUFGJUI0JUU4JUFGJTlEJUU0JUJBJUJBJUU1JUI1JThDJUU1JTg1JUE1JTBBaW5wdXRzJTIwJTNEJTIwcHJvY2Vzc29yKCUyMkMnZXN0JTIwdW4lMjB0ZXN0ISUyMiUyQyUyMHZvaWNlX3ByZXNldCUzRCUyMnYyJTJGZnJfc3BlYWtlcl8xJTIyKSUwQSUwQXNwZWVjaF9vdXRwdXQlMjAlM0QlMjBtb2RlbC5nZW5lcmF0ZSgqKmlucHV0cykuY3B1KCkubnVtcHkoKQ==",highlighted:`<span class="hljs-comment"># 试试法语，同时我们也来用一个法语说话人嵌入</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}}),Wt=new v({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}}),Rt=new v({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}}),Qt=new v({props:{code:"aW5wdXRfbGlzdCUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMiU1QmNsZWFycyUyMHRocm9hdCU1RCUyMEhlbGxvJTIwdWglMjAuLi4lMkMlMjBteSUyMGRvZyUyMGlzJTIwY3V0ZSUyMCU1QmxhdWdodGVyJTVEJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIyTGV0J3MlMjB0cnklMjBnZW5lcmF0aW5nJTIwc3BlZWNoJTJDJTIwd2l0aCUyMEJhcmslMkMlMjBhJTIwdGV4dC10by1zcGVlY2glMjBtb2RlbCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMiVFMiU5OSVBQSUyMEluJTIwdGhlJTIwanVuZ2xlJTJDJTIwdGhlJTIwbWlnaHR5JTIwanVuZ2xlJTJDJTIwdGhlJTIwbGlvbiUyMGJhcmtzJTIwdG9uaWdodCUyMCVFMiU5OSVBQSUyMiUyQyUwQSU1RCUwQSUwQSUyMyUyMCVFOCVBRSVCRSVFNyVCRCVBRSVFNCVCOCU4MCVFNCVCOCVBQSVFOCVBRiVCNCVFOCVBRiU5RCVFNCVCQSVCQSVFNSVCNSU4QyVFNSU4NSVBNSUwQWlucHV0cyUyMCUzRCUyMHByb2Nlc3NvcihpbnB1dF9saXN0JTJDJTIwdm9pY2VfcHJlc2V0JTNEJTIydjIlMkZlbl9zcGVha2VyXzMlMjIpJTBBJTBBc3BlZWNoX291dHB1dCUyMCUzRCUyMG1vZGVsLmdlbmVyYXRlKCoqaW5wdXRzKS5jcHUoKS5udW1weSgp",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}}),Lt=new v({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}}),qt=new v({props:{code:"QXVkaW8oc3BlZWNoX291dHB1dCU1QjElNUQlMkMlMjByYXRlJTNEc2FtcGxpbmdfcmF0ZSk=",highlighted:'Audio(speech_output[<span class="hljs-number">1</span>], rate=sampling_rate)',wrap:!1}}),At=new v({props:{code:"QXVkaW8oc3BlZWNoX291dHB1dCU1QjIlNUQlMkMlMjByYXRlJTNEc2FtcGxpbmdfcmF0ZSk=",highlighted:'Audio(speech_output[<span class="hljs-number">2</span>], rate=sampling_rate)',wrap:!1}}),R=new Me({props:{$$slots:{default:[Hn]},$$scope:{ctx:b}}}),Dt=new ss({props:{title:"Massive Multilingual Speech (MMS)",local:"massive-multilingual-speech-mms",headingTag:"h2"}}),F=new Me({props:{warning:!0,$$slots:{default:[gn]},$$scope:{ctx:b}}}),le=new v({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}}),pe=new v({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}}),ae=new v({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFpbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIodGV4dF9leGFtcGxlJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJwdCUyMiklMEFpbnB1dF9pZHMlMjAlM0QlMjBpbnB1dHMlNUIlMjJpbnB1dF9pZHMlMjIlNUQlMEElMEElMEF3aXRoJTIwdG9yY2gubm9fZ3JhZCgpJTNBJTBBJTIwJTIwJTIwJTIwb3V0cHV0cyUyMCUzRCUyMG1vZGVsKGlucHV0X2lkcyklMEElMEFzcGVlY2glMjAlM0QlMjBvdXRwdXRzJTVCJTIyd2F2ZWZvcm0lMjIlNUQ=",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[<span class="hljs-string">&quot;waveform&quot;</span>]`,wrap:!1}}),me=new v({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}}),fe=new Vn({props:{source:"https://github.com/huggingface/audio-transformers-course/blob/main/chapters/zh-CN/chapter6/pre-trained_models.mdx"}}),{c(){m=i("meta"),$=n(),u=i("p"),r=n(),c(h.$$.fragment),d=n(),C=i("p"),C.textContent=k,f=n(),c(w.$$.fragment),Te=n(),Q=i("p"),Q.innerHTML=ns,ye=n(),z=i("p"),z.textContent=ps,Ue=n(),E=i("p"),E.innerHTML=is,de=n(),L=i("p"),L.textContent=as,Ce=n(),_=i("div"),_.innerHTML=os,ve=n(),P=i("p"),P.textContent=ms,$e=n(),q=i("p"),q.textContent=us,we=n(),Y=i("p"),Y.textContent=rs,he=n(),c(j.$$.fragment),be=n(),A=i("p"),A.textContent=fs,xe=n(),D=i("ul"),D.innerHTML=cs,ke=n(),K=i("p"),K.textContent=Ms,_e=n(),V=i("div"),V.innerHTML=Js,je=n(),O=i("p"),O.innerHTML=Ts,Ve=n(),tt=i("p"),tt.textContent=ys,Ze=n(),et=i("p"),et.textContent=Us,Ie=n(),c(lt.$$.fragment),Be=n(),st=i("p"),st.textContent=ds,He=n(),c(nt.$$.fragment),ge=n(),pt=i("p"),pt.textContent=Cs,Se=n(),c(Z.$$.fragment),Ge=n(),it=i("p"),it.innerHTML=vs,We=n(),c(at.$$.fragment),Ne=n(),ot=i("p"),ot.textContent=$s,Re=n(),mt=i("p"),mt.textContent=ws,Fe=n(),c(ut.$$.fragment),Xe=n(),rt=i("p"),rt.textContent=hs,Qe=n(),ft=i("p"),ft.textContent=bs,ze=n(),c(I.$$.fragment),Ee=n(),ct=i("p"),ct.textContent=xs,Le=n(),c(Mt.$$.fragment),Pe=n(),Jt=i("p"),Jt.textContent=ks,qe=n(),c(Tt.$$.fragment),Ye=n(),yt=i("p"),yt.textContent=_s,Ae=n(),c(Ut.$$.fragment),De=n(),dt=i("p"),dt.textContent=js,Ke=n(),Ct=i("p"),Ct.textContent=Vs,Oe=n(),x=i("iframe"),x.innerHTML=Zs,tl=n(),c(vt.$$.fragment),el=n(),$t=i("p"),$t.innerHTML=Bs,ll=n(),wt=i("p"),wt.innerHTML=Hs,sl=n(),ht=i("p"),ht.innerHTML=gs,nl=n(),bt=i("p"),bt.textContent=Ss,pl=n(),xt=i("ul"),xt.innerHTML=Gs,il=n(),kt=i("p"),kt.textContent=Ws,al=n(),_t=i("p"),_t.textContent=Ns,ol=n(),jt=i("p"),jt.textContent=Rs,ml=n(),Vt=i("p"),Vt.textContent=Fs,ul=n(),Zt=i("ol"),Zt.innerHTML=Xs,rl=n(),c(It.$$.fragment),fl=n(),Bt=i("p"),Bt.innerHTML=Qs,cl=n(),c(Ht.$$.fragment),Ml=n(),B=i("audio"),B.innerHTML=zs,Jl=n(),gt=i("p"),gt.innerHTML=Es,Tl=n(),c(St.$$.fragment),yl=n(),H=i("audio"),H.innerHTML=Ls,Ul=n(),Gt=i("p"),Gt.innerHTML=Ps,dl=n(),c(Wt.$$.fragment),Cl=n(),g=i("audio"),g.innerHTML=qs,vl=n(),Nt=i("p"),Nt.textContent=Ys,$l=n(),c(Rt.$$.fragment),wl=n(),S=i("audio"),S.innerHTML=As,hl=n(),Ft=i("p"),Ft.textContent=Ds,bl=n(),Xt=i("p"),Xt.textContent=Ks,xl=n(),c(Qt.$$.fragment),kl=n(),zt=i("p"),zt.textContent=Os,_l=n(),Et=i("p"),Et.textContent=tn,jl=n(),c(Lt.$$.fragment),Vl=n(),G=i("audio"),G.innerHTML=en,Zl=n(),Pt=i("p"),Pt.textContent=ln,Il=n(),c(qt.$$.fragment),Bl=n(),W=i("audio"),W.innerHTML=sn,Hl=n(),Yt=i("p"),Yt.textContent=nn,gl=n(),c(At.$$.fragment),Sl=n(),N=i("audio"),N.innerHTML=pn,Gl=n(),c(R.$$.fragment),Wl=n(),c(Dt.$$.fragment),Nl=n(),Kt=i("p"),Kt.textContent=an,Rl=n(),Ot=i("p"),Ot.innerHTML=on,Fl=n(),te=i("p"),te.textContent=mn,Xl=n(),c(F.$$.fragment),Ql=n(),ee=i("p"),ee.textContent=un,zl=n(),c(le.$$.fragment),El=n(),se=i("p"),se.innerHTML=rn,Ll=n(),ne=i("p"),ne.textContent=fn,Pl=n(),c(pe.$$.fragment),ql=n(),ie=i("p"),ie.textContent=cn,Yl=n(),c(ae.$$.fragment),Al=n(),oe=i("p"),oe.textContent=Mn,Dl=n(),c(me.$$.fragment),Kl=n(),ue=i("p"),ue.innerHTML=Jn,Ol=n(),re=i("p"),re.textContent=Tn,ts=n(),c(fe.$$.fragment),es=n(),ce=i("p"),this.h()},l(t){const e=_n("svelte-u9bgzb",document.head);m=a(e,"META",{name:!0,content:!0}),e.forEach(l),$=p(t),u=a(t,"P",{}),$n(u).forEach(l),r=p(t),M(h.$$.fragment,t),d=p(t),C=a(t,"P",{"data-svelte-h":!0}),o(C)!=="svelte-1b4vjrd"&&(C.textContent=k),f=p(t),M(w.$$.fragment,t),Te=p(t),Q=a(t,"P",{"data-svelte-h":!0}),o(Q)!=="svelte-st65m3"&&(Q.innerHTML=ns),ye=p(t),z=a(t,"P",{"data-svelte-h":!0}),o(z)!=="svelte-75y2xv"&&(z.textContent=ps),Ue=p(t),E=a(t,"P",{"data-svelte-h":!0}),o(E)!=="svelte-zsixi9"&&(E.innerHTML=is),de=p(t),L=a(t,"P",{"data-svelte-h":!0}),o(L)!=="svelte-1d1keko"&&(L.textContent=as),Ce=p(t),_=a(t,"DIV",{class:!0,"data-svelte-h":!0}),o(_)!=="svelte-1j5439p"&&(_.innerHTML=os),ve=p(t),P=a(t,"P",{"data-svelte-h":!0}),o(P)!=="svelte-v61e9l"&&(P.textContent=ms),$e=p(t),q=a(t,"P",{"data-svelte-h":!0}),o(q)!=="svelte-mgp4f6"&&(q.textContent=us),we=p(t),Y=a(t,"P",{"data-svelte-h":!0}),o(Y)!=="svelte-f9btrw"&&(Y.textContent=rs),he=p(t),M(j.$$.fragment,t),be=p(t),A=a(t,"P",{"data-svelte-h":!0}),o(A)!=="svelte-u1ur4z"&&(A.textContent=fs),xe=p(t),D=a(t,"UL",{"data-svelte-h":!0}),o(D)!=="svelte-i75w62"&&(D.innerHTML=cs),ke=p(t),K=a(t,"P",{"data-svelte-h":!0}),o(K)!=="svelte-apnuw1"&&(K.textContent=Ms),_e=p(t),V=a(t,"DIV",{class:!0,"data-svelte-h":!0}),o(V)!=="svelte-sze2fn"&&(V.innerHTML=Js),je=p(t),O=a(t,"P",{"data-svelte-h":!0}),o(O)!=="svelte-1frga2j"&&(O.innerHTML=Ts),Ve=p(t),tt=a(t,"P",{"data-svelte-h":!0}),o(tt)!=="svelte-13wzqzv"&&(tt.textContent=ys),Ze=p(t),et=a(t,"P",{"data-svelte-h":!0}),o(et)!=="svelte-vn6ebl"&&(et.textContent=Us),Ie=p(t),M(lt.$$.fragment,t),Be=p(t),st=a(t,"P",{"data-svelte-h":!0}),o(st)!=="svelte-45edpc"&&(st.textContent=ds),He=p(t),M(nt.$$.fragment,t),ge=p(t),pt=a(t,"P",{"data-svelte-h":!0}),o(pt)!=="svelte-1qxc9gx"&&(pt.textContent=Cs),Se=p(t),M(Z.$$.fragment,t),Ge=p(t),it=a(t,"P",{"data-svelte-h":!0}),o(it)!=="svelte-1x6aamp"&&(it.innerHTML=vs),We=p(t),M(at.$$.fragment,t),Ne=p(t),ot=a(t,"P",{"data-svelte-h":!0}),o(ot)!=="svelte-133o8sq"&&(ot.textContent=$s),Re=p(t),mt=a(t,"P",{"data-svelte-h":!0}),o(mt)!=="svelte-tfw8dj"&&(mt.textContent=ws),Fe=p(t),M(ut.$$.fragment,t),Xe=p(t),rt=a(t,"P",{"data-svelte-h":!0}),o(rt)!=="svelte-h1l0vf"&&(rt.textContent=hs),Qe=p(t),ft=a(t,"P",{"data-svelte-h":!0}),o(ft)!=="svelte-bpcbge"&&(ft.textContent=bs),ze=p(t),M(I.$$.fragment,t),Ee=p(t),ct=a(t,"P",{"data-svelte-h":!0}),o(ct)!=="svelte-9v0lxe"&&(ct.textContent=xs),Le=p(t),M(Mt.$$.fragment,t),Pe=p(t),Jt=a(t,"P",{"data-svelte-h":!0}),o(Jt)!=="svelte-116nmst"&&(Jt.textContent=ks),qe=p(t),M(Tt.$$.fragment,t),Ye=p(t),yt=a(t,"P",{"data-svelte-h":!0}),o(yt)!=="svelte-vp126w"&&(yt.textContent=_s),Ae=p(t),M(Ut.$$.fragment,t),De=p(t),dt=a(t,"P",{"data-svelte-h":!0}),o(dt)!=="svelte-qt7ix2"&&(dt.textContent=js),Ke=p(t),Ct=a(t,"P",{"data-svelte-h":!0}),o(Ct)!=="svelte-eglvvt"&&(Ct.textContent=Vs),Oe=p(t),x=a(t,"IFRAME",{src:!0,frameborder:!0,width:!0,height:!0,"data-svelte-h":!0}),o(x)!=="svelte-k7mwvh"&&(x.innerHTML=Zs),tl=p(t),M(vt.$$.fragment,t),el=p(t),$t=a(t,"P",{"data-svelte-h":!0}),o($t)!=="svelte-s1cckx"&&($t.innerHTML=Bs),ll=p(t),wt=a(t,"P",{"data-svelte-h":!0}),o(wt)!=="svelte-1ksv18o"&&(wt.innerHTML=Hs),sl=p(t),ht=a(t,"P",{"data-svelte-h":!0}),o(ht)!=="svelte-4l0twx"&&(ht.innerHTML=gs),nl=p(t),bt=a(t,"P",{"data-svelte-h":!0}),o(bt)!=="svelte-1j8vdep"&&(bt.textContent=Ss),pl=p(t),xt=a(t,"UL",{"data-svelte-h":!0}),o(xt)!=="svelte-zkoisr"&&(xt.innerHTML=Gs),il=p(t),kt=a(t,"P",{"data-svelte-h":!0}),o(kt)!=="svelte-1faezvv"&&(kt.textContent=Ws),al=p(t),_t=a(t,"P",{"data-svelte-h":!0}),o(_t)!=="svelte-1jf1pv5"&&(_t.textContent=Ns),ol=p(t),jt=a(t,"P",{"data-svelte-h":!0}),o(jt)!=="svelte-7znq7f"&&(jt.textContent=Rs),ml=p(t),Vt=a(t,"P",{"data-svelte-h":!0}),o(Vt)!=="svelte-1ur311x"&&(Vt.textContent=Fs),ul=p(t),Zt=a(t,"OL",{"data-svelte-h":!0}),o(Zt)!=="svelte-quougx"&&(Zt.innerHTML=Xs),rl=p(t),M(It.$$.fragment,t),fl=p(t),Bt=a(t,"P",{"data-svelte-h":!0}),o(Bt)!=="svelte-n1k3bz"&&(Bt.innerHTML=Qs),cl=p(t),M(Ht.$$.fragment,t),Ml=p(t),B=a(t,"AUDIO",{"data-svelte-h":!0}),o(B)!=="svelte-1dcfkqn"&&(B.innerHTML=zs),Jl=p(t),gt=a(t,"P",{"data-svelte-h":!0}),o(gt)!=="svelte-1oxltsk"&&(gt.innerHTML=Es),Tl=p(t),M(St.$$.fragment,t),yl=p(t),H=a(t,"AUDIO",{"data-svelte-h":!0}),o(H)!=="svelte-1mf2amh"&&(H.innerHTML=Ls),Ul=p(t),Gt=a(t,"P",{"data-svelte-h":!0}),o(Gt)!=="svelte-1plsvxg"&&(Gt.innerHTML=Ps),dl=p(t),M(Wt.$$.fragment,t),Cl=p(t),g=a(t,"AUDIO",{"data-svelte-h":!0}),o(g)!=="svelte-18uewve"&&(g.innerHTML=qs),vl=p(t),Nt=a(t,"P",{"data-svelte-h":!0}),o(Nt)!=="svelte-1ezn0es"&&(Nt.textContent=Ys),$l=p(t),M(Rt.$$.fragment,t),wl=p(t),S=a(t,"AUDIO",{"data-svelte-h":!0}),o(S)!=="svelte-xst92l"&&(S.innerHTML=As),hl=p(t),Ft=a(t,"P",{"data-svelte-h":!0}),o(Ft)!=="svelte-s1mk8o"&&(Ft.textContent=Ds),bl=p(t),Xt=a(t,"P",{"data-svelte-h":!0}),o(Xt)!=="svelte-1jy7yoj"&&(Xt.textContent=Ks),xl=p(t),M(Qt.$$.fragment,t),kl=p(t),zt=a(t,"P",{"data-svelte-h":!0}),o(zt)!=="svelte-115bleg"&&(zt.textContent=Os),_l=p(t),Et=a(t,"P",{"data-svelte-h":!0}),o(Et)!=="svelte-1why158"&&(Et.textContent=tn),jl=p(t),M(Lt.$$.fragment,t),Vl=p(t),G=a(t,"AUDIO",{"data-svelte-h":!0}),o(G)!=="svelte-v3niu0"&&(G.innerHTML=en),Zl=p(t),Pt=a(t,"P",{"data-svelte-h":!0}),o(Pt)!=="svelte-1uczco0"&&(Pt.textContent=ln),Il=p(t),M(qt.$$.fragment,t),Bl=p(t),W=a(t,"AUDIO",{"data-svelte-h":!0}),o(W)!=="svelte-1x1ywin"&&(W.innerHTML=sn),Hl=p(t),Yt=a(t,"P",{"data-svelte-h":!0}),o(Yt)!=="svelte-1wcywyt"&&(Yt.textContent=nn),gl=p(t),M(At.$$.fragment,t),Sl=p(t),N=a(t,"AUDIO",{"data-svelte-h":!0}),o(N)!=="svelte-69zylm"&&(N.innerHTML=pn),Gl=p(t),M(R.$$.fragment,t),Wl=p(t),M(Dt.$$.fragment,t),Nl=p(t),Kt=a(t,"P",{"data-svelte-h":!0}),o(Kt)!=="svelte-gmo2j4"&&(Kt.textContent=an),Rl=p(t),Ot=a(t,"P",{"data-svelte-h":!0}),o(Ot)!=="svelte-yksmt6"&&(Ot.innerHTML=on),Fl=p(t),te=a(t,"P",{"data-svelte-h":!0}),o(te)!=="svelte-1w0zui0"&&(te.textContent=mn),Xl=p(t),M(F.$$.fragment,t),Ql=p(t),ee=a(t,"P",{"data-svelte-h":!0}),o(ee)!=="svelte-5i2hio"&&(ee.textContent=un),zl=p(t),M(le.$$.fragment,t),El=p(t),se=a(t,"P",{"data-svelte-h":!0}),o(se)!=="svelte-inlyrl"&&(se.innerHTML=rn),Ll=p(t),ne=a(t,"P",{"data-svelte-h":!0}),o(ne)!=="svelte-jup6at"&&(ne.textContent=fn),Pl=p(t),M(pe.$$.fragment,t),ql=p(t),ie=a(t,"P",{"data-svelte-h":!0}),o(ie)!=="svelte-amo8sd"&&(ie.textContent=cn),Yl=p(t),M(ae.$$.fragment,t),Al=p(t),oe=a(t,"P",{"data-svelte-h":!0}),o(oe)!=="svelte-bk35c9"&&(oe.textContent=Mn),Dl=p(t),M(me.$$.fragment,t),Kl=p(t),ue=a(t,"P",{"data-svelte-h":!0}),o(ue)!=="svelte-19a1qe1"&&(ue.innerHTML=Jn),Ol=p(t),re=a(t,"P",{"data-svelte-h":!0}),o(re)!=="svelte-1t211s5"&&(re.textContent=Tn),ts=p(t),M(fe.$$.fragment,t),es=p(t),ce=a(t,"P",{}),$n(ce).forEach(l),this.h()},h(){X(m,"name","hf:doc:metadata"),X(m,"content",Gn),X(_,"class","flex justify-center"),X(V,"class","flex justify-center"),hn(x.src,Is="https://matthijs-speecht5-tts-demo.hf.space")||X(x,"src",Is),X(x,"frameborder","0"),X(x,"width","850"),X(x,"height","450"),B.controls="",H.controls="",g.controls="",S.controls="",G.controls="",W.controls="",N.controls=""},m(t,e){jn(document.head,m),s(t,$,e),s(t,u,e),s(t,r,e),J(h,t,e),s(t,d,e),s(t,C,e),s(t,f,e),J(w,t,e),s(t,Te,e),s(t,Q,e),s(t,ye,e),s(t,z,e),s(t,Ue,e),s(t,E,e),s(t,de,e),s(t,L,e),s(t,Ce,e),s(t,_,e),s(t,ve,e),s(t,P,e),s(t,$e,e),s(t,q,e),s(t,we,e),s(t,Y,e),s(t,he,e),J(j,t,e),s(t,be,e),s(t,A,e),s(t,xe,e),s(t,D,e),s(t,ke,e),s(t,K,e),s(t,_e,e),s(t,V,e),s(t,je,e),s(t,O,e),s(t,Ve,e),s(t,tt,e),s(t,Ze,e),s(t,et,e),s(t,Ie,e),J(lt,t,e),s(t,Be,e),s(t,st,e),s(t,He,e),J(nt,t,e),s(t,ge,e),s(t,pt,e),s(t,Se,e),J(Z,t,e),s(t,Ge,e),s(t,it,e),s(t,We,e),J(at,t,e),s(t,Ne,e),s(t,ot,e),s(t,Re,e),s(t,mt,e),s(t,Fe,e),J(ut,t,e),s(t,Xe,e),s(t,rt,e),s(t,Qe,e),s(t,ft,e),s(t,ze,e),J(I,t,e),s(t,Ee,e),s(t,ct,e),s(t,Le,e),J(Mt,t,e),s(t,Pe,e),s(t,Jt,e),s(t,qe,e),J(Tt,t,e),s(t,Ye,e),s(t,yt,e),s(t,Ae,e),J(Ut,t,e),s(t,De,e),s(t,dt,e),s(t,Ke,e),s(t,Ct,e),s(t,Oe,e),s(t,x,e),s(t,tl,e),J(vt,t,e),s(t,el,e),s(t,$t,e),s(t,ll,e),s(t,wt,e),s(t,sl,e),s(t,ht,e),s(t,nl,e),s(t,bt,e),s(t,pl,e),s(t,xt,e),s(t,il,e),s(t,kt,e),s(t,al,e),s(t,_t,e),s(t,ol,e),s(t,jt,e),s(t,ml,e),s(t,Vt,e),s(t,ul,e),s(t,Zt,e),s(t,rl,e),J(It,t,e),s(t,fl,e),s(t,Bt,e),s(t,cl,e),J(Ht,t,e),s(t,Ml,e),s(t,B,e),s(t,Jl,e),s(t,gt,e),s(t,Tl,e),J(St,t,e),s(t,yl,e),s(t,H,e),s(t,Ul,e),s(t,Gt,e),s(t,dl,e),J(Wt,t,e),s(t,Cl,e),s(t,g,e),s(t,vl,e),s(t,Nt,e),s(t,$l,e),J(Rt,t,e),s(t,wl,e),s(t,S,e),s(t,hl,e),s(t,Ft,e),s(t,bl,e),s(t,Xt,e),s(t,xl,e),J(Qt,t,e),s(t,kl,e),s(t,zt,e),s(t,_l,e),s(t,Et,e),s(t,jl,e),J(Lt,t,e),s(t,Vl,e),s(t,G,e),s(t,Zl,e),s(t,Pt,e),s(t,Il,e),J(qt,t,e),s(t,Bl,e),s(t,W,e),s(t,Hl,e),s(t,Yt,e),s(t,gl,e),J(At,t,e),s(t,Sl,e),s(t,N,e),s(t,Gl,e),J(R,t,e),s(t,Wl,e),J(Dt,t,e),s(t,Nl,e),s(t,Kt,e),s(t,Rl,e),s(t,Ot,e),s(t,Fl,e),s(t,te,e),s(t,Xl,e),J(F,t,e),s(t,Ql,e),s(t,ee,e),s(t,zl,e),J(le,t,e),s(t,El,e),s(t,se,e),s(t,Ll,e),s(t,ne,e),s(t,Pl,e),J(pe,t,e),s(t,ql,e),s(t,ie,e),s(t,Yl,e),J(ae,t,e),s(t,Al,e),s(t,oe,e),s(t,Dl,e),J(me,t,e),s(t,Kl,e),s(t,ue,e),s(t,Ol,e),s(t,re,e),s(t,ts,e),J(fe,t,e),s(t,es,e),s(t,ce,e),ls=!0},p(t,[e]){const yn={};e&2&&(yn.$$scope={dirty:e,ctx:t}),j.$set(yn);const Un={};e&2&&(Un.$$scope={dirty:e,ctx:t}),Z.$set(Un);const dn={};e&2&&(dn.$$scope={dirty:e,ctx:t}),I.$set(dn);const Cn={};e&2&&(Cn.$$scope={dirty:e,ctx:t}),R.$set(Cn);const vn={};e&2&&(vn.$$scope={dirty:e,ctx:t}),F.$set(vn)},i(t){ls||(T(h.$$.fragment,t),T(w.$$.fragment,t),T(j.$$.fragment,t),T(lt.$$.fragment,t),T(nt.$$.fragment,t),T(Z.$$.fragment,t),T(at.$$.fragment,t),T(ut.$$.fragment,t),T(I.$$.fragment,t),T(Mt.$$.fragment,t),T(Tt.$$.fragment,t),T(Ut.$$.fragment,t),T(vt.$$.fragment,t),T(It.$$.fragment,t),T(Ht.$$.fragment,t),T(St.$$.fragment,t),T(Wt.$$.fragment,t),T(Rt.$$.fragment,t),T(Qt.$$.fragment,t),T(Lt.$$.fragment,t),T(qt.$$.fragment,t),T(At.$$.fragment,t),T(R.$$.fragment,t),T(Dt.$$.fragment,t),T(F.$$.fragment,t),T(le.$$.fragment,t),T(pe.$$.fragment,t),T(ae.$$.fragment,t),T(me.$$.fragment,t),T(fe.$$.fragment,t),ls=!0)},o(t){y(h.$$.fragment,t),y(w.$$.fragment,t),y(j.$$.fragment,t),y(lt.$$.fragment,t),y(nt.$$.fragment,t),y(Z.$$.fragment,t),y(at.$$.fragment,t),y(ut.$$.fragment,t),y(I.$$.fragment,t),y(Mt.$$.fragment,t),y(Tt.$$.fragment,t),y(Ut.$$.fragment,t),y(vt.$$.fragment,t),y(It.$$.fragment,t),y(Ht.$$.fragment,t),y(St.$$.fragment,t),y(Wt.$$.fragment,t),y(Rt.$$.fragment,t),y(Qt.$$.fragment,t),y(Lt.$$.fragment,t),y(qt.$$.fragment,t),y(At.$$.fragment,t),y(R.$$.fragment,t),y(Dt.$$.fragment,t),y(F.$$.fragment,t),y(le.$$.fragment,t),y(pe.$$.fragment,t),y(ae.$$.fragment,t),y(me.$$.fragment,t),y(fe.$$.fragment,t),ls=!1},d(t){t&&(l($),l(u),l(r),l(d),l(C),l(f),l(Te),l(Q),l(ye),l(z),l(Ue),l(E),l(de),l(L),l(Ce),l(_),l(ve),l(P),l($e),l(q),l(we),l(Y),l(he),l(be),l(A),l(xe),l(D),l(ke),l(K),l(_e),l(V),l(je),l(O),l(Ve),l(tt),l(Ze),l(et),l(Ie),l(Be),l(st),l(He),l(ge),l(pt),l(Se),l(Ge),l(it),l(We),l(Ne),l(ot),l(Re),l(mt),l(Fe),l(Xe),l(rt),l(Qe),l(ft),l(ze),l(Ee),l(ct),l(Le),l(Pe),l(Jt),l(qe),l(Ye),l(yt),l(Ae),l(De),l(dt),l(Ke),l(Ct),l(Oe),l(x),l(tl),l(el),l($t),l(ll),l(wt),l(sl),l(ht),l(nl),l(bt),l(pl),l(xt),l(il),l(kt),l(al),l(_t),l(ol),l(jt),l(ml),l(Vt),l(ul),l(Zt),l(rl),l(fl),l(Bt),l(cl),l(Ml),l(B),l(Jl),l(gt),l(Tl),l(yl),l(H),l(Ul),l(Gt),l(dl),l(Cl),l(g),l(vl),l(Nt),l($l),l(wl),l(S),l(hl),l(Ft),l(bl),l(Xt),l(xl),l(kl),l(zt),l(_l),l(Et),l(jl),l(Vl),l(G),l(Zl),l(Pt),l(Il),l(Bl),l(W),l(Hl),l(Yt),l(gl),l(Sl),l(N),l(Gl),l(Wl),l(Nl),l(Kt),l(Rl),l(Ot),l(Fl),l(te),l(Xl),l(Ql),l(ee),l(zl),l(El),l(se),l(Ll),l(ne),l(Pl),l(ql),l(ie),l(Yl),l(Al),l(oe),l(Dl),l(Kl),l(ue),l(Ol),l(re),l(ts),l(es),l(ce)),l(m),U(h,t),U(w,t),U(j,t),U(lt,t),U(nt,t),U(Z,t),U(at,t),U(ut,t),U(I,t),U(Mt,t),U(Tt,t),U(Ut,t),U(vt,t),U(It,t),U(Ht,t),U(St,t),U(Wt,t),U(Rt,t),U(Qt,t),U(Lt,t),U(qt,t),U(At,t),U(R,t),U(Dt,t),U(F,t),U(le,t),U(pe,t),U(ae,t),U(me,t),U(fe,t)}}}const Gn='{"title":"语音合成的预训练模型","local":"语音合成的预训练模型","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 Wn(b){return bn(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class zn extends xn{constructor(m){super(),kn(this,m,Wn,Sn,wn,{})}}export{zn as component};
