import{s as Ce,a as ge,n as Ie,o as Ae}from"../chunks/scheduler.cd324960.js";import{S as $e,i as xe,e as p,s as a,c as W,h as Ge,a as i,d as l,b as n,f as oe,g as Z,j as o,k as m,l as We,m as s,n as _,t as v,o as B,p as E}from"../chunks/index.d5c3adcc.js";import{C as Ze,H as _e,E as ve}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.821bf6cb.js";import{C as Me}from"../chunks/CodeBlock.c7a4ec47.js";function Be(re){let r,Q,k,R,c,Y,u,S,y,me=`Теперь, когда мы настроили модель Whisper для распознавания речи на Дивехи, давайте продолжим и создадим демо с использованием <a href="https://gradio.app" rel="nofollow">Gradio</a>,
чтобы показать ее сообществу!`,V,w,ce=`Первое, что нам нужно сделать, это загрузить дообученную модель, используя класс <code>pipeline()</code> - это уже знакомо из раздела о <a href="asr_models">предварительно обученных моделях</a>.
Вы можете заменить идентификатор модели (<code>model_id</code>) на пространство имен вашей дообученной модели на Hugging Face Hub, или на одну из
предобученных <a href="https://huggingface.co/models?sort=downloads&amp;search=openai%2Fwhisper-" rel="nofollow">моделей Whisper</a>  для выполнения распознавания речи без настройки (zero-shot):`,z,d,q,j,ue=`Во-вторых, мы определим функцию, которая принимает путь к аудиофайлу в качестве входных данных и передает его через конвейер (<code>pipeline</code>).
Здесь конвейер автоматически заботится о загрузке аудиофайла, пересэмплировании его до правильной частоты дискретизации и выполнении вывода модели.
Затем мы просто вернем преобразованный текст в качестве выходных данных функции. Чтобы обеспечить возможность нашей модели обрабатывать аудиофайлы
произвольной длины, мы включим <em>фрагментирование</em> (разбиение на фрагменты), как описано в разделе о <a href="asr_models">предварительно обученных моделях</a>:`,X,U,N,h,ye=`Мы будем использовать функцию <a href="https://gradio.app/docs/#blocks" rel="nofollow">blocks</a> в Gradio, чтобы создать две вкладки в нашем демо: одну
для транскрипции с микрофона и другую для загрузки файла.`,F,f,L,J,we="Наконец, мы запускаем демонстрацию Gradio, используя два только что определенных блока:",P,T,K,b,de="Это запустит демонстрацию Gradio, подобную той, которая работает на пространстве Hugging Face:",D,M,je,O,C,Ue=`Если вы хотите разместить своё демо на платформе Hugging Face Hub, вы можете использовать этот Space в качестве шаблона для своей модели.
Для этого выполните следующие шаги:`,ee,g,he='Щелкните по ссылке, чтобы дублировать шаблон демо в свою учетную запись: <a href="https://huggingface.co/spaces/course-demos/whisper-small?duplicate=true" rel="nofollow">https://huggingface.co/spaces/course-demos/whisper-small?duplicate=true</a>',te,I,fe="Рекомендуем дать своему Space имя, подобное имени вашей обученной модели (например, whisper-small-dv-demo) и установить видимость на “Public” (Публичный).",le,A,Je=`После дублирования Space в вашей учетной записи перейдите в раздел “Files and versions” -> “app.py” -> “edit”. Затем измените идентификатор модели
на идентификатор вашей обученной модели(строка 6). Прокрутите страницу вниз и нажмите “Commit changes to main” (Зафиксировать изменения в главной версии).
Демо перезагрузится, используя вашу обученную модель. Теперь вы можете поделиться этим демо со своими друзьями и родственниками, чтобы они могли использовать
модель, которую вы обучили!`,se,$,Te='Вы можете посмотреть наш видеоурок, чтобы лучше понять, как продублировать Space: <a href="https://www.youtube.com/watch?v=VQYuvl6-9VE" rel="nofollow">YouTube Video</a>',ae,x,be="Ожидаем с нетерпением увидеть ваши демо на Hugging Face Hub!",ne,G,pe,H,ie;return c=new Ze({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),u=new _e({props:{title:"Создание Демо с Gradio",local:"создание-демо-с-gradio",headingTag:"h1"}}),d=new Me({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMHBpcGVsaW5lJTBBJTBBbW9kZWxfaWQlMjAlM0QlMjAlMjJzYW5jaGl0LWdhbmRoaSUyRndoaXNwZXItc21hbGwtZHYlMjIlMjAlMjAlMjMlMjB1cGRhdGUlMjB3aXRoJTIweW91ciUyMG1vZGVsJTIwaWQlMEFwaXBlJTIwJTNEJTIwcGlwZWxpbmUoJTIyYXV0b21hdGljLXNwZWVjaC1yZWNvZ25pdGlvbiUyMiUyQyUyMG1vZGVsJTNEbW9kZWxfaWQp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

model_id = <span class="hljs-string">&quot;sanchit-gandhi/whisper-small-dv&quot;</span>  <span class="hljs-comment"># update with your model id</span>
pipe = pipeline(<span class="hljs-string">&quot;automatic-speech-recognition&quot;</span>, model=model_id)`,wrap:!1}}),U=new Me({props:{code:"ZGVmJTIwdHJhbnNjcmliZV9zcGVlY2goZmlsZXBhdGgpJTNBJTBBJTIwJTIwJTIwJTIwb3V0cHV0JTIwJTNEJTIwcGlwZSglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmaWxlcGF0aCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG1heF9uZXdfdG9rZW5zJTNEMjU2JTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZ2VuZXJhdGVfa3dhcmdzJTNEJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIydGFzayUyMiUzQSUyMCUyMnRyYW5zY3JpYmUlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJsYW5ndWFnZSUyMiUzQSUyMCUyMnNpbmhhbGVzZSUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUyQyUyMCUyMCUyMyUyMHVwZGF0ZSUyMHdpdGglMjB0aGUlMjBsYW5ndWFnZSUyMHlvdSd2ZSUyMGZpbmUtdHVuZWQlMjBvbiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGNodW5rX2xlbmd0aF9zJTNEMzAlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBiYXRjaF9zaXplJTNEOCUyQyUwQSUyMCUyMCUyMCUyMCklMEElMjAlMjAlMjAlMjByZXR1cm4lMjBvdXRwdXQlNUIlMjJ0ZXh0JTIyJTVE",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">transcribe_speech</span>(<span class="hljs-params">filepath</span>):
    output = pipe(
        filepath,
        max_new_tokens=<span class="hljs-number">256</span>,
        generate_kwargs={
            <span class="hljs-string">&quot;task&quot;</span>: <span class="hljs-string">&quot;transcribe&quot;</span>,
            <span class="hljs-string">&quot;language&quot;</span>: <span class="hljs-string">&quot;sinhalese&quot;</span>,
        },  <span class="hljs-comment"># update with the language you&#x27;ve fine-tuned on</span>
        chunk_length_s=<span class="hljs-number">30</span>,
        batch_size=<span class="hljs-number">8</span>,
    )
    <span class="hljs-keyword">return</span> output[<span class="hljs-string">&quot;text&quot;</span>]`,wrap:!1}}),f=new Me({props:{code:"aW1wb3J0JTIwZ3JhZGlvJTIwYXMlMjBnciUwQSUwQWRlbW8lMjAlM0QlMjBnci5CbG9ja3MoKSUwQSUwQW1pY190cmFuc2NyaWJlJTIwJTNEJTIwZ3IuSW50ZXJmYWNlKCUwQSUyMCUyMCUyMCUyMGZuJTNEdHJhbnNjcmliZV9zcGVlY2glMkMlMEElMjAlMjAlMjAlMjBpbnB1dHMlM0Rnci5BdWRpbyhzb3VyY2UlM0QlMjJtaWNyb3Bob25lJTIyJTJDJTIwdHlwZSUzRCUyMmZpbGVwYXRoJTIyKSUyQyUwQSUyMCUyMCUyMCUyMG91dHB1dHMlM0Rnci5vdXRwdXRzLlRleHRib3goKSUyQyUwQSklMEElMEFmaWxlX3RyYW5zY3JpYmUlMjAlM0QlMjBnci5JbnRlcmZhY2UoJTBBJTIwJTIwJTIwJTIwZm4lM0R0cmFuc2NyaWJlX3NwZWVjaCUyQyUwQSUyMCUyMCUyMCUyMGlucHV0cyUzRGdyLkF1ZGlvKHNvdXJjZSUzRCUyMnVwbG9hZCUyMiUyQyUyMHR5cGUlM0QlMjJmaWxlcGF0aCUyMiklMkMlMEElMjAlMjAlMjAlMjBvdXRwdXRzJTNEZ3Iub3V0cHV0cy5UZXh0Ym94KCklMkMlMEEp",highlighted:`<span class="hljs-keyword">import</span> gradio <span class="hljs-keyword">as</span> gr

demo = gr.Blocks()

mic_transcribe = gr.Interface(
    fn=transcribe_speech,
    inputs=gr.Audio(source=<span class="hljs-string">&quot;microphone&quot;</span>, <span class="hljs-built_in">type</span>=<span class="hljs-string">&quot;filepath&quot;</span>),
    outputs=gr.outputs.Textbox(),
)

file_transcribe = gr.Interface(
    fn=transcribe_speech,
    inputs=gr.Audio(source=<span class="hljs-string">&quot;upload&quot;</span>, <span class="hljs-built_in">type</span>=<span class="hljs-string">&quot;filepath&quot;</span>),
    outputs=gr.outputs.Textbox(),
)`,wrap:!1}}),T=new Me({props:{code:"d2l0aCUyMGRlbW8lM0ElMEElMjAlMjAlMjAlMjBnci5UYWJiZWRJbnRlcmZhY2UoJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCbWljX3RyYW5zY3JpYmUlMkMlMjBmaWxlX3RyYW5zY3JpYmUlNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUIlMjJUcmFuc2NyaWJlJTIwTWljcm9waG9uZSUyMiUyQyUyMCUyMlRyYW5zY3JpYmUlMjBBdWRpbyUyMEZpbGUlMjIlNUQlMkMlMEElMjAlMjAlMjAlMjApJTBBJTBBZGVtby5sYXVuY2goZGVidWclM0RUcnVlKQ==",highlighted:`<span class="hljs-keyword">with</span> demo:
    gr.TabbedInterface(
        [mic_transcribe, file_transcribe],
        [<span class="hljs-string">&quot;Transcribe Microphone&quot;</span>, <span class="hljs-string">&quot;Transcribe Audio File&quot;</span>],
    )

demo.launch(debug=<span class="hljs-literal">True</span>)`,wrap:!1}}),G=new ve({props:{source:"https://github.com/huggingface/audio-transformers-course/blob/main/chapters/ru/chapter5/demo.mdx"}}),{c(){r=p("meta"),Q=a(),k=p("p"),R=a(),W(c.$$.fragment),Y=a(),W(u.$$.fragment),S=a(),y=p("p"),y.innerHTML=me,V=a(),w=p("p"),w.innerHTML=ce,z=a(),W(d.$$.fragment),q=a(),j=p("p"),j.innerHTML=ue,X=a(),W(U.$$.fragment),N=a(),h=p("p"),h.innerHTML=ye,F=a(),W(f.$$.fragment),L=a(),J=p("p"),J.textContent=we,P=a(),W(T.$$.fragment),K=a(),b=p("p"),b.textContent=de,D=a(),M=p("iframe"),O=a(),C=p("p"),C.textContent=Ue,ee=a(),g=p("p"),g.innerHTML=he,te=a(),I=p("p"),I.textContent=fe,le=a(),A=p("p"),A.textContent=Je,se=a(),$=p("p"),$.innerHTML=Te,ae=a(),x=p("p"),x.textContent=be,ne=a(),W(G.$$.fragment),pe=a(),H=p("p"),this.h()},l(e){const t=Ge("svelte-u9bgzb",document.head);r=i(t,"META",{name:!0,content:!0}),t.forEach(l),Q=n(e),k=i(e,"P",{}),oe(k).forEach(l),R=n(e),Z(c.$$.fragment,e),Y=n(e),Z(u.$$.fragment,e),S=n(e),y=i(e,"P",{"data-svelte-h":!0}),o(y)!=="svelte-lgj7fa"&&(y.innerHTML=me),V=n(e),w=i(e,"P",{"data-svelte-h":!0}),o(w)!=="svelte-1saak9b"&&(w.innerHTML=ce),z=n(e),Z(d.$$.fragment,e),q=n(e),j=i(e,"P",{"data-svelte-h":!0}),o(j)!=="svelte-1cs2qoc"&&(j.innerHTML=ue),X=n(e),Z(U.$$.fragment,e),N=n(e),h=i(e,"P",{"data-svelte-h":!0}),o(h)!=="svelte-fs7m8d"&&(h.innerHTML=ye),F=n(e),Z(f.$$.fragment,e),L=n(e),J=i(e,"P",{"data-svelte-h":!0}),o(J)!=="svelte-tank3z"&&(J.textContent=we),P=n(e),Z(T.$$.fragment,e),K=n(e),b=i(e,"P",{"data-svelte-h":!0}),o(b)!=="svelte-1js4r14"&&(b.textContent=de),D=n(e),M=i(e,"IFRAME",{src:!0,frameborder:!0,height:!0,title:!0,class:!0,allow:!0,sandbox:!0}),oe(M).forEach(l),O=n(e),C=i(e,"P",{"data-svelte-h":!0}),o(C)!=="svelte-1ehqm3b"&&(C.textContent=Ue),ee=n(e),g=i(e,"P",{"data-svelte-h":!0}),o(g)!=="svelte-1wy1h5v"&&(g.innerHTML=he),te=n(e),I=i(e,"P",{"data-svelte-h":!0}),o(I)!=="svelte-n717jv"&&(I.textContent=fe),le=n(e),A=i(e,"P",{"data-svelte-h":!0}),o(A)!=="svelte-1m0nxlc"&&(A.textContent=Je),se=n(e),$=i(e,"P",{"data-svelte-h":!0}),o($)!=="svelte-lzxgha"&&($.innerHTML=Te),ae=n(e),x=i(e,"P",{"data-svelte-h":!0}),o(x)!=="svelte-1nmgitz"&&(x.textContent=be),ne=n(e),Z(G.$$.fragment,e),pe=n(e),H=i(e,"P",{}),oe(H).forEach(l),this.h()},h(){m(r,"name","hf:doc:metadata"),m(r,"content",Ee),ge(M.src,je="https://course-demos-whisper-small.hf.space")||m(M,"src",je),m(M,"frameborder","0"),m(M,"height","450"),m(M,"title","Gradio app"),m(M,"class","container p-0 flex-grow space-iframe"),m(M,"allow","accelerometer; ambient-light-sensor; autoplay; battery; camera; document-domain; encrypted-media; fullscreen; geolocation; gyroscope; layout-animations; legacy-image-formats; magnetometer; microphone; midi; oversized-images; payment; picture-in-picture; publickey-credentials-get; sync-xhr; usb; vr ; wake-lock; xr-spatial-tracking"),m(M,"sandbox","allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-downloads")},m(e,t){We(document.head,r),s(e,Q,t),s(e,k,t),s(e,R,t),_(c,e,t),s(e,Y,t),_(u,e,t),s(e,S,t),s(e,y,t),s(e,V,t),s(e,w,t),s(e,z,t),_(d,e,t),s(e,q,t),s(e,j,t),s(e,X,t),_(U,e,t),s(e,N,t),s(e,h,t),s(e,F,t),_(f,e,t),s(e,L,t),s(e,J,t),s(e,P,t),_(T,e,t),s(e,K,t),s(e,b,t),s(e,D,t),s(e,M,t),s(e,O,t),s(e,C,t),s(e,ee,t),s(e,g,t),s(e,te,t),s(e,I,t),s(e,le,t),s(e,A,t),s(e,se,t),s(e,$,t),s(e,ae,t),s(e,x,t),s(e,ne,t),_(G,e,t),s(e,pe,t),s(e,H,t),ie=!0},p:Ie,i(e){ie||(v(c.$$.fragment,e),v(u.$$.fragment,e),v(d.$$.fragment,e),v(U.$$.fragment,e),v(f.$$.fragment,e),v(T.$$.fragment,e),v(G.$$.fragment,e),ie=!0)},o(e){B(c.$$.fragment,e),B(u.$$.fragment,e),B(d.$$.fragment,e),B(U.$$.fragment,e),B(f.$$.fragment,e),B(T.$$.fragment,e),B(G.$$.fragment,e),ie=!1},d(e){e&&(l(Q),l(k),l(R),l(Y),l(S),l(y),l(V),l(w),l(z),l(q),l(j),l(X),l(N),l(h),l(F),l(L),l(J),l(P),l(K),l(b),l(D),l(M),l(O),l(C),l(ee),l(g),l(te),l(I),l(le),l(A),l(se),l($),l(ae),l(x),l(ne),l(pe),l(H)),l(r),E(c,e),E(u,e),E(d,e),E(U,e),E(f,e),E(T,e),E(G,e)}}}const Ee='{"title":"Создание Демо с Gradio","local":"создание-демо-с-gradio","sections":[],"depth":1}';function ke(re){return Ae(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Se extends $e{constructor(r){super(),xe(this,r,ke,Be,Ce,{})}}export{Se as component};
