<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>OPAC</title>
    <link>https://opac.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Fri, 12 Jun 2026 15:14:10 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>도시쥐</managingEditor>
    <image>
      <title>OPAC</title>
      <url>https://tistory1.daumcdn.net/tistory/5228164/attach/109a291cde95478e8a0cae8d05096394</url>
      <link>https://opac.tistory.com</link>
    </image>
    <item>
      <title>TensorRT란?</title>
      <link>https://opac.tistory.com/6</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 NVIDIA의 TensorRT에 대해 알아보려고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;tensorrt-logo.png&quot; data-origin-width=&quot;1191&quot; data-origin-height=&quot;552&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbHsDt/btrunOYSdEQ/0jAR6LdgpjFMDM7mh4ZKMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbHsDt/btrunOYSdEQ/0jAR6LdgpjFMDM7mh4ZKMK/img.png&quot; data-alt=&quot;NVIDIA의 TensorRT&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbHsDt/btrunOYSdEQ/0jAR6LdgpjFMDM7mh4ZKMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbHsDt%2FbtrunOYSdEQ%2F0jAR6LdgpjFMDM7mh4ZKMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;683&quot; height=&quot;317&quot; data-filename=&quot;tensorrt-logo.png&quot; data-origin-width=&quot;1191&quot; data-origin-height=&quot;552&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;NVIDIA의 TensorRT&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;TensorRT란, NVIDIA사에서 개발한 딥러닝 연산 최적화 엔진&lt;/b&gt;입니다. 기존 딥러닝 프레임워크(PyTorch, TensorFlow, Caffe 등)가 네트워크를 구성하고 이를 모델로 만들었다면, TensorRT는 이러한 모델을 &lt;b&gt;자체적인 여러가지 최적화 과정&lt;/b&gt;을 거쳐 NVIDIA의 GPU, DLA등에 효율적으로 싣는 역할을 합니다. 또한 최적화 과정을 거쳐 만들어낸 '엔진'을 binary 형태로 저장(&lt;b&gt;blob의 형태로 저장합니다&lt;/b&gt;)하고 사용할때 마다 '엔진'을 deserialize하여 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;blob이란?&quot; href=&quot;https://opac.tistory.com/5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://opac.tistory.com/5&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1646321187501&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;blob 이란?&quot; data-og-description=&quot;Blob이란 무엇일까요? Binary Large Object의 약자로 어떠한 큰 객체를 Binary(2진수) 형태로 저장하는 데 사용합니다. 독립체(entity)로 된 2진수의 집합이라고 볼 수 있습니다. 그럼 여기서 2진수로 된 객&quot; data-og-host=&quot;opac.tistory.com&quot; data-og-source-url=&quot;https://opac.tistory.com/5&quot; data-og-url=&quot;https://opac.tistory.com/5&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/HBM8k/hyNAWP7VPu/WB7r8WnGMkQ13QCOLVLRz0/img.jpg?width=299&amp;amp;height=168&amp;amp;face=0_0_299_168,https://scrap.kakaocdn.net/dn/sQt7r/hyNBSyyY6h/A4RTosb4G33GVzCnfa4PL0/img.jpg?width=299&amp;amp;height=168&amp;amp;face=0_0_299_168,https://scrap.kakaocdn.net/dn/KOuOr/hyNBTRMPK4/OMB96rTyql7eqPt08kKNQ1/img.jpg?width=233&amp;amp;height=228&amp;amp;face=0_0_233_228&quot;&gt;&lt;a href=&quot;https://opac.tistory.com/5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://opac.tistory.com/5&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/HBM8k/hyNAWP7VPu/WB7r8WnGMkQ13QCOLVLRz0/img.jpg?width=299&amp;amp;height=168&amp;amp;face=0_0_299_168,https://scrap.kakaocdn.net/dn/sQt7r/hyNBSyyY6h/A4RTosb4G33GVzCnfa4PL0/img.jpg?width=299&amp;amp;height=168&amp;amp;face=0_0_299_168,https://scrap.kakaocdn.net/dn/KOuOr/hyNBTRMPK4/OMB96rTyql7eqPt08kKNQ1/img.jpg?width=233&amp;amp;height=228&amp;amp;face=0_0_233_228');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;blob 이란?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Blob이란 무엇일까요? Binary Large Object의 약자로 어떠한 큰 객체를 Binary(2진수) 형태로 저장하는 데 사용합니다. 독립체(entity)로 된 2진수의 집합이라고 볼 수 있습니다. 그럼 여기서 2진수로 된 객&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;opac.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;앞으로 블로그에서 기존 딥러닝 프레임워크(PyTorch, TensorFlow등)을 거치지 않고 직접 (학습된 가중치를 따로 가져와야하지만..) TensorRT API를 통한 TensorRT 프로그래밍도 다룰 예정입니다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TensorRT는 여러가지 최적화 기법을 사용해 딥러닝 모델을 최적화 시켜 연산속도를 향상시킵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TensorRT에서 이용하는 대표적인 최적화 기법에 대해 몇가지 소개하자면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. Graph Optimization&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;graph optimization.png&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;263&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhwQSC/btruyMLjwlm/qSf58LjMAjgLAOy1fMqe01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhwQSC/btruyMLjwlm/qSf58LjMAjgLAOy1fMqe01/img.png&quot; data-alt=&quot;TensorRT Graph Optimization&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhwQSC/btruyMLjwlm/qSf58LjMAjgLAOy1fMqe01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdhwQSC%2FbtruyMLjwlm%2FqSf58LjMAjgLAOy1fMqe01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;984&quot; height=&quot;263&quot; data-filename=&quot;graph optimization.png&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;263&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;TensorRT Graph Optimization&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TensorRT에 적용되는 Graph Optimization으로 여러단계로 설정되어 있는 Layer들을 Layer Fusion과 Tensor Fusion을 통해 '동시에' 연산하여 속도를 향상 시킵니다. 자세히는 Layer Fusion은 Vertical Fusion과 Horizontal Fusion 그리고 Tensor Fusion을 통해 Model Graph를 단순화 시키고 모델의 Layer개수가 &lt;b&gt;크게 감소&lt;/b&gt;하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;tensorrt_log.PNG&quot; data-origin-width=&quot;889&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qAZhe/btruqFGX3q2/2gxCsgmz9xu7ma8zb88KfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qAZhe/btruqFGX3q2/2gxCsgmz9xu7ma8zb88KfK/img.png&quot; data-alt=&quot;TensorRT Optimization LOG기록&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qAZhe/btruqFGX3q2/2gxCsgmz9xu7ma8zb88KfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqAZhe%2FbtruqFGX3q2%2F2gxCsgmz9xu7ma8zb88KfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;889&quot; height=&quot;121&quot; data-filename=&quot;tensorrt_log.PNG&quot; data-origin-width=&quot;889&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;TensorRT Optimization LOG기록&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 로그는 실제 TensorRT 엔진을 생성할 때 나오는 &lt;b&gt;로그&lt;/b&gt;입니다. Layer fusion등을 통해 Layer수가 줄어드는 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. Quantization &amp;amp; Precision Calibration&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;quantization.png&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;279&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1QsUW/btruoLtlck0/PtFr7L4yijA8jp8cUHKoX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1QsUW/btruoLtlck0/PtFr7L4yijA8jp8cUHKoX1/img.png&quot; data-alt=&quot;TensorRT Quantization &amp;amp;amp;amp;amp; Calibration&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1QsUW/btruoLtlck0/PtFr7L4yijA8jp8cUHKoX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1QsUW%2FbtruoLtlck0%2FPtFr7L4yijA8jp8cUHKoX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;910&quot; height=&quot;279&quot; data-filename=&quot;quantization.png&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;279&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;TensorRT Quantization &amp;amp;amp;amp; Calibration&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TensorRT는 자체적으로 FP16, INT8 datatype까지의 reduced Precision 기술을 지원합니다. 낮은 Precision의 Network일수록 당연하게 data의 크기 및 weight의 bit수가 작기 때문에 빠르고 효율적인 연산이 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이를테면, weight를 표현하는 bit수가 작아질수록 DRAM에서 GPU가 읽어와야 할 &lt;b&gt;데이터의 크기는 줄어들 것&lt;/b&gt;입니다. 이러한 &lt;b&gt;Data Movement가 줄어들면 energy consumption&lt;/b&gt;이 줄어들 수 있습니다. 또한 실제 연산시간도 줄일 수 있을 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;dram_read.PNG&quot; data-origin-width=&quot;1079&quot; data-origin-height=&quot;577&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GqoiU/btruokwAAKq/yqV8skkOWkFMNJOYUSAHz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GqoiU/btruokwAAKq/yqV8skkOWkFMNJOYUSAHz1/img.png&quot; data-alt=&quot;Bit-Precision에 따른 Operation별 Energy Cost와 Area Cost&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GqoiU/btruokwAAKq/yqV8skkOWkFMNJOYUSAHz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGqoiU%2FbtruokwAAKq%2FyqV8skkOWkFMNJOYUSAHz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;665&quot; height=&quot;356&quot; data-filename=&quot;dram_read.PNG&quot; data-origin-width=&quot;1079&quot; data-origin-height=&quot;577&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Bit-Precision에 따른 Operation별 Energy Cost와 Area Cost&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 차트는 딥러닝 모델의 대부분을 이루고 있는 MAC연산과 DRAM에서 데이터를 불러올 때 요구되는 &lt;b&gt;Energy Cost&lt;/b&gt;와 &lt;b&gt;Area Cost&lt;/b&gt;를 나타낸 표입니다. 표에서 보시는바와 같이 Add연산의 경우 bit수에 따라 약 2배씩, Multiply연산과 DRAM Read연산의 경우 bit수에 따라 &lt;b&gt;지수적으로&lt;/b&gt; &lt;b&gt;증가&lt;/b&gt;하는 것을 볼 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TensorRT는 &lt;b&gt;INT8&lt;/b&gt;과 같이 Accuracy-drop이 크게 예상되는 네트워크에서는&lt;b&gt; Calibration&lt;/b&gt;을 지원합니다. 종류는 EntropyCalibrator, EntropyCalibrator2를 지원하고 이를 이용해 &lt;b&gt;Quantization&lt;/b&gt;(양자화)를 수행할 때 weight와 intermediate tensor들의 정보 손실의 &lt;b&gt;최소화&lt;/b&gt; 할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이와 같이 TensorRT에서는 INT8까지의 Quantization을 지원하여 딥러닝 모델을 Energy-efficient하게 연산을 더욱 효율적으로 처리할 수 있게되는 것입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. Kernel Auto-tuning&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TensorRT는 사용하는 플랫폼별로 엔진을 &lt;b&gt;따로&amp;nbsp;생성&lt;/b&gt;해줘야 합니다. 예를들어, Jetson AGX Xavier 보드에서 생성한 엔진은 NX Xavier 보드에서는 &lt;b&gt;실행할 수 없는&lt;/b&gt; 것입니다. 이러한 이유는 TensorRT가 NVIDIA에서 제공하는 다양한 플랫폼과 아키텍쳐에 맞는 Runtime을 &lt;b&gt;따로 생성&lt;/b&gt;해주기 때문입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TensorRT는 각기 다른 플랫폼에서 engine의 개수, 아키텍쳐, 메모리등 최적의 kernel을 찾아서 &lt;b&gt;선택적으로 엔진을 생성&lt;/b&gt;해주게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. Dynamic Tensor Memory &amp;amp; Multi-stream execution&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자체적인 Memory Management 시스템으로 footprint를 줄여 데이터의 Reuse기회를 늘려줄 수 있는 Dynamic tensor memory기능이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CUDA Stream&lt;/b&gt;기술을 활용해서 &lt;b&gt;여러개의 input stream을 스케쥴링을 통해 최적의 병렬처리 효율&lt;/b&gt;을 만들어 낼 수 잇습니다. 이를 &lt;b&gt;Multi-stream execution&lt;/b&gt;기술이라고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이상으로 TensorRT에 대한 설명을 마치겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추후 TensorRT API를 통한 TensorRT 프로그래밍에 대해서도 많은 관심 부탁드립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;*올바른 피드백은 언제나 환영입니다.&lt;/p&gt;</description>
      <category>기초 지식</category>
      <category>nVidia</category>
      <category>objectdetection</category>
      <category>tensorrt</category>
      <category>딥러닝</category>
      <category>엔비디아</category>
      <category>인공지능</category>
      <author>도시쥐</author>
      <guid isPermaLink="true">https://opac.tistory.com/6</guid>
      <comments>https://opac.tistory.com/6#entry6comment</comments>
      <pubDate>Sun, 27 Feb 2022 00:14:23 +0900</pubDate>
    </item>
    <item>
      <title>blob 이란?</title>
      <link>https://opac.tistory.com/5</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;Blob이란 무엇일까요?&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;images.jpg&quot; data-origin-width=&quot;299&quot; data-origin-height=&quot;168&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FCQ6l/btrtk0Y9QSz/RsfT3usTUrmTk9bAfHLekK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FCQ6l/btrtk0Y9QSz/RsfT3usTUrmTk9bAfHLekK/img.jpg&quot; data-alt=&quot;2진수, Binary&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FCQ6l/btrtk0Y9QSz/RsfT3usTUrmTk9bAfHLekK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFCQ6l%2Fbtrtk0Y9QSz%2FRsfT3usTUrmTk9bAfHLekK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;299&quot; height=&quot;168&quot; data-filename=&quot;images.jpg&quot; data-origin-width=&quot;299&quot; data-origin-height=&quot;168&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2진수, Binary&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Binary Large Object&lt;/b&gt;의 약자로 어떠한 &lt;b&gt;큰 객체&lt;/b&gt;를 Binary(2진수) 형태로 저장하는 데 사용합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;독립체(entity)로 된 2진수의 집합이라고 볼 수 있습니다.&lt;/li&gt;
