import{s as xt,n as _t,o as Ct}from"../chunks/scheduler.f7e1785c.js";import{S as Ht,i as Mt,g as s,s as n,r as d,A as wt,h as p,f as l,c as a,j as bt,u as k,x as r,k as gt,y as Pt,a as i,v as R,d as j,t as A,w as V}from"../chunks/index.9f8f0838.js";import{H as z,E as dt}from"../chunks/getInferenceSnippets.ba5f4cd0.js";function kt(st){let T,G,E,J,f,K,m,pt="语音合成任务（也称为 <em>文本转语音</em>，Text-to-Speech）面临许多挑战。",q,u,rt=`首先，就像之前讨论的语音识别（ASR）一样，文本和语音之间的对齐可能很棘手。然而，与 ASR 不同的是，TTS 是一个<strong>一对多</strong>映射问题，
即同一文本可以以多种不同方式合成。想想您每天听到的语音中声音和说话风格的多样性——每个人说同一句话的方式都不同，但它们都是有效且正确的！
TTS 模型的不同输出，频谱图或音频波形，可能对应同一个真实结果（ground truth）。模型必须学会为每个音素、单词或句子生成正确的持续时间和时序，
这可能会很有挑战性，特别是对于长且复杂的句子。`,U,o,Tt="其次，TTS 中存在长距离依赖问题：语言具有时间维度，理解句子的意义通常需要考虑包含了周围词汇的上下文。确保 TTS 模型能捕获并保留长序列中的上下文信息对于生成连贯自然的语音至关重要。",B,h,ft=`最后，训练 TTS 模型通常需要文本和相应的语音录音配对，且为保证模型能够为不同说话人和说话风格生成自然的语音，数据应包含来自多个说话人的多样、有代表性的语音样本。
收集此类数据既昂贵又耗时，并且对于某些语言来说并不可行。您可能会想，为什么不直接采用为 ASR 设计的数据集来训练 TTS 模型呢？不幸的是，
ASR 数据集并不是最佳选择。它们对于 ASR 有益的特性，如过多的背景噪音，在 TTS 中通常是不好的。能够在嘈杂街道的录音中辨别出语音是很棒的，
但如果您的语音助手回答您时背景有汽车喇叭声和建筑施工声就不那么理想了。尽管如此，有时可以用一些 ASR 数据集来微调，因为寻找高质量、多语言、多说话人的 TTS 数据集可能相当困难。`,N,$,mt="让我们来探索一些 🤗 Hub 上适用于 TTS 的数据集吧。",O,c,Z,S,ut=`<a href="https://huggingface.co/datasets/lj_speech" rel="nofollow">LJSpeech</a> 是一个包含 13,100 个英语音频片段及其对应转写的大型数据集，
内容为一位说话人朗读 7 本纪实类英语书籍的录音。由于其音质高，语言内容多样，LJSpeech 经常被用作评估 TTS 模型的基准。`,D,v,F,L,ot=`<a href="https://huggingface.co/datasets/facebook/multilingual_librispeech" rel="nofollow">Multilingual LibriSpeech</a> 是 LibriSpeech 数据集的多语言扩展版。
后者只包含英语有声读物，而 Multilingual LibriSpeech 还包括了额外的语言，如德语、荷兰语、西班牙语、法语、意大利语、葡萄牙语和波兰语。
它提供了每种语言的音频录音以及与之对齐的转写。这个数据集为开发多语言 TTS 系统和探索跨语言语音合成技术提供了宝贵的资源。`,I,b,Q,g,ht=`<a href="https://huggingface.co/datasets/vctk" rel="nofollow">VCTK</a> 是专为语音合成研究和开发设计的数据集。它包含了 110 位不同口音的人说英语的录音，每位说话人读约 400 个句子，
这些句子选自报纸、the rainbow passage 和旨在识别说话者口音的引出段落（elicitation paragraph）。VCTK 为训练具有多样化声音和口音的 TTS 模型提供了宝贵资源，使语音合成更加自然和多样化。`,W,x,X,_,$t=`<a href="https://huggingface.co/datasets/cdminix/libritts-r-aligned" rel="nofollow">Libri-TTS / LibriTTS-R</a> 是一个由约 585 小时的英语朗读语音组成的多说话人英语语料库，
采样率 24kHz，由 Heiga Zen 在 Google Speech 和 Google Brain 团队成员的协助下搭建。LibriTTS 语料库专为 TTS 研究而设计，它源自 LibriSpeech 语料库的原始材料
（LibriVox 的 mp3 音频文件和 Project Gutenberg 的文本文件）。它与 LibriSpeech 语料库的主要区别如下：`,Y,C,ct="<li>音频文件是 24kHz 采样率。</li> <li>每条语音数据在句子与句子间断开。</li> <li>包括原始和规范化的文本。</li> <li>可以提取上下文信息（例如相邻句子）。</li> <li>排除了具有显著背景噪音的语音数据。</li>",tt,H,St="组建一个适用于 TTS 的优秀数据集并非易事，因为这样的数据集需要具备几个关键特性：",et,M,vt="<li>高质量和多样化的录音，涵盖广泛的语音模式、口音、语言和情感。录音应清晰、无背景噪音，并展现自然的语音特征。</li> <li>转写：每个音频录音应有其相应的文本转写。</li> <li>语言内容的多样性：数据集应包含语言多样化的内容，包括不同类型的句子、短语和单词。它应涵盖各种主题、体裁和领域，以确保模型能够处理不同的语言环境。</li>",lt,w,Lt="好消息是，您很可能不需要从头开始训练一个 TTS 模型。在下一节中，我们将探讨在 🤗 Hub 上可用的预训练模型。",it,P,nt,y,at;return f=new z({props:{title:"语音合成数据集",local:"语音合成数据集",headingTag:"h1"}}),c=new z({props:{title:"LJSpeech",local:"ljspeech",headingTag:"h2"}}),v=new z({props:{title:"Multilingual LibriSpeech",local:"multilingual-librispeech",headingTag:"h2"}}),b=new z({props:{title:"VCTK (Voice Cloning Toolkit)",local:"vctk-voice-cloning-toolkit",headingTag:"h2"}}),x=new z({props:{title:"Libri-TTS / LibriTTS-R",local:"libri-tts--libritts-r",headingTag:"h2"}}),P=new dt({props:{source:"https://github.com/huggingface/audio-transformers-course/blob/main/chapters/zh-CN/chapter6/tts_datasets.mdx"}}),{c(){T=s("meta"),G=n(),E=s("p"),J=n(),d(f.$$.fragment),K=n(),m=s("p"),m.innerHTML=pt,q=n(),u=s("p"),u.innerHTML=rt,U=n(),o=s("p"),o.textContent=Tt,B=n(),h=s("p"),h.textContent=ft,N=n(),$=s("p"),$.textContent=mt,O=n(),d(c.$$.fragment),Z=n(),S=s("p"),S.innerHTML=ut,D=n(),d(v.$$.fragment),F=n(),L=s("p"),L.innerHTML=ot,I=n(),d(b.$$.fragment),Q=n(),g=s("p"),g.innerHTML=ht,W=n(),d(x.$$.fragment),X=n(),_=s("p"),_.innerHTML=$t,Y=n(),C=s("ul"),C.innerHTML=ct,tt=n(),H=s("p"),H.textContent=St,et=n(),M=s("ul"),M.innerHTML=vt,lt=n(),w=s("p"),w.textContent=Lt,it=n(),d(P.$$.fragment),nt=n(),y=s("p"),this.h()},l(t){const e=wt("svelte-u9bgzb",document.head);T=p(e,"META",{name:!0,content:!0}),e.forEach(l),G=a(t),E=p(t,"P",{}),bt(E).forEach(l),J=a(t),k(f.$$.fragment,t),K=a(t),m=p(t,"P",{"data-svelte-h":!0}),r(m)!=="svelte-1srt4vh"&&(m.innerHTML=pt),q=a(t),u=p(t,"P",{"data-svelte-h":!0}),r(u)!=="svelte-19i9imb"&&(u.innerHTML=rt),U=a(t),o=p(t,"P",{"data-svelte-h":!0}),r(o)!=="svelte-r2yx3b"&&(o.textContent=Tt),B=a(t),h=p(t,"P",{"data-svelte-h":!0}),r(h)!=="svelte-rc9ow1"&&(h.textContent=ft),N=a(t),$=p(t,"P",{"data-svelte-h":!0}),r($)!=="svelte-1vfnwu8"&&($.textContent=mt),O=a(t),k(c.$$.fragment,t),Z=a(t),S=p(t,"P",{"data-svelte-h":!0}),r(S)!=="svelte-1l4mnrm"&&(S.innerHTML=ut),D=a(t),k(v.$$.fragment,t),F=a(t),L=p(t,"P",{"data-svelte-h":!0}),r(L)!=="svelte-1143lvk"&&(L.innerHTML=ot),I=a(t),k(b.$$.fragment,t),Q=a(t),g=p(t,"P",{"data-svelte-h":!0}),r(g)!=="svelte-685526"&&(g.innerHTML=ht),W=a(t),k(x.$$.fragment,t),X=a(t),_=p(t,"P",{"data-svelte-h":!0}),r(_)!=="svelte-4q1m5z"&&(_.innerHTML=$t),Y=a(t),C=p(t,"UL",{"data-svelte-h":!0}),r(C)!=="svelte-jo0vqw"&&(C.innerHTML=ct),tt=a(t),H=p(t,"P",{"data-svelte-h":!0}),r(H)!=="svelte-pds3j9"&&(H.textContent=St),et=a(t),M=p(t,"UL",{"data-svelte-h":!0}),r(M)!=="svelte-w2j736"&&(M.innerHTML=vt),lt=a(t),w=p(t,"P",{"data-svelte-h":!0}),r(w)!=="svelte-r9tj81"&&(w.textContent=Lt),it=a(t),k(P.$$.fragment,t),nt=a(t),y=p(t,"P",{}),bt(y).forEach(l),this.h()},h(){gt(T,"name","hf:doc:metadata"),gt(T,"content",Rt)},m(t,e){Pt(document.head,T),i(t,G,e),i(t,E,e),i(t,J,e),R(f,t,e),i(t,K,e),i(t,m,e),i(t,q,e),i(t,u,e),i(t,U,e),i(t,o,e),i(t,B,e),i(t,h,e),i(t,N,e),i(t,$,e),i(t,O,e),R(c,t,e),i(t,Z,e),i(t,S,e),i(t,D,e),R(v,t,e),i(t,F,e),i(t,L,e),i(t,I,e),R(b,t,e),i(t,Q,e),i(t,g,e),i(t,W,e),R(x,t,e),i(t,X,e),i(t,_,e),i(t,Y,e),i(t,C,e),i(t,tt,e),i(t,H,e),i(t,et,e),i(t,M,e),i(t,lt,e),i(t,w,e),i(t,it,e),R(P,t,e),i(t,nt,e),i(t,y,e),at=!0},p:_t,i(t){at||(j(f.$$.fragment,t),j(c.$$.fragment,t),j(v.$$.fragment,t),j(b.$$.fragment,t),j(x.$$.fragment,t),j(P.$$.fragment,t),at=!0)},o(t){A(f.$$.fragment,t),A(c.$$.fragment,t),A(v.$$.fragment,t),A(b.$$.fragment,t),A(x.$$.fragment,t),A(P.$$.fragment,t),at=!1},d(t){t&&(l(G),l(E),l(J),l(K),l(m),l(q),l(u),l(U),l(o),l(B),l(h),l(N),l($),l(O),l(Z),l(S),l(D),l(F),l(L),l(I),l(Q),l(g),l(W),l(X),l(_),l(Y),l(C),l(tt),l(H),l(et),l(M),l(lt),l(w),l(it),l(nt),l(y)),l(T),V(f,t),V(c,t),V(v,t),V(b,t),V(x,t),V(P,t)}}}const Rt='{"title":"语音合成数据集","local":"语音合成数据集","sections":[{"title":"LJSpeech","local":"ljspeech","sections":[],"depth":2},{"title":"Multilingual LibriSpeech","local":"multilingual-librispeech","sections":[],"depth":2},{"title":"VCTK (Voice Cloning Toolkit)","local":"vctk-voice-cloning-toolkit","sections":[],"depth":2},{"title":"Libri-TTS / LibriTTS-R","local":"libri-tts--libritts-r","sections":[],"depth":2}],"depth":1}';function jt(st){return Ct(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class yt extends Ht{constructor(T){super(),Mt(this,T,jt,kt,xt,{})}}export{yt as component};
