import{s as Ut,o as Tt,n as Es}from"../chunks/scheduler.bdbef820.js";import{S as wt,i as bt,g as m,s as n,r as M,A as $t,h as o,f as t,c as p,j as yt,u as h,x as J,k as Jt,y as _t,a,v as j,d as u,t as d,w as y}from"../chunks/index.33f81d56.js";import{T as Hl}from"../chunks/Tip.34194030.js";import{Y as It}from"../chunks/Youtube.0e329b00.js";import{C as T}from"../chunks/CodeBlock.362b34a4.js";import{D as Ct}from"../chunks/DocNotebookDropdown.d5db5928.js";import{F as gt,M as ft}from"../chunks/Markdown.03194dea.js";import{H as Gs,E as Rt}from"../chunks/EditOnGithub.a9246e21.js";function kt(C){let e,g='이 작업과 호환되는 모든 아키텍처와 체크포인트를 보려면 <a href="https://huggingface.co/tasks/automatic-speech-recognition" rel="nofollow">작업 페이지</a>를 확인하는 것이 좋습니다.';return{c(){e=m("p"),e.innerHTML=g},l(r){e=o(r,"P",{"data-svelte-h":!0}),J(e)!=="svelte-19nd5l3"&&(e.innerHTML=g)},m(r,f){a(r,e,f)},p:Es,d(r){r&&t(e)}}}function Qt(C){let e,g='<a href="/docs/transformers/main/ko/main_classes/trainer#transformers.Trainer">Trainer</a>로 모델을 미세 조정하는 것이 익숙하지 않다면, <a href="../training#train-with-pytorch-trainer">여기</a>에서 기본 튜토리얼을 확인해보세요!';return{c(){e=m("p"),e.innerHTML=g},l(r){e=o(r,"P",{"data-svelte-h":!0}),J(e)!=="svelte-1qq4it9"&&(e.innerHTML=g)},m(r,f){a(r,e,f)},p:Es,d(r){r&&t(e)}}}function vt(C){let e,g,r,f='이제 모델 훈련을 시작할 준비가 되었습니다! <a href="/docs/transformers/main/ko/model_doc/auto#transformers.AutoModelForCTC">AutoModelForCTC</a>로 Wav2Vec2를 가져오세요. <code>ctc_loss_reduction</code> 매개변수로 CTC 손실에 적용할 축소(reduction) 방법을 지정하세요. 기본값인 합계 대신 평균을 사용하는 것이 더 좋은 경우가 많습니다:',w,I,Q,k,R="이제 세 단계만 남았습니다:",v,b,G='<li><a href="/docs/transformers/main/ko/main_classes/trainer#transformers.TrainingArguments">TrainingArguments</a>에서 훈련 하이퍼파라미터를 정의하세요. <code>output_dir</code>은 모델을 저장할 경로를 지정하는 유일한 필수 매개변수입니다. <code>push_to_hub=True</code>를 설정하여 모델을 Hub에 업로드 할 수 있습니다(모델을 업로드하려면 Hugging Face에 로그인해야 합니다). <a href="/docs/transformers/main/ko/main_classes/trainer#transformers.Trainer">Trainer</a>는 각 에폭마다 WER을 평가하고 훈련 체크포인트를 저장합니다.</li> <li>모델, 데이터 세트, 토크나이저, 데이터 콜레이터, <code>compute_metrics</code> 함수와 함께 <a href="/docs/transformers/main/ko/main_classes/trainer#transformers.Trainer">Trainer</a>에 훈련 인수를 전달하세요.</li> <li><a href="/docs/transformers/main/ko/main_classes/trainer#transformers.Trainer.train">train()</a>을 호출하여 모델을 미세 조정하세요.</li>',Z,$,V,i,_='훈련이 완료되면 모두가 모델을 사용할 수 있도록 <a href="/docs/transformers/main/ko/main_classes/trainer#transformers.Trainer.push_to_hub">push_to_hub()</a> 메소드를 사용하여 모델을 Hub에 공유하세요:',N,x,W;return e=new Hl({props:{$$slots:{default:[Qt]},$$scope:{ctx:C}}}),I=new T({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvckNUQyUyQyUyMFRyYWluaW5nQXJndW1lbnRzJTJDJTIwVHJhaW5lciUwQSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yQ1RDLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJmYWNlYm9vayUyRndhdjJ2ZWMyLWJhc2UlMjIlMkMlMEElMjAlMjAlMjAlMjBjdGNfbG9zc19yZWR1Y3Rpb24lM0QlMjJtZWFuJTIyJTJDJTBBJTIwJTIwJTIwJTIwcGFkX3Rva2VuX2lkJTNEcHJvY2Vzc29yLnRva2VuaXplci5wYWRfdG9rZW5faWQlMkMlMEEp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForCTC, TrainingArguments, Trainer

<span class="hljs-meta">&gt;&gt;&gt; </span>model = AutoModelForCTC.from_pretrained(
<span class="hljs-meta">... </span>    <span class="hljs-string">&quot;facebook/wav2vec2-base&quot;</span>,
<span class="hljs-meta">... </span>    ctc_loss_reduction=<span class="hljs-string">&quot;mean&quot;</span>,
<span class="hljs-meta">... </span>    pad_token_id=processor.tokenizer.pad_token_id,
<span class="hljs-meta">... </span>)`,wrap:!1}}),$=new T({props:{code:"dHJhaW5pbmdfYXJncyUyMCUzRCUyMFRyYWluaW5nQXJndW1lbnRzKCUwQSUyMCUyMCUyMCUyMG91dHB1dF9kaXIlM0QlMjJteV9hd2Vzb21lX2Fzcl9taW5kX21vZGVsJTIyJTJDJTBBJTIwJTIwJTIwJTIwcGVyX2RldmljZV90cmFpbl9iYXRjaF9zaXplJTNEOCUyQyUwQSUyMCUyMCUyMCUyMGdyYWRpZW50X2FjY3VtdWxhdGlvbl9zdGVwcyUzRDIlMkMlMEElMjAlMjAlMjAlMjBsZWFybmluZ19yYXRlJTNEMWUtNSUyQyUwQSUyMCUyMCUyMCUyMHdhcm11cF9zdGVwcyUzRDUwMCUyQyUwQSUyMCUyMCUyMCUyMG1heF9zdGVwcyUzRDIwMDAlMkMlMEElMjAlMjAlMjAlMjBncmFkaWVudF9jaGVja3BvaW50aW5nJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMGZwMTYlM0RUcnVlJTJDJTBBJTIwJTIwJTIwJTIwZ3JvdXBfYnlfbGVuZ3RoJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMGV2YWxfc3RyYXRlZ3klM0QlMjJzdGVwcyUyMiUyQyUwQSUyMCUyMCUyMCUyMHBlcl9kZXZpY2VfZXZhbF9iYXRjaF9zaXplJTNEOCUyQyUwQSUyMCUyMCUyMCUyMHNhdmVfc3RlcHMlM0QxMDAwJTJDJTBBJTIwJTIwJTIwJTIwZXZhbF9zdGVwcyUzRDEwMDAlMkMlMEElMjAlMjAlMjAlMjBsb2dnaW5nX3N0ZXBzJTNEMjUlMkMlMEElMjAlMjAlMjAlMjBsb2FkX2Jlc3RfbW9kZWxfYXRfZW5kJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMG1ldHJpY19mb3JfYmVzdF9tb2RlbCUzRCUyMndlciUyMiUyQyUwQSUyMCUyMCUyMCUyMGdyZWF0ZXJfaXNfYmV0dGVyJTNERmFsc2UlMkMlMEElMjAlMjAlMjAlMjBwdXNoX3RvX2h1YiUzRFRydWUlMkMlMEEpJTBBJTBBdHJhaW5lciUyMCUzRCUyMFRyYWluZXIoJTBBJTIwJTIwJTIwJTIwbW9kZWwlM0Rtb2RlbCUyQyUwQSUyMCUyMCUyMCUyMGFyZ3MlM0R0cmFpbmluZ19hcmdzJTJDJTBBJTIwJTIwJTIwJTIwdHJhaW5fZGF0YXNldCUzRGVuY29kZWRfbWluZHMlNUIlMjJ0cmFpbiUyMiU1RCUyQyUwQSUyMCUyMCUyMCUyMGV2YWxfZGF0YXNldCUzRGVuY29kZWRfbWluZHMlNUIlMjJ0ZXN0JTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwcHJvY2Vzc2luZ19jbGFzcyUzRHByb2Nlc3Nvci5mZWF0dXJlX2V4dHJhY3RvciUyQyUwQSUyMCUyMCUyMCUyMGRhdGFfY29sbGF0b3IlM0RkYXRhX2NvbGxhdG9yJTJDJTBBJTIwJTIwJTIwJTIwY29tcHV0ZV9tZXRyaWNzJTNEY29tcHV0ZV9tZXRyaWNzJTJDJTBBKSUwQSUwQXRyYWluZXIudHJhaW4oKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>training_args = TrainingArguments(
<span class="hljs-meta">... </span>    output_dir=<span class="hljs-string">&quot;my_awesome_asr_mind_model&quot;</span>,
<span class="hljs-meta">... </span>    per_device_train_batch_size=<span class="hljs-number">8</span>,
<span class="hljs-meta">... </span>    gradient_accumulation_steps=<span class="hljs-number">2</span>,
<span class="hljs-meta">... </span>    learning_rate=<span class="hljs-number">1e-5</span>,
<span class="hljs-meta">... </span>    warmup_steps=<span class="hljs-number">500</span>,
<span class="hljs-meta">... </span>    max_steps=<span class="hljs-number">2000</span>,
<span class="hljs-meta">... </span>    gradient_checkpointing=<span class="hljs-literal">True</span>,
<span class="hljs-meta">... </span>    fp16=<span class="hljs-literal">True</span>,
<span class="hljs-meta">... </span>    group_by_length=<span class="hljs-literal">True</span>,
<span class="hljs-meta">... </span>    eval_strategy=<span class="hljs-string">&quot;steps&quot;</span>,
<span class="hljs-meta">... </span>    per_device_eval_batch_size=<span class="hljs-number">8</span>,
<span class="hljs-meta">... </span>    save_steps=<span class="hljs-number">1000</span>,
<span class="hljs-meta">... </span>    eval_steps=<span class="hljs-number">1000</span>,
<span class="hljs-meta">... </span>    logging_steps=<span class="hljs-number">25</span>,
<span class="hljs-meta">... </span>    load_best_model_at_end=<span class="hljs-literal">True</span>,
<span class="hljs-meta">... </span>    metric_for_best_model=<span class="hljs-string">&quot;wer&quot;</span>,
<span class="hljs-meta">... </span>    greater_is_better=<span class="hljs-literal">False</span>,
<span class="hljs-meta">... </span>    push_to_hub=<span class="hljs-literal">True</span>,
<span class="hljs-meta">... </span>)

<span class="hljs-meta">&gt;&gt;&gt; </span>trainer = Trainer(
<span class="hljs-meta">... </span>    model=model,
<span class="hljs-meta">... </span>    args=training_args,
<span class="hljs-meta">... </span>    train_dataset=encoded_minds[<span class="hljs-string">&quot;train&quot;</span>],
<span class="hljs-meta">... </span>    eval_dataset=encoded_minds[<span class="hljs-string">&quot;test&quot;</span>],
<span class="hljs-meta">... </span>    processing_class=processor.feature_extractor,
<span class="hljs-meta">... </span>    data_collator=data_collator,
<span class="hljs-meta">... </span>    compute_metrics=compute_metrics,
<span class="hljs-meta">... </span>)

<span class="hljs-meta">&gt;&gt;&gt; </span>trainer.train()`,wrap:!1}}),x=new T({props:{code:"dHJhaW5lci5wdXNoX3RvX2h1Yigp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>trainer.push_to_hub()',wrap:!1}}),{c(){M(e.$$.fragment),g=n(),r=m("p"),r.innerHTML=f,w=n(),M(I.$$.fragment),Q=n(),k=m("p"),k.textContent=R,v=n(),b=m("ol"),b.innerHTML=G,Z=n(),M($.$$.fragment),V=n(),i=m("p"),i.innerHTML=_,N=n(),M(x.$$.fragment)},l(c){h(e.$$.fragment,c),g=p(c),r=o(c,"P",{"data-svelte-h":!0}),J(r)!=="svelte-1necmh2"&&(r.innerHTML=f),w=p(c),h(I.$$.fragment,c),Q=p(c),k=o(c,"P",{"data-svelte-h":!0}),J(k)!=="svelte-1vwg7jz"&&(k.textContent=R),v=p(c),b=o(c,"OL",{"data-svelte-h":!0}),J(b)!=="svelte-xhsnjh"&&(b.innerHTML=G),Z=p(c),h($.$$.fragment,c),V=p(c),i=o(c,"P",{"data-svelte-h":!0}),J(i)!=="svelte-1cjvbx4"&&(i.innerHTML=_),N=p(c),h(x.$$.fragment,c)},m(c,U){j(e,c,U),a(c,g,U),a(c,r,U),a(c,w,U),j(I,c,U),a(c,Q,U),a(c,k,U),a(c,v,U),a(c,b,U),a(c,Z,U),j($,c,U),a(c,V,U),a(c,i,U),a(c,N,U),j(x,c,U),W=!0},p(c,U){const Xs={};U&2&&(Xs.$$scope={dirty:U,ctx:c}),e.$set(Xs)},i(c){W||(u(e.$$.fragment,c),u(I.$$.fragment,c),u($.$$.fragment,c),u(x.$$.fragment,c),W=!0)},o(c){d(e.$$.fragment,c),d(I.$$.fragment,c),d($.$$.fragment,c),d(x.$$.fragment,c),W=!1},d(c){c&&(t(g),t(r),t(w),t(Q),t(k),t(v),t(b),t(Z),t(V),t(i),t(N)),y(e,c),y(I,c),y($,c),y(x,c)}}}function Zt(C){let e,g;return e=new ft({props:{$$slots:{default:[vt]},$$scope:{ctx:C}}}),{c(){M(e.$$.fragment)},l(r){h(e.$$.fragment,r)},m(r,f){j(e,r,f),g=!0},p(r,f){const w={};f&2&&(w.$$scope={dirty:f,ctx:r}),e.$set(w)},i(r){g||(u(e.$$.fragment,r),g=!0)},o(r){d(e.$$.fragment,r),g=!1},d(r){y(e,r)}}}function Wt(C){let e,g='자동 음성 인식을 위해 모델을 미세 조정하는 더 자세한 예제는 영어 자동 음성 인식을 위한 <a href="https://huggingface.co/blog/fine-tune-wav2vec2-english" rel="nofollow">블로그 포스트</a>와 다국어 자동 음성 인식을 위한 <a href="https://huggingface.co/blog/fine-tune-xlsr-wav2vec2" rel="nofollow">포스트</a>를 참조하세요.';return{c(){e=m("p"),e.innerHTML=g},l(r){e=o(r,"P",{"data-svelte-h":!0}),J(e)!=="svelte-1aqt9cb"&&(e.innerHTML=g)},m(r,f){a(r,e,f)},p:Es,d(r){r&&t(e)}}}function Vt(C){let e,g="텍스트로 변환된 결과가 꽤 괜찮지만 더 좋을 수도 있습니다! 더 나은 결과를 얻으려면 더 많은 예제로 모델을 미세 조정하세요!";return{c(){e=m("p"),e.textContent=g},l(r){e=o(r,"P",{"data-svelte-h":!0}),J(e)!=="svelte-1bgb7bv"&&(e.textContent=g)},m(r,f){a(r,e,f)},p:Es,d(r){r&&t(e)}}}function xt(C){let e,g="오디오 파일과 텍스트를 전처리하고 PyTorch 텐서로 <code>input</code>을 반환할 프로세서를 가져오세요:",r,f,w,I,Q="입력을 모델에 전달하고 로짓을 반환하세요:",k,R,v,b,G="가장 높은 확률의 <code>input_ids</code>를 예측하고, 프로세서를 사용하여 예측된 <code>input_ids</code>를 다시 텍스트로 디코딩하세요:",Z,$,V;return f=new T({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Qcm9jZXNzb3IlMEElMEFwcm9jZXNzb3IlMjAlM0QlMjBBdXRvUHJvY2Vzc29yLmZyb21fcHJldHJhaW5lZCglMjJzdGV2aGxpdSUyRm15X2F3ZXNvbWVfYXNyX21pbmRfbW9kZWwlMjIpJTBBaW5wdXRzJTIwJTNEJTIwcHJvY2Vzc29yKGRhdGFzZXQlNUIwJTVEJTVCJTIyYXVkaW8lMjIlNUQlNUIlMjJhcnJheSUyMiU1RCUyQyUyMHNhbXBsaW5nX3JhdGUlM0RzYW1wbGluZ19yYXRlJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJwdCUyMik=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoProcessor

<span class="hljs-meta">&gt;&gt;&gt; </span>processor = AutoProcessor.from_pretrained(<span class="hljs-string">&quot;stevhliu/my_awesome_asr_mind_model&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>inputs = processor(dataset[<span class="hljs-number">0</span>][<span class="hljs-string">&quot;audio&quot;</span>][<span class="hljs-string">&quot;array&quot;</span>], sampling_rate=sampling_rate, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)`,wrap:!1}}),R=new T({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvckNUQyUwQSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yQ1RDLmZyb21fcHJldHJhaW5lZCglMjJzdGV2aGxpdSUyRm15X2F3ZXNvbWVfYXNyX21pbmRfbW9kZWwlMjIpJTBBd2l0aCUyMHRvcmNoLm5vX2dyYWQoKSUzQSUwQSUyMCUyMCUyMCUyMGxvZ2l0cyUyMCUzRCUyMG1vZGVsKCoqaW5wdXRzKS5sb2dpdHM=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForCTC

<span class="hljs-meta">&gt;&gt;&gt; </span>model = AutoModelForCTC.from_pretrained(<span class="hljs-string">&quot;stevhliu/my_awesome_asr_mind_model&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">with</span> torch.no_grad():
<span class="hljs-meta">... </span>    logits = model(**inputs).logits`,wrap:!1}}),$=new T({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFwcmVkaWN0ZWRfaWRzJTIwJTNEJTIwdG9yY2guYXJnbWF4KGxvZ2l0cyUyQyUyMGRpbSUzRC0xKSUwQXRyYW5zY3JpcHRpb24lMjAlM0QlMjBwcm9jZXNzb3IuYmF0Y2hfZGVjb2RlKHByZWRpY3RlZF9pZHMpJTBBdHJhbnNjcmlwdGlvbg==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> torch

<span class="hljs-meta">&gt;&gt;&gt; </span>predicted_ids = torch.argmax(logits, dim=-<span class="hljs-number">1</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>transcription = processor.batch_decode(predicted_ids)
<span class="hljs-meta">&gt;&gt;&gt; </span>transcription
[<span class="hljs-string">&#x27;I WOUL LIKE O SET UP JOINT ACOUNT WTH Y PARTNER&#x27;</span>]`,wrap:!1}}),{c(){e=m("p"),e.innerHTML=g,r=n(),M(f.$$.fragment),w=n(),I=m("p"),I.textContent=Q,k=n(),M(R.$$.fragment),v=n(),b=m("p"),b.innerHTML=G,Z=n(),M($.$$.fragment)},l(i){e=o(i,"P",{"data-svelte-h":!0}),J(e)!=="svelte-1l4sx2f"&&(e.innerHTML=g),r=p(i),h(f.$$.fragment,i),w=p(i),I=o(i,"P",{"data-svelte-h":!0}),J(I)!=="svelte-2w5h5p"&&(I.textContent=Q),k=p(i),h(R.$$.fragment,i),v=p(i),b=o(i,"P",{"data-svelte-h":!0}),J(b)!=="svelte-v9dw3r"&&(b.innerHTML=G),Z=p(i),h($.$$.fragment,i)},m(i,_){a(i,e,_),a(i,r,_),j(f,i,_),a(i,w,_),a(i,I,_),a(i,k,_),j(R,i,_),a(i,v,_),a(i,b,_),a(i,Z,_),j($,i,_),V=!0},p:Es,i(i){V||(u(f.$$.fragment,i),u(R.$$.fragment,i),u($.$$.fragment,i),V=!0)},o(i){d(f.$$.fragment,i),d(R.$$.fragment,i),d($.$$.fragment,i),V=!1},d(i){i&&(t(e),t(r),t(w),t(I),t(k),t(v),t(b),t(Z)),y(f,i),y(R,i),y($,i)}}}function Gt(C){let e,g;return e=new ft({props:{$$slots:{default:[xt]},$$scope:{ctx:C}}}),{c(){M(e.$$.fragment)},l(r){h(e.$$.fragment,r)},m(r,f){j(e,r,f),g=!0},p(r,f){const w={};f&2&&(w.$$scope={dirty:f,ctx:r}),e.$set(w)},i(r){g||(u(e.$$.fragment,r),g=!0)},o(r){d(e.$$.fragment,r),g=!1},d(r){y(e,r)}}}function Xt(C){let e,g,r,f,w,I,Q,k,R,v,b,G=`자동 음성 인식(Automatic Speech Recognition, ASR)은 음성 신호를 텍스트로 변환하여 음성 입력 시퀀스를 텍스트 출력에 매핑합니다.
Siri와 Alexa와 같은 가상 어시스턴트는 ASR 모델을 사용하여 일상적으로 사용자를 돕고 있으며, 회의 중 라이브 캡션 및 메모 작성과 같은 유용한 사용자 친화적 응용 프로그램도 많이 있습니다.`,Z,$,V="이 가이드에서 소개할 내용은 아래와 같습니다:",i,_,N='<li><a href="https://huggingface.co/datasets/PolyAI/minds14" rel="nofollow">MInDS-14</a> 데이터 세트에서 <a href="https://huggingface.co/facebook/wav2vec2-base" rel="nofollow">Wav2Vec2</a>를 미세 조정하여 오디오를 텍스트로 변환합니다.</li> <li>미세 조정한 모델을 추론에 사용합니다.</li>',x,W,c,U,Xs="시작하기 전에 필요한 모든 라이브러리가 설치되어 있는지 확인하세요:",Hs,Y,Ns,z,Nl="Hugging Face 계정에 로그인하면 모델을 업로드하고 커뮤니티에 공유할 수 있습니다. 토큰을 입력하여 로그인하세요.",Ys,A,zs,F,As,q,Yl=`먼저, 🤗 Datasets 라이브러리에서 <a href="https://huggingface.co/datasets/PolyAI/minds14" rel="nofollow">MInDS-14</a> 데이터 세트의 일부분을 가져오세요.
이렇게 하면 전체 데이터 세트에 대한 훈련에 시간을 들이기 전에 모든 것이 작동하는지 실험하고 검증할 수 있습니다.`,Fs,S,qs,D,zl="<code>~Dataset.train_test_split</code> 메소드를 사용하여 데이터 세트의 <code>train</code>을 훈련 세트와 테스트 세트로 나누세요:",Ss,L,Ds,P,Al="그리고 데이터 세트를 확인하세요:",Ls,O,Ps,K,Fl="데이터 세트에는 <code>lang_id</code>와 <code>english_transcription</code>과 같은 유용한 정보가 많이 포함되어 있지만, 이 가이드에서는 <code>audio</code>와 <code>transcription</code>에 초점을 맞출 것입니다. 다른 열은 <code>remove_columns</code> 메소드를 사용하여 제거하세요:",Os,ss,Ks,ls,ql="예시를 다시 한번 확인해보세요:",sl,ts,ll,as,Sl="두 개의 필드가 있습니다:",tl,es,Dl="<li><code>audio</code>: 오디오 파일을 가져오고 리샘플링하기 위해 호출해야 하는 음성 신호의 1차원 <code>array(배열)</code></li> <li><code>transcription</code>: 목표 텍스트</li>",al,ns,el,ps,Ll="다음으로 오디오 신호를 처리하기 위한 Wav2Vec2 프로세서를 가져옵니다:",nl,rs,pl,cs,Pl='MInDS-14 데이터 세트의 샘플링 레이트는 8000kHz이므로(<a href="https://huggingface.co/datasets/PolyAI/minds14" rel="nofollow">데이터 세트 카드</a>에서 확인), 사전 훈련된 Wav2Vec2 모델을 사용하려면 데이터 세트를 16000kHz로 리샘플링해야 합니다:',rl,is,cl,ms,Ol="위의 ‘transcription’에서 볼 수 있듯이 텍스트는 대문자와 소문자가 섞여 있습니다. Wav2Vec2 토크나이저는 대문자 문자에 대해서만 훈련되어 있으므로 텍스트가 토크나이저의 어휘와 일치하는지 확인해야 합니다:",il,os,ml,Ms,Kl="이제 다음 작업을 수행할 전처리 함수를 만들어보겠습니다:",ol,hs,st="<li><code>audio</code> 열을 호출하여 오디오 파일을 가져오고 리샘플링합니다.</li> <li>오디오 파일에서 <code>input_values</code>를 추출하고 프로세서로 <code>transcription</code> 열을 토큰화합니다.</li>",Ml,js,hl,us,lt="전체 데이터 세트에 전처리 함수를 적용하려면 🤗 Datasets <code>map</code> 함수를 사용하세요. <code>num_proc</code> 매개변수를 사용하여 프로세스 수를 늘리면 <code>map</code>의 속도를 높일 수 있습니다. <code>remove_columns</code> 메소드를 사용하여 필요하지 않은 열을 제거하세요:",jl,ds,ul,ys,tt='🤗 Transformers에는 자동 음성 인식용 데이터 콜레이터가 없으므로 예제 배치를 생성하려면 <a href="/docs/transformers/main/ko/main_classes/data_collator#transformers.DataCollatorWithPadding">DataCollatorWithPadding</a>을 조정해야 합니다. 이렇게 하면 데이터 콜레이터는 텍스트와 레이블을 배치에서 가장 긴 요소의 길이에 동적으로 패딩하여 길이를 균일하게 합니다. <code>tokenizer</code> 함수에서 <code>padding=True</code>를 설정하여 텍스트를 패딩할 수 있지만, 동적 패딩이 더 효율적입니다.',dl,Js,at="다른 데이터 콜레이터와 달리 이 특정 데이터 콜레이터는 <code>input_values</code>와 <code>labels</code>에 대해 다른 패딩 방법을 적용해야 합니다.",yl,gs,Jl,fs,et="이제 <code>DataCollatorForCTCWithPadding</code>을 인스턴스화합니다:",gl,Us,fl,Ts,Ul,ws,nt=`훈련 중에 평가 지표를 포함하면 모델의 성능을 평가하는 데 도움이 되는 경우가 많습니다. 🤗 <a href="https://huggingface.co/docs/evaluate/index" rel="nofollow">Evaluate</a> 라이브러리를 사용하면 평가 방법을 빠르게 불러올 수 있습니다.
이 작업에서는 <a href="https://huggingface.co/spaces/evaluate-metric/wer" rel="nofollow">단어 오류율(Word Error Rate, WER)</a> 평가 지표를 가져옵니다.
(평가 지표를 불러오고 계산하는 방법은 🤗 Evaluate <a href="https://huggingface.co/docs/evaluate/a_quick_tour" rel="nofollow">둘러보기</a>를 참조하세요):`,Tl,bs,wl,$s,pt="그런 다음 예측값과 레이블을 <code>compute</code>에 전달하여 WER을 계산하는 함수를 만듭니다:",bl,_s,$l,Is,rt="이제 <code>compute_metrics</code> 함수를 사용할 준비가 되었으며, 훈련을 설정할 때 이 함수로 되돌아올 것입니다.",_l,Cs,Il,X,Cl,B,Rl,Rs,kl,ks,ct="좋아요, 이제 모델을 미세 조정했으니 추론에 사용할 수 있습니다!",Ql,Qs,it="추론에 사용할 오디오 파일을 가져오세요. 필요한 경우 오디오 파일의 샘플링 비율을 모델의 샘플링 레이트에 맞게 리샘플링하는 것을 잊지 마세요!",vl,vs,Zl,Zs,mt="추론을 위해 미세 조정된 모델을 시험해보는 가장 간단한 방법은 <code>pipeline()</code>을 사용하는 것입니다. 모델을 사용하여 자동 음성 인식을 위한 <code>pipeline</code>을 인스턴스화하고 오디오 파일을 전달하세요:",Wl,Ws,Vl,E,xl,Vs,ot="<code>pipeline</code>의 결과를 수동으로 재현할 수도 있습니다:",Gl,H,Xl,xs,Bl,Bs,El;return w=new Gs({props:{title:"자동 음성 인식",local:"automatic-speech-recognition",headingTag:"h1"}}),Q=new Ct({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Mixed",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/ko/asr.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/ko/pytorch/asr.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/ko/tensorflow/asr.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/ko/asr.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/ko/pytorch/asr.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/ko/tensorflow/asr.ipynb"}]}}),R=new It({props:{id:"TksaY_FDgnk"}}),W=new Hl({props:{$$slots:{default:[kt]},$$scope:{ctx:C}}}),Y=new T({props:{code:"cGlwJTIwaW5zdGFsbCUyMHRyYW5zZm9ybWVycyUyMGRhdGFzZXRzJTIwZXZhbHVhdGUlMjBqaXdlcg==",highlighted:"pip install transformers datasets evaluate jiwer",wrap:!1}}),A=new T({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMG5vdGVib29rX2xvZ2luJTBBJTBBbm90ZWJvb2tfbG9naW4oKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> notebook_login

<span class="hljs-meta">&gt;&gt;&gt; </span>notebook_login()`,wrap:!1}}),F=new Gs({props:{title:"MInDS-14 데이터 세트 가져오기",local:"load-minds-14-dataset",headingTag:"h2"}}),S=new T({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTJDJTIwQXVkaW8lMEElMEFtaW5kcyUyMCUzRCUyMGxvYWRfZGF0YXNldCglMjJQb2x5QUklMkZtaW5kczE0JTIyJTJDJTIwbmFtZSUzRCUyMmVuLVVTJTIyJTJDJTIwc3BsaXQlM0QlMjJ0cmFpbiU1QiUzQTEwMCU1RCUyMik=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset, Audio

<span class="hljs-meta">&gt;&gt;&gt; </span>minds = load_dataset(<span class="hljs-string">&quot;PolyAI/minds14&quot;</span>, name=<span class="hljs-string">&quot;en-US&quot;</span>, split=<span class="hljs-string">&quot;train[:100]&quot;</span>)`,wrap:!1}}),L=new T({props:{code:"bWluZHMlMjAlM0QlMjBtaW5kcy50cmFpbl90ZXN0X3NwbGl0KHRlc3Rfc2l6ZSUzRDAuMik=",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>minds = minds.train_test_split(test_size=<span class="hljs-number">0.2</span>)',wrap:!1}}),O=new T({props:{code:"bWluZHM=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>minds
DatasetDict({
    train: Dataset({
        features: [<span class="hljs-string">&#x27;path&#x27;</span>, <span class="hljs-string">&#x27;audio&#x27;</span>, <span class="hljs-string">&#x27;transcription&#x27;</span>, <span class="hljs-string">&#x27;english_transcription&#x27;</span>, <span class="hljs-string">&#x27;intent_class&#x27;</span>, <span class="hljs-string">&#x27;lang_id&#x27;</span>],
        num_rows: <span class="hljs-number">16</span>
    })
    test: Dataset({
        features: [<span class="hljs-string">&#x27;path&#x27;</span>, <span class="hljs-string">&#x27;audio&#x27;</span>, <span class="hljs-string">&#x27;transcription&#x27;</span>, <span class="hljs-string">&#x27;english_transcription&#x27;</span>, <span class="hljs-string">&#x27;intent_class&#x27;</span>, <span class="hljs-string">&#x27;lang_id&#x27;</span>],
        num_rows: <span class="hljs-number">4</span>
    })
})`,wrap:!1}}),ss=new T({props:{code:"bWluZHMlMjAlM0QlMjBtaW5kcy5yZW1vdmVfY29sdW1ucyglNUIlMjJlbmdsaXNoX3RyYW5zY3JpcHRpb24lMjIlMkMlMjAlMjJpbnRlbnRfY2xhc3MlMjIlMkMlMjAlMjJsYW5nX2lkJTIyJTVEKQ==",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>minds = minds.remove_columns([<span class="hljs-string">&quot;english_transcription&quot;</span>, <span class="hljs-string">&quot;intent_class&quot;</span>, <span class="hljs-string">&quot;lang_id&quot;</span>])',wrap:!1}}),ts=new T({props:{code:"bWluZHMlNUIlMjJ0cmFpbiUyMiU1RCU1QjAlNUQ=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>minds[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-number">0</span>]
{<span class="hljs-string">&#x27;audio&#x27;</span>: {<span class="hljs-string">&#x27;array&#x27;</span>: array([-<span class="hljs-number">0.00024414</span>,  <span class="hljs-number">0.</span>        ,  <span class="hljs-number">0.</span>        , ...,  <span class="hljs-number">0.00024414</span>,
          <span class="hljs-number">0.00024414</span>,  <span class="hljs-number">0.00024414</span>], dtype=float32),
  <span class="hljs-string">&#x27;path&#x27;</span>: <span class="hljs-string">&#x27;/root/.cache/huggingface/datasets/downloads/extracted/f14948e0e84be638dd7943ac36518a4cf3324e8b7aa331c5ab11541518e9368c/en-US~APP_ERROR/602ba9e2963e11ccd901cd4f.wav&#x27;</span>,
  <span class="hljs-string">&#x27;sampling_rate&#x27;</span>: <span class="hljs-number">8000</span>},
 <span class="hljs-string">&#x27;path&#x27;</span>: <span class="hljs-string">&#x27;/root/.cache/huggingface/datasets/downloads/extracted/f14948e0e84be638dd7943ac36518a4cf3324e8b7aa331c5ab11541518e9368c/en-US~APP_ERROR/602ba9e2963e11ccd901cd4f.wav&#x27;</span>,
 <span class="hljs-string">&#x27;transcription&#x27;</span>: <span class="hljs-string">&quot;hi I&#x27;m trying to use the banking app on my phone and currently my checking and savings account balance is not refreshing&quot;</span>}`,wrap:!1}}),ns=new Gs({props:{title:"전처리",local:"preprocess",headingTag:"h2"}}),rs=new T({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Qcm9jZXNzb3IlMEElMEFwcm9jZXNzb3IlMjAlM0QlMjBBdXRvUHJvY2Vzc29yLmZyb21fcHJldHJhaW5lZCglMjJmYWNlYm9vayUyRndhdjJ2ZWMyLWJhc2UlMjIp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoProcessor

<span class="hljs-meta">&gt;&gt;&gt; </span>processor = AutoProcessor.from_pretrained(<span class="hljs-string">&quot;facebook/wav2vec2-base&quot;</span>)`,wrap:!1}}),is=new T({props:{code:"bWluZHMlMjAlM0QlMjBtaW5kcy5jYXN0X2NvbHVtbiglMjJhdWRpbyUyMiUyQyUyMEF1ZGlvKHNhbXBsaW5nX3JhdGUlM0QxNl8wMDApKSUwQW1pbmRzJTVCJTIydHJhaW4lMjIlNUQlNUIwJTVE",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>minds = minds.cast_column(<span class="hljs-string">&quot;audio&quot;</span>, Audio(sampling_rate=<span class="hljs-number">16_000</span>))
<span class="hljs-meta">&gt;&gt;&gt; </span>minds[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-number">0</span>]
{<span class="hljs-string">&#x27;audio&#x27;</span>: {<span class="hljs-string">&#x27;array&#x27;</span>: array([-<span class="hljs-number">2.38064706e-04</span>, -<span class="hljs-number">1.58618059e-04</span>, -<span class="hljs-number">5.43987835e-06</span>, ...,
          <span class="hljs-number">2.78103951e-04</span>,  <span class="hljs-number">2.38446111e-04</span>,  <span class="hljs-number">1.18740834e-04</span>], dtype=float32),
  <span class="hljs-string">&#x27;path&#x27;</span>: <span class="hljs-string">&#x27;/root/.cache/huggingface/datasets/downloads/extracted/f14948e0e84be638dd7943ac36518a4cf3324e8b7aa331c5ab11541518e9368c/en-US~APP_ERROR/602ba9e2963e11ccd901cd4f.wav&#x27;</span>,
  <span class="hljs-string">&#x27;sampling_rate&#x27;</span>: <span class="hljs-number">16000</span>},
 <span class="hljs-string">&#x27;path&#x27;</span>: <span class="hljs-string">&#x27;/root/.cache/huggingface/datasets/downloads/extracted/f14948e0e84be638dd7943ac36518a4cf3324e8b7aa331c5ab11541518e9368c/en-US~APP_ERROR/602ba9e2963e11ccd901cd4f.wav&#x27;</span>,
 <span class="hljs-string">&#x27;transcription&#x27;</span>: <span class="hljs-string">&quot;hi I&#x27;m trying to use the banking app on my phone and currently my checking and savings account balance is not refreshing&quot;</span>}`,wrap:!1}}),os=new T({props:{code:"ZGVmJTIwdXBwZXJjYXNlKGV4YW1wbGUpJTNBJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCJTIydHJhbnNjcmlwdGlvbiUyMiUzQSUyMGV4YW1wbGUlNUIlMjJ0cmFuc2NyaXB0aW9uJTIyJTVELnVwcGVyKCklN0QlMEElMEElMEFtaW5kcyUyMCUzRCUyMG1pbmRzLm1hcCh1cHBlcmNhc2Up",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">uppercase</span>(<span class="hljs-params">example</span>):
<span class="hljs-meta">... </span>    <span class="hljs-keyword">return</span> {<span class="hljs-string">&quot;transcription&quot;</span>: example[<span class="hljs-string">&quot;transcription&quot;</span>].upper()}


<span class="hljs-meta">&gt;&gt;&gt; </span>minds = minds.<span class="hljs-built_in">map</span>(uppercase)`,wrap:!1}}),js=new T({props:{code:"ZGVmJTIwcHJlcGFyZV9kYXRhc2V0KGJhdGNoKSUzQSUwQSUyMCUyMCUyMCUyMGF1ZGlvJTIwJTNEJTIwYmF0Y2glNUIlMjJhdWRpbyUyMiU1RCUwQSUyMCUyMCUyMCUyMGJhdGNoJTIwJTNEJTIwcHJvY2Vzc29yKGF1ZGlvJTVCJTIyYXJyYXklMjIlNUQlMkMlMjBzYW1wbGluZ19yYXRlJTNEYXVkaW8lNUIlMjJzYW1wbGluZ19yYXRlJTIyJTVEJTJDJTIwdGV4dCUzRGJhdGNoJTVCJTIydHJhbnNjcmlwdGlvbiUyMiU1RCklMEElMjAlMjAlMjAlMjBiYXRjaCU1QiUyMmlucHV0X2xlbmd0aCUyMiU1RCUyMCUzRCUyMGxlbihiYXRjaCU1QiUyMmlucHV0X3ZhbHVlcyUyMiU1RCU1QjAlNUQpJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwYmF0Y2g=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">prepare_dataset</span>(<span class="hljs-params">batch</span>):
<span class="hljs-meta">... </span>    audio = batch[<span class="hljs-string">&quot;audio&quot;</span>]
<span class="hljs-meta">... </span>    batch = processor(audio[<span class="hljs-string">&quot;array&quot;</span>], sampling_rate=audio[<span class="hljs-string">&quot;sampling_rate&quot;</span>], text=batch[<span class="hljs-string">&quot;transcription&quot;</span>])
<span class="hljs-meta">... </span>    batch[<span class="hljs-string">&quot;input_length&quot;</span>] = <span class="hljs-built_in">len</span>(batch[<span class="hljs-string">&quot;input_values&quot;</span>][<span class="hljs-number">0</span>])
<span class="hljs-meta">... </span>    <span class="hljs-keyword">return</span> batch`,wrap:!1}}),ds=new T({props:{code:"ZW5jb2RlZF9taW5kcyUyMCUzRCUyMG1pbmRzLm1hcChwcmVwYXJlX2RhdGFzZXQlMkMlMjByZW1vdmVfY29sdW1ucyUzRG1pbmRzLmNvbHVtbl9uYW1lcyU1QiUyMnRyYWluJTIyJTVEJTJDJTIwbnVtX3Byb2MlM0Q0KQ==",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>encoded_minds = minds.<span class="hljs-built_in">map</span>(prepare_dataset, remove_columns=minds.column_names[<span class="hljs-string">&quot;train&quot;</span>], num_proc=<span class="hljs-number">4</span>)',wrap:!1}}),gs=new T({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFmcm9tJTIwZGF0YWNsYXNzZXMlMjBpbXBvcnQlMjBkYXRhY2xhc3MlMkMlMjBmaWVsZCUwQWZyb20lMjB0eXBpbmclMjBpbXBvcnQlMjBBbnklMkMlMjBEaWN0JTJDJTIwTGlzdCUyQyUyME9wdGlvbmFsJTJDJTIwVW5pb24lMEElMEElMEElNDBkYXRhY2xhc3MlMEFjbGFzcyUyMERhdGFDb2xsYXRvckNUQ1dpdGhQYWRkaW5nJTNBJTBBJTIwJTIwJTIwJTIwcHJvY2Vzc29yJTNBJTIwQXV0b1Byb2Nlc3NvciUwQSUyMCUyMCUyMCUyMHBhZGRpbmclM0ElMjBVbmlvbiU1QmJvb2wlMkMlMjBzdHIlNUQlMjAlM0QlMjAlMjJsb25nZXN0JTIyJTBBJTBBJTIwJTIwJTIwJTIwZGVmJTIwX19jYWxsX18oc2VsZiUyQyUyMGZlYXR1cmVzJTNBJTIwTGlzdCU1QkRpY3QlNUJzdHIlMkMlMjBVbmlvbiU1Qkxpc3QlNUJpbnQlNUQlMkMlMjB0b3JjaC5UZW5zb3IlNUQlNUQlNUQpJTIwLSUzRSUyMERpY3QlNUJzdHIlMkMlMjB0b3JjaC5UZW5zb3IlNUQlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjAlRUMlOUUlODUlRUIlQTAlQTUlRUElQjMlQkMlMjAlRUIlQTAlODglRUMlOUQlQjQlRUIlQjglOTQlRUMlOUQlODQlMjAlRUIlQjYlODQlRUQlOTUlQTAlRUQlOTUlQTklRUIlOEIlODglRUIlOEIlQTQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjAlRUElQjglQjglRUMlOUQlQjQlRUElQjAlODAlMjAlRUIlOEIlQTQlRUIlQTUlQjQlRUElQjMlQTAlMkMlMjAlRUElQjAlODElRUElQjAlODElMjAlRUIlOEIlQTQlRUIlQTUlQjglMjAlRUQlOEMlQTglRUIlOTQlQTklMjAlRUIlQjAlQTklRUIlQjIlOTUlRUMlOUQlODQlMjAlRUMlODIlQUMlRUMlOUElQTklRUQlOTUlQjQlRUMlOTUlQkMlMjAlRUQlOTUlOTglRUElQjglQjAlMjAlRUIlOTUlOEMlRUIlQUMlQjglRUMlOUUlODUlRUIlOEIlODglRUIlOEIlQTQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbnB1dF9mZWF0dXJlcyUyMCUzRCUyMCU1QiU3QiUyMmlucHV0X3ZhbHVlcyUyMiUzQSUyMGZlYXR1cmUlNUIlMjJpbnB1dF92YWx1ZXMlMjIlNUQlNUIwJTVEJTdEJTIwZm9yJTIwZmVhdHVyZSUyMGluJTIwZmVhdHVyZXMlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsYWJlbF9mZWF0dXJlcyUyMCUzRCUyMCU1QiU3QiUyMmlucHV0X2lkcyUyMiUzQSUyMGZlYXR1cmUlNUIlMjJsYWJlbHMlMjIlNUQlN0QlMjBmb3IlMjBmZWF0dXJlJTIwaW4lMjBmZWF0dXJlcyU1RCUwQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGJhdGNoJTIwJTNEJTIwc2VsZi5wcm9jZXNzb3IucGFkKGlucHV0X2ZlYXR1cmVzJTJDJTIwcGFkZGluZyUzRHNlbGYucGFkZGluZyUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIycHQlMjIpJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbGFiZWxzX2JhdGNoJTIwJTNEJTIwc2VsZi5wcm9jZXNzb3IucGFkKGxhYmVscyUzRGxhYmVsX2ZlYXR1cmVzJTJDJTIwcGFkZGluZyUzRHNlbGYucGFkZGluZyUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIycHQlMjIpJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUVEJThDJUE4JUVCJTk0JUE5JUVDJTk3JTkwJTIwJUVCJThDJTgwJUVEJTk1JUI0JTIwJUVDJTg2JTkwJUVDJThCJUE0JUVDJTlEJTg0JTIwJUVDJUEwJTgxJUVDJTlBJUE5JUVEJTk1JTk4JUVDJUE3JTgwJTIwJUVDJTk1JThBJUVCJThGJTg0JUVCJUExJTlEJTIwLTEwMCVFQyU5QyVCQyVFQiVBMSU5QyUyMCVFQiU4QyU4MCVFQyVCMiVCNCVFRCU5NSVBOSVFQiU4QiU4OCVFQiU4QiVBNCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxhYmVscyUyMCUzRCUyMGxhYmVsc19iYXRjaCU1QiUyMmlucHV0X2lkcyUyMiU1RC5tYXNrZWRfZmlsbChsYWJlbHNfYmF0Y2guYXR0ZW50aW9uX21hc2submUoMSklMkMlMjAtMTAwKSUwQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGJhdGNoJTVCJTIybGFiZWxzJTIyJTVEJTIwJTNEJTIwbGFiZWxzJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwYmF0Y2g=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> torch

<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> dataclasses <span class="hljs-keyword">import</span> dataclass, field
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> typing <span class="hljs-keyword">import</span> <span class="hljs-type">Any</span>, <span class="hljs-type">Dict</span>, <span class="hljs-type">List</span>, <span class="hljs-type">Optional</span>, <span class="hljs-type">Union</span>


<span class="hljs-meta">&gt;&gt;&gt; </span>@dataclass
<span class="hljs-meta">... </span><span class="hljs-keyword">class</span> <span class="hljs-title class_">DataCollatorCTCWithPadding</span>:
<span class="hljs-meta">... </span>    processor: AutoProcessor
<span class="hljs-meta">... </span>    padding: <span class="hljs-type">Union</span>[<span class="hljs-built_in">bool</span>, <span class="hljs-built_in">str</span>] = <span class="hljs-string">&quot;longest&quot;</span>

<span class="hljs-meta">... </span>    <span class="hljs-keyword">def</span> <span class="hljs-title function_">__call__</span>(<span class="hljs-params">self, features: <span class="hljs-type">List</span>[<span class="hljs-type">Dict</span>[<span class="hljs-built_in">str</span>, <span class="hljs-type">Union</span>[<span class="hljs-type">List</span>[<span class="hljs-built_in">int</span>], torch.Tensor]]]</span>) -&gt; <span class="hljs-type">Dict</span>[<span class="hljs-built_in">str</span>, torch.Tensor]:
<span class="hljs-meta">... </span>        <span class="hljs-comment"># 입력과 레이블을 분할합니다</span>
<span class="hljs-meta">... </span>        <span class="hljs-comment"># 길이가 다르고, 각각 다른 패딩 방법을 사용해야 하기 때문입니다</span>
<span class="hljs-meta">... </span>        input_features = [{<span class="hljs-string">&quot;input_values&quot;</span>: feature[<span class="hljs-string">&quot;input_values&quot;</span>][<span class="hljs-number">0</span>]} <span class="hljs-keyword">for</span> feature <span class="hljs-keyword">in</span> features]
<span class="hljs-meta">... </span>        label_features = [{<span class="hljs-string">&quot;input_ids&quot;</span>: feature[<span class="hljs-string">&quot;labels&quot;</span>]} <span class="hljs-keyword">for</span> feature <span class="hljs-keyword">in</span> features]

<span class="hljs-meta">... </span>        batch = self.processor.pad(input_features, padding=self.padding, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)

<span class="hljs-meta">... </span>        labels_batch = self.processor.pad(labels=label_features, padding=self.padding, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)

<span class="hljs-meta">... </span>        <span class="hljs-comment"># 패딩에 대해 손실을 적용하지 않도록 -100으로 대체합니다</span>
<span class="hljs-meta">... </span>        labels = labels_batch[<span class="hljs-string">&quot;input_ids&quot;</span>].masked_fill(labels_batch.attention_mask.ne(<span class="hljs-number">1</span>), -<span class="hljs-number">100</span>)

<span class="hljs-meta">... </span>        batch[<span class="hljs-string">&quot;labels&quot;</span>] = labels

<span class="hljs-meta">... </span>        <span class="hljs-keyword">return</span> batch`,wrap:!1}}),Us=new T({props:{code:"ZGF0YV9jb2xsYXRvciUyMCUzRCUyMERhdGFDb2xsYXRvckNUQ1dpdGhQYWRkaW5nKHByb2Nlc3NvciUzRHByb2Nlc3NvciUyQyUyMHBhZGRpbmclM0QlMjJsb25nZXN0JTIyKQ==",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>data_collator = DataCollatorCTCWithPadding(processor=processor, padding=<span class="hljs-string">&quot;longest&quot;</span>)',wrap:!1}}),Ts=new Gs({props:{title:"평가하기",local:"evaluate",headingTag:"h2"}}),bs=new T({props:{code:"aW1wb3J0JTIwZXZhbHVhdGUlMEElMEF3ZXIlMjAlM0QlMjBldmFsdWF0ZS5sb2FkKCUyMndlciUyMik=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> evaluate

<span class="hljs-meta">&gt;&gt;&gt; </span>wer = evaluate.load(<span class="hljs-string">&quot;wer&quot;</span>)`,wrap:!1}}),_s=new T({props:{code:"aW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBJTBBJTBBZGVmJTIwY29tcHV0ZV9tZXRyaWNzKHByZWQpJTNBJTBBJTIwJTIwJTIwJTIwcHJlZF9sb2dpdHMlMjAlM0QlMjBwcmVkLnByZWRpY3Rpb25zJTBBJTIwJTIwJTIwJTIwcHJlZF9pZHMlMjAlM0QlMjBucC5hcmdtYXgocHJlZF9sb2dpdHMlMkMlMjBheGlzJTNELTEpJTBBJTBBJTIwJTIwJTIwJTIwcHJlZC5sYWJlbF9pZHMlNUJwcmVkLmxhYmVsX2lkcyUyMCUzRCUzRCUyMC0xMDAlNUQlMjAlM0QlMjBwcm9jZXNzb3IudG9rZW5pemVyLnBhZF90b2tlbl9pZCUwQSUwQSUyMCUyMCUyMCUyMHByZWRfc3RyJTIwJTNEJTIwcHJvY2Vzc29yLmJhdGNoX2RlY29kZShwcmVkX2lkcyklMEElMjAlMjAlMjAlMjBsYWJlbF9zdHIlMjAlM0QlMjBwcm9jZXNzb3IuYmF0Y2hfZGVjb2RlKHByZWQubGFiZWxfaWRzJTJDJTIwZ3JvdXBfdG9rZW5zJTNERmFsc2UpJTBBJTBBJTIwJTIwJTIwJTIwd2VyJTIwJTNEJTIwd2VyLmNvbXB1dGUocHJlZGljdGlvbnMlM0RwcmVkX3N0ciUyQyUyMHJlZmVyZW5jZXMlM0RsYWJlbF9zdHIpJTBBJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCJTIyd2VyJTIyJTNBJTIwd2VyJTdE",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np


<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">compute_metrics</span>(<span class="hljs-params">pred</span>):
<span class="hljs-meta">... </span>    pred_logits = pred.predictions
<span class="hljs-meta">... </span>    pred_ids = np.argmax(pred_logits, axis=-<span class="hljs-number">1</span>)

<span class="hljs-meta">... </span>    pred.label_ids[pred.label_ids == -<span class="hljs-number">100</span>] = processor.tokenizer.pad_token_id

<span class="hljs-meta">... </span>    pred_str = processor.batch_decode(pred_ids)
<span class="hljs-meta">... </span>    label_str = processor.batch_decode(pred.label_ids, group_tokens=<span class="hljs-literal">False</span>)

<span class="hljs-meta">... </span>    wer = wer.compute(predictions=pred_str, references=label_str)

<span class="hljs-meta">... </span>    <span class="hljs-keyword">return</span> {<span class="hljs-string">&quot;wer&quot;</span>: wer}`,wrap:!1}}),Cs=new Gs({props:{title:"훈련하기",local:"train",headingTag:"h2"}}),X=new gt({props:{pytorch:!0,tensorflow:!1,jax:!1,$$slots:{pytorch:[Zt]},$$scope:{ctx:C}}}),B=new Hl({props:{$$slots:{default:[Wt]},$$scope:{ctx:C}}}),Rs=new Gs({props:{title:"추론하기",local:"inference",headingTag:"h2"}}),vs=new T({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTJDJTIwQXVkaW8lMEElMEFkYXRhc2V0JTIwJTNEJTIwbG9hZF9kYXRhc2V0KCUyMlBvbHlBSSUyRm1pbmRzMTQlMjIlMkMlMjAlMjJlbi1VUyUyMiUyQyUyMHNwbGl0JTNEJTIydHJhaW4lMjIpJTBBZGF0YXNldCUyMCUzRCUyMGRhdGFzZXQuY2FzdF9jb2x1bW4oJTIyYXVkaW8lMjIlMkMlMjBBdWRpbyhzYW1wbGluZ19yYXRlJTNEMTYwMDApKSUwQXNhbXBsaW5nX3JhdGUlMjAlM0QlMjBkYXRhc2V0LmZlYXR1cmVzJTVCJTIyYXVkaW8lMjIlNUQuc2FtcGxpbmdfcmF0ZSUwQWF1ZGlvX2ZpbGUlMjAlM0QlMjBkYXRhc2V0JTVCMCU1RCU1QiUyMmF1ZGlvJTIyJTVEJTVCJTIycGF0aCUyMiU1RA==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset, Audio

<span class="hljs-meta">&gt;&gt;&gt; </span>dataset = load_dataset(<span class="hljs-string">&quot;PolyAI/minds14&quot;</span>, <span class="hljs-string">&quot;en-US&quot;</span>, split=<span class="hljs-string">&quot;train&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>dataset = dataset.cast_column(<span class="hljs-string">&quot;audio&quot;</span>, Audio(sampling_rate=<span class="hljs-number">16000</span>))
<span class="hljs-meta">&gt;&gt;&gt; </span>sampling_rate = dataset.features[<span class="hljs-string">&quot;audio&quot;</span>].sampling_rate
<span class="hljs-meta">&gt;&gt;&gt; </span>audio_file = dataset[<span class="hljs-number">0</span>][<span class="hljs-string">&quot;audio&quot;</span>][<span class="hljs-string">&quot;path&quot;</span>]`,wrap:!1}}),Ws=new T({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMHBpcGVsaW5lJTBBJTBBdHJhbnNjcmliZXIlMjAlM0QlMjBwaXBlbGluZSglMjJhdXRvbWF0aWMtc3BlZWNoLXJlY29nbml0aW9uJTIyJTJDJTIwbW9kZWwlM0QlMjJzdGV2aGxpdSUyRm15X2F3ZXNvbWVfYXNyX21pbmRzX21vZGVsJTIyKSUwQXRyYW5zY3JpYmVyKGF1ZGlvX2ZpbGUp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

<span class="hljs-meta">&gt;&gt;&gt; </span>transcriber = pipeline(<span class="hljs-string">&quot;automatic-speech-recognition&quot;</span>, model=<span class="hljs-string">&quot;stevhliu/my_awesome_asr_minds_model&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>transcriber(audio_file)
{<span class="hljs-string">&#x27;text&#x27;</span>: <span class="hljs-string">&#x27;I WOUD LIKE O SET UP JOINT ACOUNT WTH Y PARTNER&#x27;</span>}`,wrap:!1}}),E=new Hl({props:{$$slots:{default:[Vt]},$$scope:{ctx:C}}}),H=new gt({props:{pytorch:!0,tensorflow:!1,jax:!1,$$slots:{pytorch:[Gt]},$$scope:{ctx:C}}}),xs=new Rt({props:{source:"https://github.com/huggingface/transformers/blob/main/docs/source/ko/tasks/asr.md"}}),{c(){e=m("meta"),g=n(),r=m("p"),f=n(),M(w.$$.fragment),I=n(),M(Q.$$.fragment),k=n(),M(R.$$.fragment),v=n(),b=m("p"),b.textContent=G,Z=n(),$=m("p"),$.textContent=V,i=n(),_=m("ol"),_.innerHTML=N,x=n(),M(W.$$.fragment),c=n(),U=m("p"),U.textContent=Xs,Hs=n(),M(Y.$$.fragment),Ns=n(),z=m("p"),z.textContent=Nl,Ys=n(),M(A.$$.fragment),zs=n(),M(F.$$.fragment),As=n(),q=m("p"),q.innerHTML=Yl,Fs=n(),M(S.$$.fragment),qs=n(),D=m("p"),D.innerHTML=zl,Ss=n(),M(L.$$.fragment),Ds=n(),P=m("p"),P.textContent=Al,Ls=n(),M(O.$$.fragment),Ps=n(),K=m("p"),K.innerHTML=Fl,Os=n(),M(ss.$$.fragment),Ks=n(),ls=m("p"),ls.textContent=ql,sl=n(),M(ts.$$.fragment),ll=n(),as=m("p"),as.textContent=Sl,tl=n(),es=m("ul"),es.innerHTML=Dl,al=n(),M(ns.$$.fragment),el=n(),ps=m("p"),ps.textContent=Ll,nl=n(),M(rs.$$.fragment),pl=n(),cs=m("p"),cs.innerHTML=Pl,rl=n(),M(is.$$.fragment),cl=n(),ms=m("p"),ms.textContent=Ol,il=n(),M(os.$$.fragment),ml=n(),Ms=m("p"),Ms.textContent=Kl,ol=n(),hs=m("ol"),hs.innerHTML=st,Ml=n(),M(js.$$.fragment),hl=n(),us=m("p"),us.innerHTML=lt,jl=n(),M(ds.$$.fragment),ul=n(),ys=m("p"),ys.innerHTML=tt,dl=n(),Js=m("p"),Js.innerHTML=at,yl=n(),M(gs.$$.fragment),Jl=n(),fs=m("p"),fs.innerHTML=et,gl=n(),M(Us.$$.fragment),fl=n(),M(Ts.$$.fragment),Ul=n(),ws=m("p"),ws.innerHTML=nt,Tl=n(),M(bs.$$.fragment),wl=n(),$s=m("p"),$s.innerHTML=pt,bl=n(),M(_s.$$.fragment),$l=n(),Is=m("p"),Is.innerHTML=rt,_l=n(),M(Cs.$$.fragment),Il=n(),M(X.$$.fragment),Cl=n(),M(B.$$.fragment),Rl=n(),M(Rs.$$.fragment),kl=n(),ks=m("p"),ks.textContent=ct,Ql=n(),Qs=m("p"),Qs.textContent=it,vl=n(),M(vs.$$.fragment),Zl=n(),Zs=m("p"),Zs.innerHTML=mt,Wl=n(),M(Ws.$$.fragment),Vl=n(),M(E.$$.fragment),xl=n(),Vs=m("p"),Vs.innerHTML=ot,Gl=n(),M(H.$$.fragment),Xl=n(),M(xs.$$.fragment),Bl=n(),Bs=m("p"),this.h()},l(s){const l=$t("svelte-u9bgzb",document.head);e=o(l,"META",{name:!0,content:!0}),l.forEach(t),g=p(s),r=o(s,"P",{}),yt(r).forEach(t),f=p(s),h(w.$$.fragment,s),I=p(s),h(Q.$$.fragment,s),k=p(s),h(R.$$.fragment,s),v=p(s),b=o(s,"P",{"data-svelte-h":!0}),J(b)!=="svelte-1qlvl3y"&&(b.textContent=G),Z=p(s),$=o(s,"P",{"data-svelte-h":!0}),J($)!=="svelte-7oxnvp"&&($.textContent=V),i=p(s),_=o(s,"OL",{"data-svelte-h":!0}),J(_)!=="svelte-1ok1jy5"&&(_.innerHTML=N),x=p(s),h(W.$$.fragment,s),c=p(s),U=o(s,"P",{"data-svelte-h":!0}),J(U)!=="svelte-18iigii"&&(U.textContent=Xs),Hs=p(s),h(Y.$$.fragment,s),Ns=p(s),z=o(s,"P",{"data-svelte-h":!0}),J(z)!=="svelte-2mor9q"&&(z.textContent=Nl),Ys=p(s),h(A.$$.fragment,s),zs=p(s),h(F.$$.fragment,s),As=p(s),q=o(s,"P",{"data-svelte-h":!0}),J(q)!=="svelte-7q7xwh"&&(q.innerHTML=Yl),Fs=p(s),h(S.$$.fragment,s),qs=p(s),D=o(s,"P",{"data-svelte-h":!0}),J(D)!=="svelte-3148pn"&&(D.innerHTML=zl),Ss=p(s),h(L.$$.fragment,s),Ds=p(s),P=o(s,"P",{"data-svelte-h":!0}),J(P)!=="svelte-17o70r1"&&(P.textContent=Al),Ls=p(s),h(O.$$.fragment,s),Ps=p(s),K=o(s,"P",{"data-svelte-h":!0}),J(K)!=="svelte-1dp2qnq"&&(K.innerHTML=Fl),Os=p(s),h(ss.$$.fragment,s),Ks=p(s),ls=o(s,"P",{"data-svelte-h":!0}),J(ls)!=="svelte-1p9pg2d"&&(ls.textContent=ql),sl=p(s),h(ts.$$.fragment,s),ll=p(s),as=o(s,"P",{"data-svelte-h":!0}),J(as)!=="svelte-6aiy91"&&(as.textContent=Sl),tl=p(s),es=o(s,"UL",{"data-svelte-h":!0}),J(es)!=="svelte-1l53gx0"&&(es.innerHTML=Dl),al=p(s),h(ns.$$.fragment,s),el=p(s),ps=o(s,"P",{"data-svelte-h":!0}),J(ps)!=="svelte-1fm7wkp"&&(ps.textContent=Ll),nl=p(s),h(rs.$$.fragment,s),pl=p(s),cs=o(s,"P",{"data-svelte-h":!0}),J(cs)!=="svelte-e2ss04"&&(cs.innerHTML=Pl),rl=p(s),h(is.$$.fragment,s),cl=p(s),ms=o(s,"P",{"data-svelte-h":!0}),J(ms)!=="svelte-14tnwq5"&&(ms.textContent=Ol),il=p(s),h(os.$$.fragment,s),ml=p(s),Ms=o(s,"P",{"data-svelte-h":!0}),J(Ms)!=="svelte-10u1mcw"&&(Ms.textContent=Kl),ol=p(s),hs=o(s,"OL",{"data-svelte-h":!0}),J(hs)!=="svelte-bj7uax"&&(hs.innerHTML=st),Ml=p(s),h(js.$$.fragment,s),hl=p(s),us=o(s,"P",{"data-svelte-h":!0}),J(us)!=="svelte-vxgjmg"&&(us.innerHTML=lt),jl=p(s),h(ds.$$.fragment,s),ul=p(s),ys=o(s,"P",{"data-svelte-h":!0}),J(ys)!=="svelte-y3eg0c"&&(ys.innerHTML=tt),dl=p(s),Js=o(s,"P",{"data-svelte-h":!0}),J(Js)!=="svelte-pcjp4m"&&(Js.innerHTML=at),yl=p(s),h(gs.$$.fragment,s),Jl=p(s),fs=o(s,"P",{"data-svelte-h":!0}),J(fs)!=="svelte-o882aa"&&(fs.innerHTML=et),gl=p(s),h(Us.$$.fragment,s),fl=p(s),h(Ts.$$.fragment,s),Ul=p(s),ws=o(s,"P",{"data-svelte-h":!0}),J(ws)!=="svelte-1kx52w5"&&(ws.innerHTML=nt),Tl=p(s),h(bs.$$.fragment,s),wl=p(s),$s=o(s,"P",{"data-svelte-h":!0}),J($s)!=="svelte-i1fso8"&&($s.innerHTML=pt),bl=p(s),h(_s.$$.fragment,s),$l=p(s),Is=o(s,"P",{"data-svelte-h":!0}),J(Is)!=="svelte-15lq6yk"&&(Is.innerHTML=rt),_l=p(s),h(Cs.$$.fragment,s),Il=p(s),h(X.$$.fragment,s),Cl=p(s),h(B.$$.fragment,s),Rl=p(s),h(Rs.$$.fragment,s),kl=p(s),ks=o(s,"P",{"data-svelte-h":!0}),J(ks)!=="svelte-1annmqf"&&(ks.textContent=ct),Ql=p(s),Qs=o(s,"P",{"data-svelte-h":!0}),J(Qs)!=="svelte-18ieb63"&&(Qs.textContent=it),vl=p(s),h(vs.$$.fragment,s),Zl=p(s),Zs=o(s,"P",{"data-svelte-h":!0}),J(Zs)!=="svelte-12cj03s"&&(Zs.innerHTML=mt),Wl=p(s),h(Ws.$$.fragment,s),Vl=p(s),h(E.$$.fragment,s),xl=p(s),Vs=o(s,"P",{"data-svelte-h":!0}),J(Vs)!=="svelte-1olk0w9"&&(Vs.innerHTML=ot),Gl=p(s),h(H.$$.fragment,s),Xl=p(s),h(xs.$$.fragment,s),Bl=p(s),Bs=o(s,"P",{}),yt(Bs).forEach(t),this.h()},h(){Jt(e,"name","hf:doc:metadata"),Jt(e,"content",Bt)},m(s,l){_t(document.head,e),a(s,g,l),a(s,r,l),a(s,f,l),j(w,s,l),a(s,I,l),j(Q,s,l),a(s,k,l),j(R,s,l),a(s,v,l),a(s,b,l),a(s,Z,l),a(s,$,l),a(s,i,l),a(s,_,l),a(s,x,l),j(W,s,l),a(s,c,l),a(s,U,l),a(s,Hs,l),j(Y,s,l),a(s,Ns,l),a(s,z,l),a(s,Ys,l),j(A,s,l),a(s,zs,l),j(F,s,l),a(s,As,l),a(s,q,l),a(s,Fs,l),j(S,s,l),a(s,qs,l),a(s,D,l),a(s,Ss,l),j(L,s,l),a(s,Ds,l),a(s,P,l),a(s,Ls,l),j(O,s,l),a(s,Ps,l),a(s,K,l),a(s,Os,l),j(ss,s,l),a(s,Ks,l),a(s,ls,l),a(s,sl,l),j(ts,s,l),a(s,ll,l),a(s,as,l),a(s,tl,l),a(s,es,l),a(s,al,l),j(ns,s,l),a(s,el,l),a(s,ps,l),a(s,nl,l),j(rs,s,l),a(s,pl,l),a(s,cs,l),a(s,rl,l),j(is,s,l),a(s,cl,l),a(s,ms,l),a(s,il,l),j(os,s,l),a(s,ml,l),a(s,Ms,l),a(s,ol,l),a(s,hs,l),a(s,Ml,l),j(js,s,l),a(s,hl,l),a(s,us,l),a(s,jl,l),j(ds,s,l),a(s,ul,l),a(s,ys,l),a(s,dl,l),a(s,Js,l),a(s,yl,l),j(gs,s,l),a(s,Jl,l),a(s,fs,l),a(s,gl,l),j(Us,s,l),a(s,fl,l),j(Ts,s,l),a(s,Ul,l),a(s,ws,l),a(s,Tl,l),j(bs,s,l),a(s,wl,l),a(s,$s,l),a(s,bl,l),j(_s,s,l),a(s,$l,l),a(s,Is,l),a(s,_l,l),j(Cs,s,l),a(s,Il,l),j(X,s,l),a(s,Cl,l),j(B,s,l),a(s,Rl,l),j(Rs,s,l),a(s,kl,l),a(s,ks,l),a(s,Ql,l),a(s,Qs,l),a(s,vl,l),j(vs,s,l),a(s,Zl,l),a(s,Zs,l),a(s,Wl,l),j(Ws,s,l),a(s,Vl,l),j(E,s,l),a(s,xl,l),a(s,Vs,l),a(s,Gl,l),j(H,s,l),a(s,Xl,l),j(xs,s,l),a(s,Bl,l),a(s,Bs,l),El=!0},p(s,[l]){const Mt={};l&2&&(Mt.$$scope={dirty:l,ctx:s}),W.$set(Mt);const ht={};l&2&&(ht.$$scope={dirty:l,ctx:s}),X.$set(ht);const jt={};l&2&&(jt.$$scope={dirty:l,ctx:s}),B.$set(jt);const ut={};l&2&&(ut.$$scope={dirty:l,ctx:s}),E.$set(ut);const dt={};l&2&&(dt.$$scope={dirty:l,ctx:s}),H.$set(dt)},i(s){El||(u(w.$$.fragment,s),u(Q.$$.fragment,s),u(R.$$.fragment,s),u(W.$$.fragment,s),u(Y.$$.fragment,s),u(A.$$.fragment,s),u(F.$$.fragment,s),u(S.$$.fragment,s),u(L.$$.fragment,s),u(O.$$.fragment,s),u(ss.$$.fragment,s),u(ts.$$.fragment,s),u(ns.$$.fragment,s),u(rs.$$.fragment,s),u(is.$$.fragment,s),u(os.$$.fragment,s),u(js.$$.fragment,s),u(ds.$$.fragment,s),u(gs.$$.fragment,s),u(Us.$$.fragment,s),u(Ts.$$.fragment,s),u(bs.$$.fragment,s),u(_s.$$.fragment,s),u(Cs.$$.fragment,s),u(X.$$.fragment,s),u(B.$$.fragment,s),u(Rs.$$.fragment,s),u(vs.$$.fragment,s),u(Ws.$$.fragment,s),u(E.$$.fragment,s),u(H.$$.fragment,s),u(xs.$$.fragment,s),El=!0)},o(s){d(w.$$.fragment,s),d(Q.$$.fragment,s),d(R.$$.fragment,s),d(W.$$.fragment,s),d(Y.$$.fragment,s),d(A.$$.fragment,s),d(F.$$.fragment,s),d(S.$$.fragment,s),d(L.$$.fragment,s),d(O.$$.fragment,s),d(ss.$$.fragment,s),d(ts.$$.fragment,s),d(ns.$$.fragment,s),d(rs.$$.fragment,s),d(is.$$.fragment,s),d(os.$$.fragment,s),d(js.$$.fragment,s),d(ds.$$.fragment,s),d(gs.$$.fragment,s),d(Us.$$.fragment,s),d(Ts.$$.fragment,s),d(bs.$$.fragment,s),d(_s.$$.fragment,s),d(Cs.$$.fragment,s),d(X.$$.fragment,s),d(B.$$.fragment,s),d(Rs.$$.fragment,s),d(vs.$$.fragment,s),d(Ws.$$.fragment,s),d(E.$$.fragment,s),d(H.$$.fragment,s),d(xs.$$.fragment,s),El=!1},d(s){s&&(t(g),t(r),t(f),t(I),t(k),t(v),t(b),t(Z),t($),t(i),t(_),t(x),t(c),t(U),t(Hs),t(Ns),t(z),t(Ys),t(zs),t(As),t(q),t(Fs),t(qs),t(D),t(Ss),t(Ds),t(P),t(Ls),t(Ps),t(K),t(Os),t(Ks),t(ls),t(sl),t(ll),t(as),t(tl),t(es),t(al),t(el),t(ps),t(nl),t(pl),t(cs),t(rl),t(cl),t(ms),t(il),t(ml),t(Ms),t(ol),t(hs),t(Ml),t(hl),t(us),t(jl),t(ul),t(ys),t(dl),t(Js),t(yl),t(Jl),t(fs),t(gl),t(fl),t(Ul),t(ws),t(Tl),t(wl),t($s),t(bl),t($l),t(Is),t(_l),t(Il),t(Cl),t(Rl),t(kl),t(ks),t(Ql),t(Qs),t(vl),t(Zl),t(Zs),t(Wl),t(Vl),t(xl),t(Vs),t(Gl),t(Xl),t(Bl),t(Bs)),t(e),y(w,s),y(Q,s),y(R,s),y(W,s),y(Y,s),y(A,s),y(F,s),y(S,s),y(L,s),y(O,s),y(ss,s),y(ts,s),y(ns,s),y(rs,s),y(is,s),y(os,s),y(js,s),y(ds,s),y(gs,s),y(Us,s),y(Ts,s),y(bs,s),y(_s,s),y(Cs,s),y(X,s),y(B,s),y(Rs,s),y(vs,s),y(Ws,s),y(E,s),y(H,s),y(xs,s)}}}const Bt='{"title":"자동 음성 인식","local":"automatic-speech-recognition","sections":[{"title":"MInDS-14 데이터 세트 가져오기","local":"load-minds-14-dataset","sections":[],"depth":2},{"title":"전처리","local":"preprocess","sections":[],"depth":2},{"title":"평가하기","local":"evaluate","sections":[],"depth":2},{"title":"훈련하기","local":"train","sections":[],"depth":2},{"title":"추론하기","local":"inference","sections":[],"depth":2}],"depth":1}';function Et(C){return Tt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Dt extends wt{constructor(e){super(),bt(this,e,Et,Xt,Ut,{})}}export{Dt as component};