&lt;li&gt;그럼 여기서 2진수로 된 객체란 뭘까요?
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;객체는 이미지, 비디오, 사운드 부터 프로젝트, 애플리케이션, &lt;b&gt;실행파일(런타임)&lt;/b&gt;까지 이 모든것을 하나의 객체로 보고 2진수로 저장하게 되는 것입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떠한 객체를 &lt;b&gt;2진화(Serialize)&lt;/b&gt;시켜서 저장하거나 불러온다는 것은 이러한 &lt;b&gt;객체&lt;/b&gt;를 하나의 '상수'로써 이용하겠다는 뜻이 될 수도 있습니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이를테면, 어떠한 코드를 &lt;b&gt;컴파일&lt;/b&gt;한 뒤에 생기는 &lt;b&gt;실행파일&lt;/b&gt;은 코드의 수정 없이 &lt;b&gt;단일 객체로써 프로세스를 수행&lt;/b&gt;할 것입니다.&lt;/li&gt;
&lt;li&gt;데이터베이스로 영역에서 이러한 Blob은 지속적으로 &lt;b&gt;유지되는 상수 데이터&lt;/b&gt;로도 볼 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인공지능의 &lt;b&gt;Object Detection&lt;/b&gt;, &lt;b&gt;자연어 처리&lt;/b&gt;, &lt;b&gt;Image Classification 등&lt;/b&gt;에서는 &lt;b&gt;각 Layer별 연산&lt;/b&gt; 또는 &lt;b&gt;최적화한 연산&lt;/b&gt;을 &lt;b&gt;Blob의 형태&lt;/b&gt;로 &lt;b&gt;Runtime(실행파일)&lt;/b&gt;을 만들어 &lt;b&gt;추론 단계에서 사용&lt;/b&gt;합니다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 파이썬에서는 blob을 어떻게 사용하고 있을까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 blob 사용을 위해 wand 라이브러리를 사용하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1644857773482&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  with open('image_path') as f:
 image_blob = f.read()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 'image_path'에 있는 이미지에서 blob을 불러옵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1644858272079&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;with Image(blob=image_binary) as image:&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) blob에서 이미지를 불러와 image에 저장합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 적용예시)&lt;/p&gt;
&lt;pre id=&quot;code_1644858451962&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 기본 라이브러리
from __future__ import print_function
 
# wand 라이브러리 import
from wand.image import Image
 
# file 입출력으로 image.jpeg를 열어줍니다.
with open('image.jpeg') as f:
 
    # 이미지파일에서 'blob'을 불러옵니다.
    image_blob = f.read()
 
# 'blob'파일에서 이미지를 불러와 img변수에 씁니다.
with Image(blob = image_binary) as img:
 
    # get height of image
    print('height =', img.height)
 
    # get width of image
    print('width =', img.width)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 적용 예시는 위와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이상으로 포스팅을 마치겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다.&lt;/p&gt;</description>
      <category>기초 지식</category>
      <category>Blob</category>
      <category>nlp</category>
      <category>objectdetection</category>
      <category>기초지식</category>
      <category>인공지능</category>
      <author>도시쥐</author>
      <guid isPermaLink="true">https://opac.tistory.com/5</guid>
      <comments>https://opac.tistory.com/5#entry5comment</comments>
      <pubDate>Tue, 15 Feb 2022 02:17:03 +0900</pubDate>
    </item>
    <item>
      <title>5분만에 인공지능 음성 인식기 만들기 (파이썬, Google Colab)</title>
      <link>https://opac.tistory.com/4</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;안녕하세요!&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;스마트폰이 보급화된 요즘시대에 여러분 대부분은 구글의 구글 어시스턴트, Apple의 Siri등을 모두 써보셨을겁니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;그리고 아마존의 Alexa도 있습니다. 이 세가지가 가장 유명한 음성인식 애플리케이션들인데요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;구글어시스턴트.png&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;290&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjyyb9/btrs8AlnjYg/Q2j6RUmciTqXVhVLMTkg50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjyyb9/btrs8AlnjYg/Q2j6RUmciTqXVhVLMTkg50/img.png&quot; data-alt=&quot;Google 어시스턴트&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjyyb9/btrs8AlnjYg/Q2j6RUmciTqXVhVLMTkg50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbjyyb9%2Fbtrs8AlnjYg%2FQ2j6RUmciTqXVhVLMTkg50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;614&quot; height=&quot;209&quot; data-filename=&quot;구글어시스턴트.png&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;290&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Google 어시스턴트&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;siri.png&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;630&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d8yMr7/btrs3TNMpGx/mS023ISeddJg0eXgLALpbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d8yMr7/btrs3TNMpGx/mS023ISeddJg0eXgLALpbK/img.png&quot; data-alt=&quot;Apple의 음성 비서 Siri&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d8yMr7/btrs3TNMpGx/mS023ISeddJg0eXgLALpbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd8yMr7%2Fbtrs3TNMpGx%2FmS023ISeddJg0eXgLALpbK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;557&quot; height=&quot;293&quot; data-filename=&quot;siri.png&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Apple의 음성 비서 Siri&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;alexa.jpg&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;288&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/INrsj/btrs3VEO9a7/7fgvLEUOOKZvxe5IZKxeQ0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/INrsj/btrs3VEO9a7/7fgvLEUOOKZvxe5IZKxeQ0/img.jpg&quot; data-alt=&quot;아마존의 Alexa&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/INrsj/btrs3VEO9a7/7fgvLEUOOKZvxe5IZKxeQ0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FINrsj%2Fbtrs3VEO9a7%2F7fgvLEUOOKZvxe5IZKxeQ0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;288&quot; data-filename=&quot;alexa.jpg&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;288&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;아마존의 Alexa&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이런 음성인식 기술들이 어떻게 구현되는지 궁금하지 않으신가요?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;오늘은 파이썬 라이브러리를 이용해 간단히 5분만에 구현하는 음성인식기를 구현해보겠습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;구현은 &lt;b&gt;가장 간단한 방법&lt;/b&gt;을 통해 해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;준비물: Google계정, 인식시키고 싶은 음성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;자 우선 첫번째로는 어떤 음성을 인식시켜 텍스트화 시킬지 정해야겠죠?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;테스트 음성으로 준비한 데이터는 영화 '노트북(2004)'의 명대사 부분 음성파일입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/oFjj8/btrs7nAnKll/xIbRRBv90o36K0stNfkZkK/notebook.wav?attach=1&amp;amp;knm=tfile.wav&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;notebook.wav&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;4.48MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;직접 영어 음성을 녹음하셔서 변환하고 싶다면 녹음파일을 만들어 &lt;b&gt;.wav 확장자&lt;/b&gt;로 준비해주세요!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;다음으로는 구글 계정입니다. 구글에 로그인 하신뒤에 Google Colab으로 들어가주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a title=&quot;Google Colaboratory&quot; href=&quot;https://colab.research.google.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://colab.research.google.com/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1644587713894&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Google Colaboratory&quot; data-og-description=&quot;&quot; data-og-host=&quot;colab.research.google.com&quot; data-og-source-url=&quot;https://colab.research.google.com/&quot; data-og-url=&quot;https://colab.research.google.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b4E36k/hyNmzupvJj/OjPyhzSfBtQBabxs3xJc8k/img.png?width=260&amp;amp;height=260&amp;amp;face=0_0_260_260&quot;&gt;&lt;a href=&quot;https://colab.research.google.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://colab.research.google.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b4E36k/hyNmzupvJj/OjPyhzSfBtQBabxs3xJc8k/img.png?width=260&amp;amp;height=260&amp;amp;face=0_0_260_260');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Google Colaboratory&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;colab.research.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;다음으로, Google Colab에 들어가서 새 노트를 만들고, 음성파일(녹음파일)을 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;구글드라이브에 업로드해 연동시키겠습니다. 다운받은 &lt;b&gt;음성파일(또는 녹음파일)을 구글 드라이브에 업로드해주세요.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;(가장 처음 뜨는 경로에 하는게 편합니다.)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;colab_3.PNG&quot; data-origin-width=&quot;869&quot; data-origin-height=&quot;438&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VdMMN/btrs7CYrQt9/pZmWYvQwG4C5KJNkoUuUY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VdMMN/btrs7CYrQt9/pZmWYvQwG4C5KJNkoUuUY1/img.png&quot; data-alt=&quot;구글 드라이브에 음성파일 업로드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VdMMN/btrs7CYrQt9/pZmWYvQwG4C5KJNkoUuUY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVdMMN%2Fbtrs7CYrQt9%2FpZmWYvQwG4C5KJNkoUuUY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;634&quot; height=&quot;319&quot; data-filename=&quot;colab_3.PNG&quot; data-origin-width=&quot;869&quot; data-origin-height=&quot;438&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;구글 드라이브에 음성파일 업로드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a title=&quot;구글 드라이브와 코랩 연동&quot; href=&quot;https://opac.tistory.com/3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://opac.tistory.com/3&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1644587826854&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;구글 드라이브와 코랩(Colab) 연동하기&quot; data-og-description=&quot;구글 코랩(Colab)이란? 구글에서 자체적으로 제공하는 Jupyter Notebook으로, 인프라를 구글 클라우드에 기반하고 있기 때문에, 일반 사용자의 PC보다 깔끔하고 직관적으로 실행할 수 있는 것이 특징이&quot; data-og-host=&quot;opac.tistory.com&quot; data-og-source-url=&quot;https://opac.tistory.com/3&quot; data-og-url=&quot;https://opac.tistory.com/3&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Bz5qw/hyNnXAST1O/CqeUPgfTbYanTILmyEGyW0/img.png?width=260&amp;amp;height=260&amp;amp;face=0_0_260_260,https://scrap.kakaocdn.net/dn/2gNPk/hyNn3A62su/kwbMvYe77D83GCmGqUkhD0/img.png?width=260&amp;amp;height=260&amp;amp;face=0_0_260_260,https://scrap.kakaocdn.net/dn/cxhI4g/hyNnTFe1Ge/Kcss8Kd6e8t0f9B0KCzRj1/img.png?width=1079&amp;amp;height=866&amp;amp;face=0_0_1079_866&quot;&gt;&lt;a href=&quot;https://opac.tistory.com/3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://opac.tistory.com/3&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Bz5qw/hyNnXAST1O/CqeUPgfTbYanTILmyEGyW0/img.png?width=260&amp;amp;height=260&amp;amp;face=0_0_260_260,https://scrap.kakaocdn.net/dn/2gNPk/hyNn3A62su/kwbMvYe77D83GCmGqUkhD0/img.png?width=260&amp;amp;height=260&amp;amp;face=0_0_260_260,https://scrap.kakaocdn.net/dn/cxhI4g/hyNnTFe1Ge/Kcss8Kd6e8t0f9B0KCzRj1/img.png?width=1079&amp;amp;height=866&amp;amp;face=0_0_1079_866');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;구글 드라이브와 코랩(Colab) 연동하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;구글 코랩(Colab)이란? 구글에서 자체적으로 제공하는 Jupyter Notebook으로, 인프라를 구글 클라우드에 기반하고 있기 때문에, 일반 사용자의 PC보다 깔끔하고 직관적으로 실행할 수 있는 것이 특징이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;opac.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;위 링크의 방법대로 Colab에서 구글 드라이브를 마운트 하셨다면&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;colab_1.PNG&quot; data-origin-width=&quot;334&quot; data-origin-height=&quot;306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSq5a7/btrs7qjt5Sx/Z5jRIVNpObwHdn0KeyK6P0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSq5a7/btrs7qjt5Sx/Z5jRIVNpObwHdn0KeyK6P0/img.png&quot; data-alt=&quot;왼편의 파일 - drive - MyDrive/gdrive&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSq5a7/btrs7qjt5Sx/Z5jRIVNpObwHdn0KeyK6P0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSq5a7%2Fbtrs7qjt5Sx%2FZ5jRIVNpObwHdn0KeyK6P0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;301&quot; height=&quot;276&quot; data-filename=&quot;colab_1.PNG&quot; data-origin-width=&quot;334&quot; data-origin-height=&quot;306&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;왼편의 파일 - drive - MyDrive/gdrive&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1644588082862&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;drive/MyDrive 또는 drive/gdrive&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;위 주소에서 음성 파일을 찾을 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;전체 코드는 아래 링크에 업로드 해두겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://colab.research.google.com/drive/1qCyP9EXp8dFhEl6lkrhbha3ItijnTTEe?usp=sharing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://colab.research.google.com/drive/1qCyP9EXp8dFhEl6lkrhbha3ItijnTTEe?usp=sharing&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1644601349024&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;5minute_project.ipynb&quot; data-og-description=&quot;Colaboratory notebook&quot; data-og-host=&quot;colab.research.google.com&quot; data-og-source-url=&quot;https://colab.research.google.com/drive/1qCyP9EXp8dFhEl6lkrhbha3ItijnTTEe?usp=sharing&quot; data-og-url=&quot;https://colab.research.google.com/drive/1qCyP9EXp8dFhEl6lkrhbha3ItijnTTEe&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dO1HRe/hyNnRANoGq/emb5TpeSjK7893g0c60yJK/img.png?width=260&amp;amp;height=260&amp;amp;face=0_0_260_260&quot;&gt;&lt;a href=&quot;https://colab.research.google.com/drive/1qCyP9EXp8dFhEl6lkrhbha3ItijnTTEe?usp=sharing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://colab.research.google.com/drive/1qCyP9EXp8dFhEl6lkrhbha3ItijnTTEe?usp=sharing&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dO1HRe/hyNnRANoGq/emb5TpeSjK7893g0c60yJK/img.png?width=260&amp;amp;height=260&amp;amp;face=0_0_260_260');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;5minute_project.ipynb&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Colaboratory notebook&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;colab.research.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;colab_2.PNG&quot; data-origin-width=&quot;320&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpcapd/btrs65fCAEw/Zr52h5ud2ZxEHQRWguygWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpcapd/btrs65fCAEw/Zr52h5ud2ZxEHQRWguygWK/img.png&quot; data-alt=&quot;Colab의 drive/MyDrive 또는 gdrive 의 음성파일&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpcapd/btrs65fCAEw/Zr52h5ud2ZxEHQRWguygWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbpcapd%2Fbtrs65fCAEw%2FZr52h5ud2ZxEHQRWguygWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;280&quot; height=&quot;333&quot; data-filename=&quot;colab_2.PNG&quot; data-origin-width=&quot;320&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Colab의 drive/MyDrive 또는 gdrive 의 음성파일&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;여기까지 했다면 준비는 끝났습니다. &lt;b&gt;다시 Colab의 빈노트 부분을 보겠습니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. 우선 가장 먼저 활용할 python 라이브러리인 &lt;b&gt;transformers&lt;/b&gt;를 설치해주겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644589524931&quot; class=&quot;cmake&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install transformers&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dijzvD/btrs4NfE6II/w7wdkR8YYy1sbEOgJs6mb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dijzvD/btrs4NfE6II/w7wdkR8YYy1sbEOgJs6mb1/img.png&quot; data-alt=&quot;pip install transformers 실행결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dijzvD/btrs4NfE6II/w7wdkR8YYy1sbEOgJs6mb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdijzvD%2Fbtrs4NfE6II%2Fw7wdkR8YYy1sbEOgJs6mb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1168&quot; height=&quot;720&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;pip install transformers 실행결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;잘 실행됐다면 위와 같이 나옵니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. 음성처리에 사용할 &lt;b&gt;추가적인 라이브러리를 import&lt;/b&gt; 해줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644597629980&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import torch
import librosa
import numpy as np
import soundfile as sf
from scipy.io import wavfile
from IPython.display import Audio
from transformers import Wav2Vec2ForCTC, Wav2Vec2Tokenizer&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;import한 library에 대해 설명드리자면,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1) &lt;b&gt;torch&lt;/b&gt; : &lt;b&gt;pyTorch &lt;/b&gt;라는 딥러닝 프레임워크 입니다. 페이스북 AI팀에 의해 개발되었습니다. 데이터 작업과 모델 생성, 매개변수 최적화, 모델 저장등을 간편하게 할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2) &lt;b&gt;librosa&lt;/b&gt; :&amp;nbsp; Python에서 음성데이터를 분석해주는 라이브러리입니다. 음성 신호처리에 사용되는 대부분의 기능들이 구현되어 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3) &lt;b&gt;numpy &lt;/b&gt;:&amp;nbsp; 고성능 수치계산을 위해 제작된 라이브러리입니다. Numerical Python의 줄임말으로, &lt;b&gt;벡터나 행렬 연산에서 매우 편리한 기능&lt;/b&gt;을 제공합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;4) soundfile : 음성데이터를 가져올 때 사용되는 라이브러리 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;5) wavfile : wav확장자를 가져오기 위해 사용하는 라이브러리입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;6) Audio : 음성데이터 재생을 위해 사용하는 라이브러리입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;7) &lt;b&gt;Wav2Vec&lt;/b&gt; : 위 1. 에서 설치한 &lt;b&gt;트랜스포머(transformer)의 라이브러리&lt;/b&gt;로, &lt;b&gt;Wav2Vec은 음성데이터를 벡터값으로 변환&lt;/b&gt;해 주는것을 말합니다. 이 방식은 &lt;b&gt;페이스북(Facebook) AI팀&lt;/b&gt;에서 제안한 방식으로, &lt;b&gt;음성인식(speech recognition)&lt;/b&gt;에서 매우 좋은 성능을 보여줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Wav2Vec에 대해서는 추후 포스트에서 더욱 자세히 다루겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;제대로 import 되었다면 왼쪽에 체크표시가 생깁니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;503&quot; data-origin-height=&quot;154&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQKCR8/btrs72o7k8h/I1OIS5sDnfBkibqM2kDaD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQKCR8/btrs72o7k8h/I1OIS5sDnfBkibqM2kDaD0/img.png&quot; data-alt=&quot;import 라이브러리&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQKCR8/btrs72o7k8h/I1OIS5sDnfBkibqM2kDaD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQKCR8%2Fbtrs72o7k8h%2FI1OIS5sDnfBkibqM2kDaD0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;503&quot; height=&quot;154&quot; data-origin-width=&quot;503&quot; data-origin-height=&quot;154&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;import 라이브러리&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3. 음성데이터 확인하기&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644598954505&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;file_name = '/content/drive/MyDrive/notebook.wav' //또는 음성데이터의 경로
Audio(file_name)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;자 이제 라이브러리를 모두 가져왔으니 음성데이터가 잘 연동되는지 확인해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;직접 음성데이터를 가져왔다면 file_name 의 경로에 맞게 수정해주시면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;audio(file_name) 함수를 통해 음성데이터를 들어볼 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;4. 모델 및 토크나이저 생성&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644598455527&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;tokenizer = Wav2Vec2Tokenizer.from_pretrained(&quot;facebook/wav2vec2-base-960h&quot;)
model = Wav2Vec2ForCTC.from_pretrained(&quot;facebook/wav2vec2-base-960h&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;본 포스팅에서는 직접학습이 아닌 &lt;b&gt;이전에 학습된 모델&lt;/b&gt;을 가지고 음성인식을 수행합니다. 다른 누구가에 의해 학습되어있는 모델을&lt;b&gt; pre-trained model&lt;/b&gt;이라고 하는데, 여기서 가져온 모델은 페이스북(Facebook)에서 학습시킨 모델입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1) &lt;b&gt;tokenizer(토큰화)&lt;/b&gt;는, 데이터가 필요에 맞게 전처리(Pre-processing)되지 않은 상태라면 해당 데이터를 사용하고자 하는 &lt;b&gt;용도에 맞게 토큰화&lt;/b&gt; 시켜주는 작업을 필요로 합니다. 이를 수행해주는 함수입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2) model은, 위에 말씀드렸듯이 이미 학습된 모델을 가져오는 단계입니다. 우리가 가져온 음성데이터를 &lt;b&gt;이 모델에 통과&lt;/b&gt;시키게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;model을 웹에서 다운로드하기 때문에 실행하는데 약간의 시간이 소요됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1980&quot; data-origin-height=&quot;362&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chHmyR/btrs7mnZ8SJ/ZtKM230pprd8lLUfm1LdK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chHmyR/btrs7mnZ8SJ/ZtKM230pprd8lLUfm1LdK0/img.png&quot; data-alt=&quot;모델과 tokenizer 가져오기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chHmyR/btrs7mnZ8SJ/ZtKM230pprd8lLUfm1LdK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchHmyR%2Fbtrs7mnZ8SJ%2FZtKM230pprd8lLUfm1LdK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1980&quot; height=&quot;362&quot; data-origin-width=&quot;1980&quot; data-origin-height=&quot;362&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;모델과 tokenizer 가져오기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;5. 음성데이터를 함수 변수에 넣기&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644599435404&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;data = wavfile.read(file_name)
framerate = data[0]
sounddata = data[1]
time = np.arange(0,len(sounddata))/framerate
print(data)
print('Sampling rate:',framerate,'Hz')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1) 위에서 가져온 음성 데이터파일을 'data'변수에 read해줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2) data[0]의 자료인 frame rate를 sounddata 변수에 넣어줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3) data[1]의 자료인 실제 sound data를 sounddata 변수에 넣어줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;잘 실행되었다면 아래와 같이 출력값이 나오게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644600710115&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Sampling rate: 48000 Hz&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;6. 데이터를 &lt;b&gt;시계열(time-series)&lt;/b&gt;로 가져오기&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644599660370&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;input_audio, _ = librosa.load(file_name, sr=16000)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;librosa라이브러리의 load함수를 이용해 음성파일을&lt;b&gt; 시계열 데이터(time-series)&lt;/b&gt;로 가져옵니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;인자로써 가져올 파일인 file_name과 Sampling rate인 sr=16000을 받습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;librosa.load 함수는 time-series 데이터와 Sampling rate를 반환합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;7. 음성인식 후 텍스트화 하기&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644599888805&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;input_values = tokenizer(input_audio, return_tensors=&quot;pt&quot;).input_values
logits = model(input_values).logits
predicted_ids = torch.argmax(logits, dim=-1)
transcription = tokenizer.batch_decode(predicted_ids)[0]
print(transcription)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1) 음성파일을 tokenizer에 넣어 &lt;b&gt;토큰화&lt;/b&gt; 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2) 토큰화한 데이터를 logit함수를 거쳐 &lt;b&gt;데이터에 대한 확률&lt;/b&gt;을 구합니다.&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;( logit(로짓) 함수에 대해서는 추후 포스팅에서 자세히 다루겠습니다. 간단히 말하면 확률에 대해 모델링한 함수를 통과시키는 것입니다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3) pyTorch 라이브러리의 argmax를 사용합니다. logits함수에서 추출한 &lt;b&gt;가장 높은 확률인 인자&lt;/b&gt;를 가져옵니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;4) 입력 인덱스에 대해 &lt;b&gt;토큰화 시켜 문장(Strings)로 재탄생&lt;/b&gt; 시켜주는 함수입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;'notebook.wav' 음성파일에 대한 output 출력결과는 아래와 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644600610200&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;I HAVE NO ONE SPECIAL JUST A COMMON MAN WITH COMMON THOUGHTS 
I'VE LED A COMMON LIFE THERE ARE NO MONUMENTS DEDICATED TO ME 
AND MY NAME WILL SOON BE FORGOTTEN BUT IN ONE RESPECT I'VE SUCCEEDED 
AS GLORIOUSLY AS ANY ONE WHO EVER LIVED I'VE LOVED ANOTHER WITH ALL MY HEART 
AND SOU AND FOR ME THAT HAS ALWAYS BEEN ENOUGH&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이상으로 포스팅을 마치겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;감사합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>인공지능</category>
      <category>nlp</category>
      <category>Speech Recognition</category>
      <category>딥러닝</category>
      <category>음성인식</category>
      <category>인공지능</category>
      <category>자연어처리</category>
      <category>파이썬</category>
      <author>도시쥐</author>
      <guid isPermaLink="true">https://opac.tistory.com/4</guid>
      <comments>https://opac.tistory.com/4#entry4comment</comments>
      <pubDate>Sat, 12 Feb 2022 02:47:35 +0900</pubDate>
    </item>
    <item>
      <title>구글 드라이브와 코랩(Colab) 연동하기</title>
      <link>https://opac.tistory.com/3</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;colab_favicon_256px.png&quot; data-origin-width=&quot;260&quot; data-origin-height=&quot;260&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zB1Ct/btrsFsWTjwh/TXj0NlPzpxXxHljK34J110/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zB1Ct/btrsFsWTjwh/TXj0NlPzpxXxHljK34J110/img.png&quot; data-alt=&quot;구글 코랩(Colab)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zB1Ct/btrsFsWTjwh/TXj0NlPzpxXxHljK34J110/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzB1Ct%2FbtrsFsWTjwh%2FTXj0NlPzpxXxHljK34J110%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;260&quot; height=&quot;260&quot; data-filename=&quot;colab_favicon_256px.png&quot; data-origin-width=&quot;260&quot; data-origin-height=&quot;260&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;구글 코랩(Colab)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;구글 코랩(Colab)이란?&lt;br /&gt;구글에서 자체적으로 제공하는 Jupyter Notebook으로, 인프라를 구글 클라우드에 기반하고 있기 때문에, 일반 사용자의 PC보다 깔끔하고 직관적으로 실행할 수 있는 것이 특징이다. 주로 딥러닝, 인공지능 실험에 주로 사용되고 있고 &lt;br /&gt;공부하기에는 충분한 리소스를 제공해주니, 열심히 사용해보도록 하자.&lt;/blockquote&gt;
&lt;p style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 먼저 구글 코랩(Colab)에 접속해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;876&quot; data-origin-height=&quot;842&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcPkeX/btrsNw4uIf7/eDwwDKk3LaqAIiyGkgvqPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcPkeX/btrsNw4uIf7/eDwwDKk3LaqAIiyGkgvqPK/img.png&quot; data-alt=&quot;코랩 접속 초기화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcPkeX/btrsNw4uIf7/eDwwDKk3LaqAIiyGkgvqPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcPkeX%2FbtrsNw4uIf7%2FeDwwDKk3LaqAIiyGkgvqPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;548&quot; height=&quot;527&quot; data-origin-width=&quot;876&quot; data-origin-height=&quot;842&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;코랩 접속 초기화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 파일 - 새 노트로 새로운 빈 노트를 만들어줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;869&quot; data-origin-height=&quot;865&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D1Xzu/btrsAbOgocQ/6hN1UPiTZmiDwAY5ZFgNrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D1Xzu/btrsAbOgocQ/6hN1UPiTZmiDwAY5ZFgNrk/img.png&quot; data-alt=&quot;파일 - 새 노트&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D1Xzu/btrsAbOgocQ/6hN1UPiTZmiDwAY5ZFgNrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD1Xzu%2FbtrsAbOgocQ%2F6hN1UPiTZmiDwAY5ZFgNrk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;565&quot; height=&quot;562&quot; data-origin-width=&quot;869&quot; data-origin-height=&quot;865&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파일 - 새 노트&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3-1. &lt;b&gt;'드라이브 마운트'아이콘으로 연동하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 아래와 같이 빈 노트가 하나 생기는데 왼쪽 중간의 '파일'버튼을 클릭해 줍시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;873&quot; data-origin-height=&quot;867&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjyjVE/btrsLwYvKKm/63U0TTKpdgiS6Okxkas210/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjyjVE/btrsLwYvKKm/63U0TTKpdgiS6Okxkas210/img.png&quot; data-alt=&quot;왼쪽 파일 버튼&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjyjVE/btrsLwYvKKm/63U0TTKpdgiS6Okxkas210/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjyjVE%2FbtrsLwYvKKm%2F63U0TTKpdgiS6Okxkas210%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;535&quot; height=&quot;532&quot; data-origin-width=&quot;873&quot; data-origin-height=&quot;867&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;왼쪽 파일 버튼&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같은 화면이 나타나면 표시의 &lt;b&gt;'드라이브 마운트'&lt;/b&gt; 아이콘을 클릭해 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;872&quot; data-origin-height=&quot;867&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhUjK2/btrsMVXC5G0/lWo5oV4nsfBgGKU6nHWSy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhUjK2/btrsMVXC5G0/lWo5oV4nsfBgGKU6nHWSy0/img.png&quot; data-alt=&quot;드라이브 마운트&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhUjK2/btrsMVXC5G0/lWo5oV4nsfBgGKU6nHWSy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhUjK2%2FbtrsMVXC5G0%2FlWo5oV4nsfBgGKU6nHWSy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;493&quot; height=&quot;490&quot; data-origin-width=&quot;872&quot; data-origin-height=&quot;867&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;드라이브 마운트&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'&lt;b&gt;드라이브 마운트&lt;/b&gt;'아이콘에 대각선이 생기며 구글 드라이브 연동이 완료됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1079&quot; data-origin-height=&quot;866&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnw0Fj/btrsNygWSfL/PUcsAiyDitnp3rHHSh31D1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnw0Fj/btrsNygWSfL/PUcsAiyDitnp3rHHSh31D1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnw0Fj/btrsNygWSfL/PUcsAiyDitnp3rHHSh31D1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbnw0Fj%2FbtrsNygWSfL%2FPUcsAiyDitnp3rHHSh31D1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;655&quot; height=&quot;526&quot; data-origin-width=&quot;1079&quot; data-origin-height=&quot;866&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3-2. 노트에 &lt;b&gt;명령어&lt;/b&gt;로 구글 드라이브 연동하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1644228843291&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from google.colab import drive
drive.mount('/content/gdrive/')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAXsNN/btrsC8ElHyv/0FBCRVylrPTZqzdhXKaKN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAXsNN/btrsC8ElHyv/0FBCRVylrPTZqzdhXKaKN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAXsNN/btrsC8ElHyv/0FBCRVylrPTZqzdhXKaKN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAXsNN%2FbtrsC8ElHyv%2F0FBCRVylrPTZqzdhXKaKN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;723&quot; height=&quot;116&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;116&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드를 아래 사진처럼 넣어주시고 사진속의 재생(▷) 버튼을 눌러주시면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;109&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OsUMr/btrsJLn4BEG/Ga9lmMtTKLkgOqYKaaPL4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OsUMr/btrsJLn4BEG/Ga9lmMtTKLkgOqYKaaPL4k/img.png&quot; data-alt=&quot;authorization code 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OsUMr/btrsJLn4BEG/Ga9lmMtTKLkgOqYKaaPL4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOsUMr%2FbtrsJLn4BEG%2FGa9lmMtTKLkgOqYKaaPL4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;633&quot; height=&quot;103&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;109&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;authorization code 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같이 authorization 코드를 입력하라고 나옵니다. 링크를 타고 들어가셔서 코드를 &lt;b&gt;복사 붙여넣기&lt;/b&gt; 해주시면 &lt;b&gt;마운트(연동)이 완료&lt;/b&gt;됩니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이렇게 구글 드라이브와 코랩(Colab) 연동하기가 완료되었습니다!&lt;/b&gt;&lt;/p&gt;</description>
      <category>기초 지식</category>
      <category>colab</category>
      <category>Colab 연동</category>
      <category>구글 코랩</category>
      <category>구글드라이브</category>
      <category>딥러닝</category>
      <category>인공지능</category>
      <author>도시쥐</author>
      <guid isPermaLink="true">https://opac.tistory.com/3</guid>
      <comments>https://opac.tistory.com/3#entry3comment</comments>
      <pubDate>Mon, 7 Feb 2022 19:24:14 +0900</pubDate>
    </item>
    <item>
      <title>Linux 관련</title>
      <link>https://opac.tistory.com/pages/Linux-%EA%B4%80%EB%A0%A8</link>
      <description></description>
      <author>도시쥐</author>
      <guid isPermaLink="true">https://opac.tistory.com/pages/Linux-%EA%B4%80%EB%A0%A8</guid>
      <pubDate>Fri, 4 Feb 2022 15:13:57 +0900</pubDate>
    </item>
  </channel>
</rss>