<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Note_</title>
    <link>https://yewon.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sun, 7 Jun 2026 05:34:20 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>yewon</managingEditor>
    <item>
      <title>데이터엔지니어</title>
      <link>https://yewon.tistory.com/121</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;데이터 엔지니어링 분야&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 데이터 전달 시스템&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;스트리밍&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-ke-style=&quot;style3&quot;&gt;&amp;nbsp;실시간으로 데이터를 다른 저장소로 전달&lt;/li&gt;
&lt;li data-ke-style=&quot;style3&quot;&gt;기존 데이터와 실시간 데이터를 같이 집계하여 서비스에서 즉각활용&lt;/li&gt;
&lt;li data-ke-style=&quot;style3&quot;&gt;기술스택: 일반 서버 어플리케이션, Storm, Flink, Spark Streaming&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;* Apache Storm&lt;br /&gt;스트리밍 데이터의 일괄, 분산처리를 가능하게하는 서버이자 프레임워크;&lt;br /&gt;실시간분석, 연속계산, ETL작업에 주로 사용&lt;br /&gt;* Apache Flink&lt;br /&gt;스트리밍 데이터의 상태 저장 계싼을 위한 프레임워크 및 분산 처리 엔진&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;배치&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-ke-style=&quot;style3&quot;&gt;주기적으로 데이터를 백업, 다른 저장소로 이동, 병합(merge), 삭제, 가공&lt;/li&gt;
&lt;li data-ke-style=&quot;style3&quot;&gt;기술스택: Quartz, Spring Batch, Airflow, Spark&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;* Quartz&lt;br /&gt;Java기반의 오픈소스 스케쥴링 라이브러리&lt;br /&gt;*Spring Batch&lt;br /&gt;대용량 데이터처리 프레임워크; 일괄,분산처리,트랜잭션관리&lt;br /&gt;* Apache Airflow&lt;br /&gt;오픈소스 워크플로 관리 플랫폼; Python기반&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 데이터 가공 시스템&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 데이터 분석 및 활용 시스템&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 데이터 저장소&lt;/h3&gt;</description>
      <category>[강의]데이터 엔지니어링/Part1. 데이터 엔지니어</category>
      <author>yewon</author>
      <guid isPermaLink="true">https://yewon.tistory.com/121</guid>
      <comments>https://yewon.tistory.com/121#entry121comment</comments>
      <pubDate>Wed, 5 Apr 2023 15:34:25 +0900</pubDate>
    </item>
    <item>
      <title>AI 및 자동화로 규정 준수 비용을 줄이는 5가지 방법</title>
      <link>https://yewon.tistory.com/120</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. RPA 및 NLP를 사용한 규정 변경 관리&lt;/h3&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억페이지의 새로운규정처리의 필요성이 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RPA는 규정 변경 사항을 수집하도록 프로그래밍할 수 있을 뿐만아니라 규정을 이해하고 비즈니스 프로세스에 적용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정교한 &lt;u&gt;OCR, NLP 및 AI 모델 등장&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;+OCR은 규제 텍스트를 기계가 읽을수 있는 텍스트로 변환가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;+NLP는 텍스트를 처리, 복잡한 문장 및 복잡한 규제용어 이해에 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;+AI모델은 출력을 활용하여 유사과거사례를 기반으로 정책 변경에 대한 옵션제공, 새로운 규정을 필터링하여 비즈니스&amp;nbsp; &amp;nbsp;관련규정에 플래그 지정&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 규제보고 간소화&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;h3 data-ke-size=&quot;size23&quot;&gt;3. 마케팅 자료 검토 프로세스 단축&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;규제가 심한 시장의 판매프로세스에는 마케팅 자료를 준수해야함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인력을 추가하지않고 AI를 사용하여 컨테츠를 스캔하고 규정준수를 효율적으로 결정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떠한 경우엔 AI봇이 규정 준수 마케팅 카피를 편집하고 작성하는데 사용되기도 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 트랜잭션 모니터링 오류감소&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI를 레거시 트랜잭션 모니터링 시스템에 통합함으로써 잘못된 규정준수 경고를 최소화, 검토비용을 절감&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;규정 준수 담당자는 고위험 플래그가 지정된 트랜잭션에만 작업&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 경향 식별시 AI를 사용하여 기존 규칙 엔진 및 모니터링 시스템을 업데이트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. 배경 및 법적 확인 수행&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;봇은 클라이언트에 대한 언급을 위해 웹을 크롤링하고 감정분석을 활용하여 부정적콘텐츠에 플래그를 지정하는 데 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NLP 기술은 법원 문서에서 불법 활동의 징후와 분석에 가장 관련성이 높은 언론 언급을 스캔&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;blockquote data-ke-style=&quot;style2&quot;&gt;Dictionary&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*RPA(Robotic Process Automation)&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;*NLP(Natural Language Process)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;**NLP의 일반적 작업&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 문장 분할/ 기계 번역/ 요약/ 분류/ 주제 추출/ 자연어생성(NLG)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;**RPA의 NLP는 정형, 비정형 및 반정형 데이터를 분석하고 추가분석을 위해 추출할 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;**RPA 공급업체는 AI기반 사례를 통해 NLP기능을 확장하여 자동화의 요구를 맞춰야 함&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;*OCR(Optical C&lt;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;haracter Recognition)&lt;/span&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 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;a href=&quot;https://www.cio.com/article/100000276?utm_source=Adestra&amp;amp;utm_medium=email&amp;amp;utm_content=Description%3A%205%20ways%20to%20reduce%20compliance%20costs%20with%20AI%20and%20automation&amp;amp;utm_campaign=CIO%20US%20First%20Look&amp;amp;utm_term=CIO%20US%20Editorial%20Newsletters&amp;amp;utm_date=20220526001420&amp;amp;huid=826cde49-fdef-4842-9a27-2e300ec2bee3&quot;&gt;https://www.cio.com/article/100000276?utm_source=Adestra&amp;amp;utm_medium=email&amp;amp;utm_content=Description%3A%205%20ways%20to%20reduce%20compliance%20costs%20with%20AI%20and%20automation&amp;amp;utm_campaign=CIO%20US%20First%20Look&amp;amp;utm_term=CIO%20US%20Editorial%20Newsletters&amp;amp;utm_date=20220526001420&amp;amp;huid=826cde49-fdef-4842-9a27-2e300ec2bee3&lt;/a&gt; &amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1653526692583&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;5 ways to reduce compliance costs with AI and automation&quot; data-og-description=&quot;Increased use of AI can drive efficiencies and reduce costs in compliance management. Here's what that means for CIOs in highly regulated industries.&quot; data-og-host=&quot;www.cio.com&quot; data-og-source-url=&quot;https://www.cio.com/article/100000276?utm_source=Adestra&amp;amp;utm_medium=email&amp;amp;utm_content=Description%3A%205%20ways%20to%20reduce%20compliance%20costs%20with%20AI%20and%20automation&amp;amp;utm_campaign=CIO%20US%20First%20Look&amp;amp;utm_term=CIO%20US%20Editorial%20Newsletters&amp;amp;utm_date=20220526001420&amp;amp;huid=826cde49-fdef-4842-9a27-2e300ec2bee3&quot; data-og-url=&quot;https://www.cio.com/article/100000276/5-ways-to-reduce-compliance-costs-with-ai-and-automation.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c8tgrJ/hyOxkot81z/0TH9H5cscuUwUUAGfABFC0/img.jpg?width=1024&amp;amp;height=682&amp;amp;face=0_0_1024_682,https://scrap.kakaocdn.net/dn/rmSfN/hyOxs7SGc7/CwOMon00xmQCCzilPfI0pK/img.jpg?width=1024&amp;amp;height=682&amp;amp;face=0_0_1024_682,https://scrap.kakaocdn.net/dn/bhHMGQ/hyOxkPx53G/onchnNwkjGv7sp2hpDkkD1/img.jpg?width=1024&amp;amp;height=682&amp;amp;face=0_0_1024_682&quot;&gt;&lt;a href=&quot;https://www.cio.com/article/100000276?utm_source=Adestra&amp;amp;utm_medium=email&amp;amp;utm_content=Description%3A%205%20ways%20to%20reduce%20compliance%20costs%20with%20AI%20and%20automation&amp;amp;utm_campaign=CIO%20US%20First%20Look&amp;amp;utm_term=CIO%20US%20Editorial%20Newsletters&amp;amp;utm_date=20220526001420&amp;amp;huid=826cde49-fdef-4842-9a27-2e300ec2bee3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.cio.com/article/100000276?utm_source=Adestra&amp;amp;utm_medium=email&amp;amp;utm_content=Description%3A%205%20ways%20to%20reduce%20compliance%20costs%20with%20AI%20and%20automation&amp;amp;utm_campaign=CIO%20US%20First%20Look&amp;amp;utm_term=CIO%20US%20Editorial%20Newsletters&amp;amp;utm_date=20220526001420&amp;amp;huid=826cde49-fdef-4842-9a27-2e300ec2bee3&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c8tgrJ/hyOxkot81z/0TH9H5cscuUwUUAGfABFC0/img.jpg?width=1024&amp;amp;height=682&amp;amp;face=0_0_1024_682,https://scrap.kakaocdn.net/dn/rmSfN/hyOxs7SGc7/CwOMon00xmQCCzilPfI0pK/img.jpg?width=1024&amp;amp;height=682&amp;amp;face=0_0_1024_682,https://scrap.kakaocdn.net/dn/bhHMGQ/hyOxkPx53G/onchnNwkjGv7sp2hpDkkD1/img.jpg?width=1024&amp;amp;height=682&amp;amp;face=0_0_1024_682');&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;5 ways to reduce compliance costs with AI and automation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Increased use of AI can drive efficiencies and reduce costs in compliance management. Here's what that means for CIOs in highly regulated industries.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.cio.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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Scrap_/Scrap_AI</category>
      <author>yewon</author>
      <guid isPermaLink="true">https://yewon.tistory.com/120</guid>
      <comments>https://yewon.tistory.com/120#entry120comment</comments>
      <pubDate>Thu, 26 May 2022 09:57:29 +0900</pubDate>
    </item>
    <item>
      <title>kakao login api</title>
      <link>https://yewon.tistory.com/119</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;1. Android Studio 프로젝트 생성 [empty activity]&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. App 등록&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;a href=&quot;https://developers.kakao.com/apps&quot;&gt;https://developers.kakao.com/apps&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1631530225231&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;카카오계정 로그인&quot; data-og-description=&quot;여기를 눌러 링크를 확인하세요.&quot; data-og-host=&quot;accounts.kakao.com&quot; data-og-source-url=&quot;https://developers.kakao.com/apps&quot; data-og-url=&quot;https://accounts.kakao.com/login?continue=https%3A%2F%2Fdevelopers.kakao.com%2Flogin%3Fcontinue%3D%252Fconsole%252Fapp&amp;amp;lang=en&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cDoDqQ/hyLBCYGAz7/kEkHUed2j6KzQibKnymkGk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bfpzJ0/hyLzZVvx1E/h1uIb6gWcRS0MYi41Bv1f0/img.png?width=1080&amp;amp;height=632&amp;amp;face=0_0_1080_632&quot;&gt;&lt;a href=&quot;https://developers.kakao.com/apps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developers.kakao.com/apps&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cDoDqQ/hyLBCYGAz7/kEkHUed2j6KzQibKnymkGk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bfpzJ0/hyLzZVvx1E/h1uIb6gWcRS0MYi41Bv1f0/img.png?width=1080&amp;amp;height=632&amp;amp;face=0_0_1080_632');&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;카카오계정 로그인&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;여기를 눌러 링크를 확인하세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;accounts.kakao.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;2-1 앱만들기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;1132&quot; data-origin-height=&quot;648&quot; width=&quot;622&quot; height=&quot;356&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rTyVb/btreYbtnCIh/1EkO5kkCFwGYnyT1y1sgr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rTyVb/btreYbtnCIh/1EkO5kkCFwGYnyT1y1sgr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rTyVb/btreYbtnCIh/1EkO5kkCFwGYnyT1y1sgr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrTyVb%2FbtreYbtnCIh%2F1EkO5kkCFwGYnyT1y1sgr1%2Fimg.png&quot; data-origin-width=&quot;1132&quot; data-origin-height=&quot;648&quot; width=&quot;622&quot; height=&quot;356&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&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;2-2 네이티브앱 키 프로젝트의 res/values에 kakao_strings.xml파일을 만들어 저장&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 alignLeft&quot; data-origin-width=&quot;579&quot; data-origin-height=&quot;320&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Nzb5W/btreOsQVunl/cp0i01tNCysyQbaPN9Gw71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Nzb5W/btreOsQVunl/cp0i01tNCysyQbaPN9Gw71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Nzb5W/btreOsQVunl/cp0i01tNCysyQbaPN9Gw71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNzb5W%2FbtreOsQVunl%2Fcp0i01tNCysyQbaPN9Gw71%2Fimg.png&quot; data-origin-width=&quot;579&quot; data-origin-height=&quot;320&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&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;&lt;span&gt;&lt;b&gt;kakao_strings.xml&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&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;span style=&quot;color: #010101;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #066de2;&quot;&gt;?xml&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #0a9989;&quot;&gt;version&lt;/span&gt;=&lt;span style=&quot;color: #df5000;&quot;&gt;&quot;1.0&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #0a9989;&quot;&gt;encoding&lt;/span&gt;=&lt;span style=&quot;color: #df5000;&quot;&gt;&quot;utf-8&quot;&lt;/span&gt;&lt;span style=&quot;color: #0a9989;&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;color: #010101;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #010101;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #066de2;&quot;&gt;resources&lt;/span&gt;&lt;span style=&quot;color: #010101;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #010101;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #066de2;&quot;&gt;string&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #0a9989;&quot;&gt;name&lt;/span&gt;=&lt;span style=&quot;color: #df5000;&quot;&gt;&quot;kakao_app_key&quot;&lt;/span&gt;&lt;span style=&quot;color: #010101;&quot;&gt;&amp;gt;&lt;/span&gt;e55c871cff64c95904109cac3c39ae3a&amp;nbsp;&lt;span style=&quot;color: #010101;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #010101;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #066de2;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color: #010101;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #010101;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #010101;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #066de2;&quot;&gt;resources&lt;/span&gt;&lt;span style=&quot;color: #010101;&quot;&gt;&amp;gt;&lt;/span&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;2-3 플랫폼 추가&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;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;패키지 명은&amp;nbsp;AndroidManifest.xml&amp;nbsp;상단에 나와있는 패키지 명&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;265&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baZXxi/btreY3VVJFo/VMPzbN3azm6EQlTr0S2xlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baZXxi/btreY3VVJFo/VMPzbN3azm6EQlTr0S2xlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baZXxi/btreY3VVJFo/VMPzbN3azm6EQlTr0S2xlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaZXxi%2FbtreY3VVJFo%2FVMPzbN3azm6EQlTr0S2xlk%2Fimg.png&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;265&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2-4 활성화 설정 on&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;663&quot; width=&quot;577&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wCOez/btreRTAw3KP/dmBGCxNcRkgcS7TeBUJZ30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wCOez/btreRTAw3KP/dmBGCxNcRkgcS7TeBUJZ30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wCOez/btreRTAw3KP/dmBGCxNcRkgcS7TeBUJZ30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwCOez%2FbtreRTAw3KP%2FdmBGCxNcRkgcS7TeBUJZ30%2Fimg.png&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;663&quot; width=&quot;577&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&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. 해시키 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;* 안드로이드 스튜디오에서&amp;nbsp;디버깅 목적으로 카카오톡 로그인을 테스트 해보기 위해서는&amp;nbsp;디버그 해쉬키&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp;PlayStore에 등록을 하게되면&amp;nbsp;릴리즈 해시키를 사용&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;OpenSSL 다운로드&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;( 해시키 추출을 위해 필요 )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;a href=&quot;https://code.google.com/archive/p/openssl-for-windows/downloads&quot;&gt;https://code.google.com/archive/p/openssl-for-windows/downloads&lt;/a&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;/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;keytool&amp;nbsp;-exportcert&amp;nbsp;-alias&amp;nbsp;androiddebugkey&amp;nbsp;-keystore&amp;nbsp;%USERPROFILE%\.android\debug.keystore&amp;nbsp;-storepass&amp;nbsp;android&amp;nbsp;-keypass&amp;nbsp;android&amp;nbsp;|&amp;nbsp;openssl&amp;nbsp;sha1&amp;nbsp;-binary&amp;nbsp;|&amp;nbsp;openssl&amp;nbsp;base64&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;keytool&amp;nbsp;-exportcert&amp;nbsp;-alias&amp;nbsp;release&amp;nbsp;-keystore&amp;nbsp;C:\Users\User\release.jks&amp;nbsp;|&amp;nbsp;openssl&amp;nbsp;sha1&amp;nbsp;-binary&amp;nbsp;|&amp;nbsp;openssl&amp;nbsp;base64&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;debug&amp;nbsp;key &lt;br /&gt;8m2ZrRY203XUmUxH4hXDoBxoSoI= &lt;br /&gt;&lt;br /&gt;release&amp;nbsp;key &lt;br /&gt;+ENmryaOSYCZvQHSqH6hfzg0qqQ=&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;4. 디버그 해시키 등록&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;675&quot; data-origin-height=&quot;715&quot; width=&quot;384&quot; height=&quot;407&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCUfNg/btreYpEV0Vu/rPh6KVeTm4msA6SRh0tlZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCUfNg/btreYpEV0Vu/rPh6KVeTm4msA6SRh0tlZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCUfNg/btreYpEV0Vu/rPh6KVeTm4msA6SRh0tlZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCUfNg%2FbtreYpEV0Vu%2FrPh6KVeTm4msA6SRh0tlZ1%2Fimg.png&quot; data-origin-width=&quot;675&quot; data-origin-height=&quot;715&quot; width=&quot;384&quot; height=&quot;407&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://dev-donghwan.tistory.com/3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://dev-donghwan.tistory.com/3&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. gradle 설정하기&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;* androidStudio Gradle&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Gradle을 이용하면 소스를 받을 필요 없고, 로컬에 인스톨해줘야 하는 모듈도 리모트에서 받아올 수 있으며,&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;- gradle.build (project)&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;span style=&quot;color: #808080;&quot;&gt;// Top-level build file where you can add configuration options common to all sub-projects/modules.&lt;br /&gt;&lt;/span&gt;buildscript &lt;span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;repositories &lt;span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;google()&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;mavenCentral()&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;maven { url '&lt;a style=&quot;color: #ee2323;&quot; href=&quot;http://devrepo.kakao.com:8088/nexus/content/groups/public/'&quot;&gt;http://devrepo.kakao.com:8088/nexus/content/groups/public/'&lt;/a&gt; &lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt; }&lt;br /&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;dependencies &lt;span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;classpath &lt;span style=&quot;color: #6a8759;&quot;&gt;&quot;com.android.tools.build:gradle:7.0.2&quot;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt; &lt;/span&gt;classpath &lt;span style=&quot;color: #6a8759;&quot;&gt;&quot;org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20&quot;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;// NOTE: Do not place your application dependencies here; they belong&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt; // in the individual module build.gradle files&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt; &lt;/span&gt;&lt;span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;task clean(&lt;span style=&quot;color: #6a8759;&quot;&gt;type&lt;/span&gt;: Delete) &lt;span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;delete &lt;span style=&quot;color: #9876aa;&quot;&gt;rootProject&lt;/span&gt;.&lt;span style=&quot;color: #9876aa;&quot;&gt;buildDir&lt;br /&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&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;- gradle.properties&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;span style=&quot;color: #808080;&quot;&gt;#Mon Sep 13 19:43:11 KST 2021&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;distributionBase&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt;GRADLE_USER_HOME&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;distributionUrl&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt;https&lt;/span&gt;\:&lt;span style=&quot;color: #6a8759;&quot;&gt;//services.gradle.org/distributions/gradle-7.0.2-bin.zip&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;distributionPath&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt;wrapper/dists&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;zipStorePath&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt;wrapper/dists&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;zipStoreBase&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt;GRADLE_USER_HOME&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;KAKAO_SDK_GROUP=com.kakao.sdk&lt;br /&gt;KAKAO_SDK_VERSION=&lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.1.7&lt;/span&gt;&lt;br /&gt;&lt;/span&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;- gradlue.build (app)&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;dependencies &lt;span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;implementation &lt;span style=&quot;color: #6a8759;&quot;&gt;'androidx.core:core-ktx:1.6.0'&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt; &lt;/span&gt;implementation &lt;span style=&quot;color: #6a8759;&quot;&gt;'androidx.appcompat:appcompat:1.3.1'&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt; &lt;/span&gt;implementation &lt;span style=&quot;color: #6a8759;&quot;&gt;'com.google.android.material:material:1.4.0'&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt; &lt;/span&gt;implementation &lt;span style=&quot;color: #6a8759;&quot;&gt;'androidx.constraintlayout:constraintlayout:2.1.0'&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt; &lt;/span&gt;testImplementation &lt;span style=&quot;color: #6a8759;&quot;&gt;'junit:junit:4.+'&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt; &lt;/span&gt;androidTestImplementation &lt;span style=&quot;color: #6a8759;&quot;&gt;'androidx.test.ext:junit:1.1.3'&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt; &lt;/span&gt;androidTestImplementation &lt;span style=&quot;color: #6a8759;&quot;&gt;'androidx.test.espresso:espresso-core:3.4.0'&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;compile group: project.KAKAO_SDK_GROUP, name: 'usermgmt', version: project.KAKAO_SDK_VERSION&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;6. 카카오 버튼 만들기&lt;/span&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;span style=&quot;color: #010101;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #066de2;&quot;&gt;?xml&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #0a9989;&quot;&gt;version&lt;/span&gt;=&lt;span style=&quot;color: #df5000;&quot;&gt;&quot;1.0&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #0a9989;&quot;&gt;encoding&lt;/span&gt;=&lt;span style=&quot;color: #df5000;&quot;&gt;&quot;utf-8&quot;&lt;/span&gt;&lt;span style=&quot;color: #0a9989;&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;color: #010101;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #010101;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #066de2;&quot;&gt;LinearLayout&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #0a9989;&quot;&gt;xmlns:android&lt;/span&gt;=&lt;span style=&quot;color: #df5000;&quot;&gt;&quot;&lt;a href=&quot;http://schemas.android.com/apk/res/android&quot;&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #0a9989;&quot;&gt;android:layout_width&lt;/span&gt;=&lt;span style=&quot;color: #df5000;&quot;&gt;&quot;match_parent&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #0a9989;&quot;&gt;android:layout_height&lt;/span&gt;=&lt;span style=&quot;color: #df5000;&quot;&gt;&quot;match_parent&quot;&lt;/span&gt;&lt;span style=&quot;color: #010101;&quot;&gt;&amp;gt;&lt;/span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #010101;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #066de2;&quot;&gt;com.kakao.usermgmt.LoginButton&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #0a9989;&quot;&gt;android:id&lt;/span&gt;=&lt;span style=&quot;color: #df5000;&quot;&gt;&quot;@+id/com_kakao_login&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #0a9989;&quot;&gt;android:layout_width&lt;/span&gt;=&lt;span style=&quot;color: #df5000;&quot;&gt;&quot;match_parent&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #0a9989;&quot;&gt;android:layout_height&lt;/span&gt;=&lt;span style=&quot;color: #df5000;&quot;&gt;&quot;60dp&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #0a9989;&quot;&gt;android:layout_gravity&lt;/span&gt;=&lt;span style=&quot;color: #df5000;&quot;&gt;&quot;center&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #0a9989;&quot;&gt;android:layout_margin&lt;/span&gt;=&lt;span style=&quot;color: #df5000;&quot;&gt;&quot;20dp&quot;&lt;/span&gt;&lt;span style=&quot;color: #0a9989;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #010101;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #010101;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #010101;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #066de2;&quot;&gt;LinearLayout&lt;/span&gt;&lt;span style=&quot;color: #010101;&quot;&gt;&amp;gt;&lt;/span&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;a href=&quot;https://blog.naver.com/tkddlf4209/220684902340&quot;&gt;[Android] AndroidStudio 카.. : 네이버블로그 (naver.com)&lt;/a&gt;&lt;a href=&quot;https://blog.naver.com/tkddlf4209&quot;&gt;Bitpump&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1631532731031&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Well begun is half done. : 네이버 블로그&quot; data-og-description=&quot;Android 암호화폐관련 Bitpump 앱 개발, 새로운 기술에 대한 내용을 공부하며 포스팅&quot; data-og-host=&quot;blog.naver.com&quot; data-og-source-url=&quot;https://blog.naver.com/tkddlf4209&quot; data-og-url=&quot;https://blog.naver.com/tkddlf4209&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/xlFDl/hyLz1eJMGS/hwnOxwHeBtX5ErZ8I6GZL1/img.jpg?width=204&amp;amp;height=204&amp;amp;face=0_0_204_204&quot;&gt;&lt;a href=&quot;https://blog.naver.com/tkddlf4209&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.naver.com/tkddlf4209&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/xlFDl/hyLz1eJMGS/hwnOxwHeBtX5ErZ8I6GZL1/img.jpg?width=204&amp;amp;height=204&amp;amp;face=0_0_204_204');&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;Well begun is half done. : 네이버 블로그&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Android 암호화폐관련 Bitpump 앱 개발, 새로운 기술에 대한 내용을 공부하며 포스팅&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.naver.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;&lt;span style=&quot;color: #000000;&quot;&gt;7. 코드&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://blog.naver.com/tkddlf4209/220684933749&quot;&gt;[Android] AndroidStudio 카.. : 네이버블로그 (naver.com)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1631532741358&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;[Android] AndroidStudio 카카오톡 로그인 연동하기(4) - 로그인 연동 (마지막)&quot; data-og-description=&quot;▶ 이전 포스팅 [Android] AndroidStudio 카카오톡 로그인 연동하기(3) - 로그인버튼 만들기 http://blo...&quot; data-og-host=&quot;blog.naver.com&quot; data-og-source-url=&quot;https://blog.naver.com/tkddlf4209/220684933749&quot; data-og-url=&quot;https://blog.naver.com/tkddlf4209/220684933749&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/kd0cv/hyLBsaJMtk/lV9sPmKnikpjXBRNAChWQ0/img.jpg?width=199&amp;amp;height=370&amp;amp;face=0_0_199_370&quot;&gt;&lt;a href=&quot;https://blog.naver.com/tkddlf4209/220684933749&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.naver.com/tkddlf4209/220684933749&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/kd0cv/hyLBsaJMtk/lV9sPmKnikpjXBRNAChWQ0/img.jpg?width=199&amp;amp;height=370&amp;amp;face=0_0_199_370');&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;[Android] AndroidStudio 카카오톡 로그인 연동하기(4) - 로그인 연동 (마지막)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;▶ 이전 포스팅 [Android] AndroidStudio 카카오톡 로그인 연동하기(3) - 로그인버튼 만들기 http://blo...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.naver.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;</description>
      <category>혁신성장 프로젝트</category>
      <author>yewon</author>
      <guid isPermaLink="true">https://yewon.tistory.com/119</guid>
      <comments>https://yewon.tistory.com/119#entry119comment</comments>
      <pubDate>Mon, 13 Sep 2021 20:45:58 +0900</pubDate>
    </item>
    <item>
      <title>09.02 Android App API (LOGIN)</title>
      <link>https://yewon.tistory.com/117</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 카카오 로그인 API&lt;/h2&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;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;b&gt;&lt;a href=&quot;https://developers.kakao.com/docs/latest/ko/kakaologin/android&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developers.kakao.com/docs/latest/ko/kakaologin/android&lt;/a&gt;&lt;/b&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1630564777742&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Kakao Developers&quot; data-og-description=&quot;카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.&quot; data-og-host=&quot;developers.kakao.com&quot; data-og-source-url=&quot;https://developers.kakao.com/docs/latest/ko/kakaologin/android&quot; data-og-url=&quot;https://developers.kakao.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dC3v5u/hyLssKsUhw/ObJW8a7f74z0CtRwDshkvK/img.png?width=800&amp;amp;height=400&amp;amp;face=0_0_800_400,https://scrap.kakaocdn.net/dn/caSeZe/hyLtUFnFnU/1tLYiB038rTDrW8PqdlDLK/img.png?width=3840&amp;amp;height=1000&amp;amp;face=0_0_3840_1000,https://scrap.kakaocdn.net/dn/dNCf9w/hyLsds2ojq/uVqFqToWsHPifI9ECgIvG0/img.png?width=3840&amp;amp;height=1000&amp;amp;face=0_0_3840_1000&quot;&gt;&lt;a href=&quot;https://developers.kakao.com/docs/latest/ko/kakaologin/android&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developers.kakao.com/docs/latest/ko/kakaologin/android&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dC3v5u/hyLssKsUhw/ObJW8a7f74z0CtRwDshkvK/img.png?width=800&amp;amp;height=400&amp;amp;face=0_0_800_400,https://scrap.kakaocdn.net/dn/caSeZe/hyLtUFnFnU/1tLYiB038rTDrW8PqdlDLK/img.png?width=3840&amp;amp;height=1000&amp;amp;face=0_0_3840_1000,https://scrap.kakaocdn.net/dn/dNCf9w/hyLsds2ojq/uVqFqToWsHPifI9ECgIvG0/img.png?width=3840&amp;amp;height=1000&amp;amp;face=0_0_3840_1000');&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;Kakao Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developers.kakao.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;&lt;b&gt;참고 블로그&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/93&quot;&gt;https://youngest-programming.tistory.com/93&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1630564643422&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드] 카카오톡 로그인&quot; data-og-description=&quot;구글로그인과 페이스북로그인에 이어서 카카오톡 로그인을 해본 걸 정리하는 포스팅을 갖도록 해보겠습니다. [2020-06-21 업데이트] 참고로 저는 구글 파이어베이스의 OAuth 토큰을 사용하기 위해��&quot; data-og-host=&quot;youngest-programming.tistory.com&quot; data-og-source-url=&quot;https://youngest-programming.tistory.com/93&quot; data-og-url=&quot;https://youngest-programming.tistory.com/93&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/SVWqa/hyGFU39lXy/P537XWIXASlNkHnyDg9dkk/img.png?width=380&amp;amp;height=619&amp;amp;face=0_0_380_619,https://scrap.kakaocdn.net/dn/6vJKm/hyGEcFm3hq/DDfsroPA6r83JkTxH4Sh9K/img.png?width=380&amp;amp;height=619&amp;amp;face=0_0_380_619,https://scrap.kakaocdn.net/dn/cxhEKS/hyGEggHkQj/6qYbIkNFwykgQtU590eubK/img.png?width=1318&amp;amp;height=720&amp;amp;face=0_0_1318_720&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/93&quot; data-source-url=&quot;https://youngest-programming.tistory.com/93&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/SVWqa/hyGFU39lXy/P537XWIXASlNkHnyDg9dkk/img.png?width=380&amp;amp;height=619&amp;amp;face=0_0_380_619,https://scrap.kakaocdn.net/dn/6vJKm/hyGEcFm3hq/DDfsroPA6r83JkTxH4Sh9K/img.png?width=380&amp;amp;height=619&amp;amp;face=0_0_380_619,https://scrap.kakaocdn.net/dn/cxhEKS/hyGEggHkQj/6qYbIkNFwykgQtU590eubK/img.png?width=1318&amp;amp;height=720&amp;amp;face=0_0_1318_720');&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;[안드로이드] 카카오톡 로그인&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;구글로그인과 페이스북로그인에 이어서 카카오톡 로그인을 해본 걸 정리하는 포스팅을 갖도록 해보겠습니다. [2020-06-21 업데이트] 참고로 저는 구글 파이어베이스의 OAuth 토큰을 사용하기 위해��&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;youngest-programming.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://m.blog.naver.com/woo171tm/221461720960&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://m.blog.naver.com/woo171tm/221461720960&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1630565189874&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;안드로이드에서 카카오 로그인 API 적용하기 (2) : 버튼 클릭 시 로그인 수행하기&quot; data-og-description=&quot;※궁금한 거 있으시면 주저하지 마시고 댓글로 물어보세요! 이틀 이내로 답변해 드립니다. ★전체 프로젝트...&quot; data-og-host=&quot;blog.naver.com&quot; data-og-source-url=&quot;https://m.blog.naver.com/woo171tm/221461720960&quot; data-og-url=&quot;https://blog.naver.com/woo171tm/221461720960&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/obm0f/hyLsgXB20j/0AeBmTxy4sgmD95Ke3UtRK/img.jpg?width=540&amp;amp;height=960&amp;amp;face=0_0_540_960&quot;&gt;&lt;a href=&quot;https://m.blog.naver.com/woo171tm/221461720960&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://m.blog.naver.com/woo171tm/221461720960&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/obm0f/hyLsgXB20j/0AeBmTxy4sgmD95Ke3UtRK/img.jpg?width=540&amp;amp;height=960&amp;amp;face=0_0_540_960');&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;안드로이드에서 카카오 로그인 API 적용하기 (2) : 버튼 클릭 시 로그인 수행하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;※궁금한 거 있으시면 주저하지 마시고 댓글로 물어보세요! 이틀 이내로 답변해 드립니다. ★전체 프로젝트...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 페이스북 로그인 API&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&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;&lt;u&gt;&lt;b&gt;&lt;a href=&quot;https://yhong.tistory.com/34&quot;&gt;https://yhong.tistory.com/34&lt;/a&gt;&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1630564643424&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Android] 페이스북 로그인 연동 코드&quot; data-og-description=&quot;미리 말씀드리면 Firebase를 통한 페이스북로그인연동이 아닙니다. (다릅니다) 일단 다른 로그인연동과 마찬가지로 Facebook for Develover에서 가입을 해줘야합니다. 페이스북아이디가 없다면 회원가��&quot; data-og-host=&quot;yhong.tistory.com&quot; data-og-source-url=&quot;https://yhong.tistory.com/34&quot; data-og-url=&quot;https://yhong.tistory.com/34&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bPAyon/hyGEbGsIKi/uvaJbHqLBSRKwxqTrAgMh1/img.png?width=800&amp;amp;height=272&amp;amp;face=0_0_800_272,https://scrap.kakaocdn.net/dn/bfMK9d/hyGEcrP60p/UdeMMeD7diRzdYNbYNwHAk/img.png?width=800&amp;amp;height=272&amp;amp;face=0_0_800_272,https://scrap.kakaocdn.net/dn/bRKhuM/hyGFSyuEUy/4xxQbYBH5Vzn5Cu12OUViK/img.png?width=860&amp;amp;height=520&amp;amp;face=0_0_860_520&quot;&gt;&lt;a href=&quot;https://yhong.tistory.com/34&quot; data-source-url=&quot;https://yhong.tistory.com/34&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bPAyon/hyGEbGsIKi/uvaJbHqLBSRKwxqTrAgMh1/img.png?width=800&amp;amp;height=272&amp;amp;face=0_0_800_272,https://scrap.kakaocdn.net/dn/bfMK9d/hyGEcrP60p/UdeMMeD7diRzdYNbYNwHAk/img.png?width=800&amp;amp;height=272&amp;amp;face=0_0_800_272,https://scrap.kakaocdn.net/dn/bRKhuM/hyGFSyuEUy/4xxQbYBH5Vzn5Cu12OUViK/img.png?width=860&amp;amp;height=520&amp;amp;face=0_0_860_520');&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;[Android] 페이스북 로그인 연동 코드&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;미리 말씀드리면 Firebase를 통한 페이스북로그인연동이 아닙니다. (다릅니다) 일단 다른 로그인연동과 마찬가지로 Facebook for Develover에서 가입을 해줘야합니다. 페이스북아이디가 없다면 회원가��&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yhong.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://lakue.tistory.com/12&quot;&gt;https://lakue.tistory.com/12&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1630564643424&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Android/안드로이드] 페이스북 로그인 / Facebook Login 연동&quot; data-og-description=&quot;페이스북 로그인을 하기 위해서는 페이스북에서 제공하는 SDK를 이용해야 합니다. App Key 발급 및 등록 연동을 하기 위해서는 SDK외에도 App Key를 발급받아 프로젝트에 등록을 해주어야 합니다. App &quot; data-og-host=&quot;lakue.tistory.com&quot; data-og-source-url=&quot;https://lakue.tistory.com/12&quot; data-og-url=&quot;https://lakue.tistory.com/12&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/YiZqr/hyGEfvkbH2/PKy8UXvbU5S2Juq2L2m9k1/img.png?width=608&amp;amp;height=241&amp;amp;face=0_0_608_241,https://scrap.kakaocdn.net/dn/bW8r2h/hyGFYZMfd7/VsRKOqKtmjobKaCuK9gTw0/img.png?width=608&amp;amp;height=241&amp;amp;face=0_0_608_241,https://scrap.kakaocdn.net/dn/mtCdl/hyGEj5xEnM/h1l0BgKaSnSnAIJM4eTThK/img.png?width=1025&amp;amp;height=614&amp;amp;face=0_0_1025_614&quot;&gt;&lt;a href=&quot;https://lakue.tistory.com/12&quot; data-source-url=&quot;https://lakue.tistory.com/12&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/YiZqr/hyGEfvkbH2/PKy8UXvbU5S2Juq2L2m9k1/img.png?width=608&amp;amp;height=241&amp;amp;face=0_0_608_241,https://scrap.kakaocdn.net/dn/bW8r2h/hyGFYZMfd7/VsRKOqKtmjobKaCuK9gTw0/img.png?width=608&amp;amp;height=241&amp;amp;face=0_0_608_241,https://scrap.kakaocdn.net/dn/mtCdl/hyGEj5xEnM/h1l0BgKaSnSnAIJM4eTThK/img.png?width=1025&amp;amp;height=614&amp;amp;face=0_0_1025_614');&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;[Android/안드로이드] 페이스북 로그인 / Facebook Login 연동&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;페이스북 로그인을 하기 위해서는 페이스북에서 제공하는 SDK를 이용해야 합니다. App Key 발급 및 등록 연동을 하기 위해서는 SDK외에도 App Key를 발급받아 프로젝트에 등록을 해주어야 합니다. App&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;lakue.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://re-build.tistory.com/11&quot;&gt;https://re-build.tistory.com/11&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1630564643425&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Android] 페이스북 계정으로 로그인 하기&quot; data-og-description=&quot;이전 카카오 계정으로 로그인하기 포스팅에 이어, 페이스북 계정으로 로그인 하는 방법을 알아보겠습니다. 전체적인 구현 방법은 비슷하니, 이전 포스팅을 읽으셨거나, 다른 계정으로 연동하는&quot; data-og-host=&quot;re-build.tistory.com&quot; data-og-source-url=&quot;https://re-build.tistory.com/11&quot; data-og-url=&quot;https://re-build.tistory.com/11&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dwSn5u/hyGFNYftcS/W2mEDwZCpNXxmKvntgLgSk/img.png?width=800&amp;amp;height=578&amp;amp;face=0_0_800_578,https://scrap.kakaocdn.net/dn/cLhASd/hyGFOQoH0e/ZAPHKePpXjkOfrEcM0wlb0/img.png?width=800&amp;amp;height=578&amp;amp;face=0_0_800_578,https://scrap.kakaocdn.net/dn/hqOGK/hyGFKf9FJC/3aDsTqbFdmj6TWZ2Ir12sk/img.png?width=924&amp;amp;height=568&amp;amp;face=0_0_924_568&quot;&gt;&lt;a href=&quot;https://re-build.tistory.com/11&quot; data-source-url=&quot;https://re-build.tistory.com/11&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dwSn5u/hyGFNYftcS/W2mEDwZCpNXxmKvntgLgSk/img.png?width=800&amp;amp;height=578&amp;amp;face=0_0_800_578,https://scrap.kakaocdn.net/dn/cLhASd/hyGFOQoH0e/ZAPHKePpXjkOfrEcM0wlb0/img.png?width=800&amp;amp;height=578&amp;amp;face=0_0_800_578,https://scrap.kakaocdn.net/dn/hqOGK/hyGFKf9FJC/3aDsTqbFdmj6TWZ2Ir12sk/img.png?width=924&amp;amp;height=568&amp;amp;face=0_0_924_568');&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;[Android] 페이스북 계정으로 로그인 하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이전 카카오 계정으로 로그인하기 포스팅에 이어, 페이스북 계정으로 로그인 하는 방법을 알아보겠습니다. 전체적인 구현 방법은 비슷하니, 이전 포스팅을 읽으셨거나, 다른 계정으로 연동하는&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;re-build.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 네이버 로그인 API&lt;u&gt;&lt;b&gt;&lt;/b&gt;&lt;/u&gt;&lt;/h2&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;&lt;u&gt;&lt;b&gt;&lt;a href=&quot;https://developers.naver.com/docs/login/android/android.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developers.naver.com/docs/login/android/android.md&lt;/a&gt;&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1630565026916&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Android - LOGIN&quot; data-og-description=&quot;Android용 네이버 아이디로 로그인 라이브러리는 서드파티 애플리케이션에서 네이버 아이디로 로그인이 제공하는 로그인, 로그아웃, 토큰 관리 등의 기능을 쉽게 구현할 수 있게 합니다. 1. 요구 &quot; data-og-host=&quot;developers.naver.com&quot; data-og-source-url=&quot;https://developers.naver.com/docs/login/android/android.md&quot; data-og-url=&quot;https://developers.naver.com/docs/login/android/android.md&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://developers.naver.com/docs/login/android/android.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developers.naver.com/docs/login/android/android.md&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;Android - LOGIN&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Android용 네이버 아이디로 로그인 라이브러리는 서드파티 애플리케이션에서 네이버 아이디로 로그인이 제공하는 로그인, 로그아웃, 토큰 관리 등의 기능을 쉽게 구현할 수 있게 합니다. 1. 요구&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developers.naver.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;&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;&lt;u&gt;&lt;b&gt;&lt;a href=&quot;http://blog.naver.com/PostView.nhn?blogId=waitout1&amp;amp;logNo=221421665687&quot;&gt;http://blog.naver.com/PostView.nhn?blogId=waitout1&amp;amp;logNo=221421665687&lt;/a&gt;&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1630564643425&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Android] 네이버 아이디로 로그인(네아로) API 사용하기 - 안드로이드 스튜디오&quot; data-og-description=&quot;오늘은 네이버 로그인 기능에 대해 사용해보려고 합니다 .​현재 개발 환경 안드로이드 스튜디오 3.2.1맥 ...&quot; data-og-host=&quot;blog.naver.com&quot; data-og-source-url=&quot;http://blog.naver.com/PostView.nhn?blogId=waitout1&amp;amp;logNo=221421665687&quot; data-og-url=&quot;http://blog.naver.com/waitout1/221421665687&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bkYeEX/hyGFLe4mpz/CPYaktIcRAuqFKsUXeMwB1/img.png?width=743&amp;amp;height=206&amp;amp;face=0_0_743_206,https://scrap.kakaocdn.net/dn/WY3Mo/hyGFSrIK26/H0WJF1h7ekIS1ax1bzOkbK/img.jpg?width=500&amp;amp;height=300&amp;amp;face=0_0_500_300&quot;&gt;&lt;a href=&quot;http://blog.naver.com/PostView.nhn?blogId=waitout1&amp;amp;logNo=221421665687&quot; data-source-url=&quot;http://blog.naver.com/PostView.nhn?blogId=waitout1&amp;amp;logNo=221421665687&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bkYeEX/hyGFLe4mpz/CPYaktIcRAuqFKsUXeMwB1/img.png?width=743&amp;amp;height=206&amp;amp;face=0_0_743_206,https://scrap.kakaocdn.net/dn/WY3Mo/hyGFSrIK26/H0WJF1h7ekIS1ax1bzOkbK/img.jpg?width=500&amp;amp;height=300&amp;amp;face=0_0_500_300');&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;[Android] 네이버 아이디로 로그인(네아로) API 사용하기 - 안드로이드 스튜디오&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 네이버 로그인 기능에 대해 사용해보려고 합니다 .​현재 개발 환경 안드로이드 스튜디오 3.2.1맥 ...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://bourbonkk.tistory.com/35&quot;&gt;https://bourbonkk.tistory.com/35&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1630564643425&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;#안드로이드 Third party 로그인 연동 2(네이버 연동)&quot; data-og-description=&quot;오늘은 네이버 로그인 API 연동을 해볼거에요! 네이버의 경우에는 CLIENT_ID와 SECRET 문자열이 필요한데요! 네이버 개발자 센터에 앱을 등록하신 후 해당 문자열을 아래와 같이 붙여넣으주면 됩니다&quot; data-og-host=&quot;bourbonkk.tistory.com&quot; data-og-source-url=&quot;https://bourbonkk.tistory.com/35&quot; data-og-url=&quot;https://bourbonkk.tistory.com/35&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cjorNt/hyGEk4sxth/A51PsqEFiAQdIQsrIaBWF1/img.png?width=240&amp;amp;height=43&amp;amp;face=0_0_240_43,https://scrap.kakaocdn.net/dn/cpnrkk/hyGEfIPZFg/eri5kWInhhsLJ6HUpvd87K/img.png?width=240&amp;amp;height=43&amp;amp;face=0_0_240_43&quot;&gt;&lt;a href=&quot;https://bourbonkk.tistory.com/35&quot; data-source-url=&quot;https://bourbonkk.tistory.com/35&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cjorNt/hyGEk4sxth/A51PsqEFiAQdIQsrIaBWF1/img.png?width=240&amp;amp;height=43&amp;amp;face=0_0_240_43,https://scrap.kakaocdn.net/dn/cpnrkk/hyGEfIPZFg/eri5kWInhhsLJ6HUpvd87K/img.png?width=240&amp;amp;height=43&amp;amp;face=0_0_240_43');&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;#안드로이드 Third party 로그인 연동 2(네이버 연동)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 네이버 로그인 API 연동을 해볼거에요! 네이버의 경우에는 CLIENT_ID와 SECRET 문자열이 필요한데요! 네이버 개발자 센터에 앱을 등록하신 후 해당 문자열을 아래와 같이 붙여넣으주면 됩니다&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;bourbonkk.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;네이버로그인 가이드 참고&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a href=&quot;https://developers.naver.com/docs/login/bi/&quot;&gt;https://developers.naver.com/docs/login/bi/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1630564643426&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;네이버아이디로로그인 로그인 버튼 사용 가이드&quot; data-og-description=&quot;NAVER Developers - 네이버아이디로로그인 로그인 버튼 사용 가이드&quot; data-og-host=&quot;developers.naver.com&quot; data-og-source-url=&quot;https://developers.naver.com/docs/login/bi/&quot; data-og-url=&quot;https://developers.naver.com/docs/login/bi&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bXMOez/hyGEhfCwLI/E9qJLeJfcyXZjOx2aJPcE0/img.jpg?width=940&amp;amp;height=492&amp;amp;face=0_0_940_492,https://scrap.kakaocdn.net/dn/cIUHZs/hyGEhNrJjL/L5YHL8IQ4fJyZRLtebfB30/img.png?width=688&amp;amp;height=816&amp;amp;face=0_0_688_816,https://scrap.kakaocdn.net/dn/cH9SxY/hyGFUiL7Bi/3GiVzmCQh58UtflmDz1HO1/img.png?width=688&amp;amp;height=443&amp;amp;face=0_0_688_443&quot;&gt;&lt;a href=&quot;https://developers.naver.com/docs/login/bi/&quot; data-source-url=&quot;https://developers.naver.com/docs/login/bi/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bXMOez/hyGEhfCwLI/E9qJLeJfcyXZjOx2aJPcE0/img.jpg?width=940&amp;amp;height=492&amp;amp;face=0_0_940_492,https://scrap.kakaocdn.net/dn/cIUHZs/hyGEhNrJjL/L5YHL8IQ4fJyZRLtebfB30/img.png?width=688&amp;amp;height=816&amp;amp;face=0_0_688_816,https://scrap.kakaocdn.net/dn/cH9SxY/hyGFUiL7Bi/3GiVzmCQh58UtflmDz1HO1/img.png?width=688&amp;amp;height=443&amp;amp;face=0_0_688_443');&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;네이버아이디로로그인 로그인 버튼 사용 가이드&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;NAVER Developers - 네이버아이디로로그인 로그인 버튼 사용 가이드&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developers.naver.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;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&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;h2 data-ke-size=&quot;size26&quot;&gt;Google Sign-In for Android 문서&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1&amp;nbsp; Android 앱에 Google 로그인 통합 시작&lt;/b&gt;&lt;/h3&gt;
&lt;h4 id=&quot;prerequisites&quot; data-text=&quot; 전제 조건&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;전제 조건&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Android 4.1 이상을 실행하고 Android 4.2.2 이상을 기반으로 하는 Google API 플랫폼을 실행&lt;/li&gt;
&lt;li&gt;Google Play 서비스 버전 15.0.0 이상이 있는 AVD가 있는 에뮬레이터 또는 Google Play 스토어를 포함하는 호환 가능한 Android 기기&lt;/li&gt;
&lt;li&gt;SDK 도구 구성요소를 포함한 최신 버전의 Android SDK.&lt;/li&gt;
&lt;li&gt;Android 4.1(Jelly Bean) 이상에 대해 컴파일하도록 구성된 프로젝트&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;권장 개발 환경 :&amp;nbsp; Android Studio&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;add_google_play_services&quot; data-text=&quot; Google Play 서비스 추가&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;1. Google Play 서비스 추가&lt;/span&gt;&lt;/h4&gt;
&lt;h4 id=&quot;configure_a_project&quot; data-text=&quot; Google API 콘솔 프로젝트 구성&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;2. Google API 콘솔 프로젝트 구성&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;h4 id=&quot;get_your_backend_servers_oauth_20_client_id&quot; data-text=&quot; 백엔드 서버의 OAuth 2.0 클라이언트 ID 가져오기&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;3. 백엔드 서버의 OAuth 2.0 클라이언트 ID 가져오기&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2&amp;nbsp; Android 앱에 Google 로그인 통합&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #202124;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;시작 전&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;구글 API 콘솔 프로젝트를 구성하고 안드로이드 스튜디오 프로젝트를 설정&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;configure_google_sign-in_and_the_googlesigninclient_object&quot; data-text=&quot; Google 로그인 및 GoogleSignInClient 개체 구성&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;1. Google 로그인 및 GoogleSignInClient 개체 구성&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당신의 로그인 활동 년대&lt;span&gt;&amp;nbsp;&lt;/span&gt;onCreate&lt;span&gt;&amp;nbsp;&lt;/span&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;활동의 로그인&lt;span&gt;&amp;nbsp;&lt;/span&gt;onCreate&lt;span&gt;&amp;nbsp;&lt;/span&gt;방법,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;GoogleSignInClient&lt;span&gt;&amp;nbsp;&lt;/span&gt;사용자가 지정한 옵션을 사용하여 객체를&lt;span&gt;&amp;nbsp;&lt;/span&gt;생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;check_for_an_existing_signed-in_user&quot; data-text=&quot;기존 로그인한 사용자 확인&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;2. 기존 로그인한 사용자 확인&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;활동의에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;onStart&lt;span&gt;&amp;nbsp;&lt;/span&gt;사용자가 이미 구글과 앱에 로그인 한 경우 방법 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;add_the_google_sign-in_button_to_your_app&quot; data-text=&quot; 앱에 Google 로그인 버튼 추가 &quot; data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;3. 앱에 Google 로그인 버튼 추가&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIyDe3/btrdT8w60BM/XsG8Q3Js207MxSKiOT7Po0/img.png&quot; /&gt;추가&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&quot;start_the_sign-in_flow&quot; data-text=&quot; 로그인 흐름 시작 &quot; data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;4. 로그인 흐름 시작&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6juj5/btrdOXRcadi/KgkPZvdqYyZPz6TD97Uf8K/img.png&quot; width=&quot;210&quot; height=&quot;151&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3&amp;nbsp; 프로필 정보 얻기&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Google로 사용자로&lt;span&gt; 로그인&amp;nbsp;&lt;/span&gt;한 후&lt;span&gt;&amp;nbsp;&lt;/span&gt;DEFAULT_SIGN_IN&lt;span&gt;&amp;nbsp;&lt;/span&gt;매개 변수 또는&lt;span&gt;&amp;nbsp;&lt;/span&gt;requestProfile&lt;span&gt;&amp;nbsp;&lt;/span&gt;메소드를 사용 하여&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Google 로그인&lt;span&gt; &lt;/span&gt;을&lt;span&gt;&amp;nbsp;구성한&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;경우&amp;nbsp; 사용자의 기본 프로필 정보에 액세스 할 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;requestEmail&lt;span&gt;&amp;nbsp;&lt;/span&gt;메소드로 Google 로그인을 구성한 경우 이메일 주소도 가져올 수 있음.&lt;/p&gt;
&lt;h4 id=&quot;retrieve_profile_information_for_a_signed-in_user&quot; data-text=&quot; 로그인 한 사용자의 프로필 정보 검색&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;로그인 한 사용자의 프로필 정보 검색&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 로그인 한 사용자의 프로필 정보를 요청 &amp;gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;GoogleSignIn.getLastSignedInAccount&lt;span&gt;&amp;nbsp;&lt;/span&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4&amp;nbsp; 사용자 로그 아웃 및 계정 연결 해제&lt;/b&gt;&lt;/h3&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;h4 id=&quot;sign_out_users&quot; data-text=&quot; 사용자 로그 아웃&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;사용자 로그 아웃&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앱에 로그 아웃 버튼을 추가하려면 먼저 앱에서 로그 아웃 버튼 역할을 할 버튼 추가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런 다음 버튼에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://developer.android.com/reference/android/view/View.OnClickListener.html&quot;&gt;onClickListener&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;를 연결하고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInClient#signOut()&quot;&gt;signOut&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;을 호출하도록&lt;span&gt;&amp;nbsp;&lt;/span&gt;onClick&lt;span&gt;&amp;nbsp;&lt;/span&gt;메서드를 구성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;disconnect_accounts&quot; data-text=&quot; 계정 연결 해제&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;계정 연결 해제&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Google로 로그인 한 사용자에게 앱에서 Google 계정 연결을 해제 할 수있는 기능을 제공&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 계정을 삭제하는 경우 앱이 Google API에서 얻은 정보를 삭제&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #202124;&quot;&gt;5&amp;nbsp; 백엔드 서버로 인증&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;color: #202124;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;color: #202124;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;h4 id=&quot;send-the-id-token-to-your-server&quot; data-text=&quot; 서버에 ID 토큰 보내기&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;서버에 ID 토큰 보내기&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 사용자가 로그인할 때 ID 토큰을 가져옴&lt;/p&gt;
&lt;h4 id=&quot;verify-the-integrity-of-the-id-token&quot; data-text=&quot; ID 토큰의 무결성 확인&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;ID 토큰의 무결성 확인&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTPS POST로 ID 토큰을 받은 후 토큰의 무결성을 확인해야함&lt;/p&gt;
&lt;h4 id=&quot;create-an-account-or-session&quot; data-text=&quot; 계정 또는 세션 만들기&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;계정 또는 세션 만들기&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;토큰을 확인한 후 사용자가 이미 사용자 데이터베이스에 있는지 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 아직 사용자 데이터베이스에 없으면 ID 토큰 페이로드의 정보에서 새 사용자 레코드를 만들고 사용자에 대한 세션을 설정&lt;/p&gt;
&lt;h4 id=&quot;securing-your-users-accounts-with-cross-account-protection&quot; data-text=&quot; 교차 계정 보호로 사용자 계정 보호&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;교차 계정 보호로 사용자 계정 보호&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #202124;&quot;&gt;6&amp;nbsp; 서버 측 액세스 활성화&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;color: #202124;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #202124;&quot;&gt;이전의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://developers.google.com/identity/sign-in/android/sign-in#add_the_google_sign-in_button_to_your_app&quot;&gt;로그인 추가&lt;/a&gt;&lt;span style=&quot;color: #202124;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;절차를 사용하면 앱이 클라이언트 측에서만 사용자를 인증&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #202124;&quot;&gt;이 경우 사용자가 앱을 적극적으로 사용하는 동안에 만 Google API에 액세스 할 수 있음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #202124;&quot;&gt;서버가 사용자를 대신하여 Google API 호출을 할 수 있도록하려면 (오프라인 일 때도 가능) 서버에 액세스 토큰이 필요&lt;/span&gt;&lt;/p&gt;
&lt;h4 id=&quot;enable_server-side_api_access_for_your_app&quot; data-text=&quot; 앱에 대한 서버 측 API 액세스 활성화&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;앱에 대한 서버 측 API 액세스 활성화&lt;/span&gt;&lt;/h4&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;참고 문서&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developers.google.com/identity/sign-in/android/start-integrating&quot;&gt;https://developers.google.com/identity/sign-in/android/start-integrating&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1630563810584&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Android 앱에 Google 로그인 통합 시작 &amp;nbsp;|&amp;nbsp; Google Sign-In for Android&quot; data-og-description=&quot;이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English Android 앱에 Google 로그인 통합 시작 자체 앱에서 Google 로그인 통합을 시작하려면 먼저 Google API 콘솔 프로젝트를 구성하고 Androi&quot; data-og-host=&quot;developers.google.com&quot; data-og-source-url=&quot;https://developers.google.com/identity/sign-in/android/start-integrating&quot; data-og-url=&quot;https://developers.google.com/identity/sign-in/android/start-integrating?hl=ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/soUEc/hyLsqeNW3M/LhdXz6LJNtcKytmzncy2wk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://developers.google.com/identity/sign-in/android/start-integrating&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developers.google.com/identity/sign-in/android/start-integrating&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/soUEc/hyLsqeNW3M/LhdXz6LJNtcKytmzncy2wk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;Android 앱에 Google 로그인 통합 시작 &amp;nbsp;|&amp;nbsp; Google Sign-In for Android&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English Android 앱에 Google 로그인 통합 시작 자체 앱에서 Google 로그인 통합을 시작하려면 먼저 Google API 콘솔 프로젝트를 구성하고 Androi&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developers.google.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;&lt;b&gt;깃 허브 샘플&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/googlesamples/google-services&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/googlesamples/google-services&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1630563060893&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - googlesamples/google-services: A collection of quickstart samples demonstrating the Google APIs for Android and iOS&quot; data-og-description=&quot;A collection of quickstart samples demonstrating the Google APIs for Android and iOS - GitHub - googlesamples/google-services: A collection of quickstart samples demonstrating the Google APIs for A...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/googlesamples/google-services&quot; data-og-url=&quot;https://github.com/googlesamples/google-services&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bmR5WO/hyLtQbSzss/kjGKdKAUT2lUbPcqYsHq41/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/googlesamples/google-services&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/googlesamples/google-services&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bmR5WO/hyLtQbSzss/kjGKdKAUT2lUbPcqYsHq41/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;GitHub - googlesamples/google-services: A collection of quickstart samples demonstrating the Google APIs for Android and iOS&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A collection of quickstart samples demonstrating the Google APIs for Android and iOS - GitHub - googlesamples/google-services: A collection of quickstart samples demonstrating the Google APIs for A...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.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;&lt;b&gt;참고 &lt;b&gt;블로그&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://siisee111.medium.com/android-app%EC%97%90%EC%84%9C-google-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%82%AC%EC%9A%A9-235da1c61153&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://siisee111.medium.com/android-app%EC%97%90%EC%84%9C-google-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%82%AC%EC%9A%A9-235da1c61153&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1630564544340&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;Android app에서 google 로그인 사용&quot; data-og-description=&quot;만들면서 바로 정리&quot; data-og-host=&quot;siisee111.medium.com&quot; data-og-source-url=&quot;https://siisee111.medium.com/android-app%EC%97%90%EC%84%9C-google-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%82%AC%EC%9A%A9-235da1c61153&quot; data-og-url=&quot;https://siisee111.medium.com/android-app%EC%97%90%EC%84%9C-google-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%82%AC%EC%9A%A9-235da1c61153&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dsuspM/hyLtWQIhtu/d5KtfeKozldKK15KM6cW1k/img.png?width=1200&amp;amp;height=844&amp;amp;face=0_0_1200_844,https://scrap.kakaocdn.net/dn/ceSZL7/hyLtUST1Ap/mty8Z2ArFDKqqK7yI8b0d1/img.png?width=1248&amp;amp;height=878&amp;amp;face=0_0_1248_878,https://scrap.kakaocdn.net/dn/feJbB/hyLspUwKZh/Spmg9CUEamLQxazuM0cHuK/img.png?width=34&amp;amp;height=60&amp;amp;face=0_0_34_60&quot;&gt;&lt;a href=&quot;https://siisee111.medium.com/android-app%EC%97%90%EC%84%9C-google-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%82%AC%EC%9A%A9-235da1c61153&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://siisee111.medium.com/android-app%EC%97%90%EC%84%9C-google-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%82%AC%EC%9A%A9-235da1c61153&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dsuspM/hyLtWQIhtu/d5KtfeKozldKK15KM6cW1k/img.png?width=1200&amp;amp;height=844&amp;amp;face=0_0_1200_844,https://scrap.kakaocdn.net/dn/ceSZL7/hyLtUST1Ap/mty8Z2ArFDKqqK7yI8b0d1/img.png?width=1248&amp;amp;height=878&amp;amp;face=0_0_1248_878,https://scrap.kakaocdn.net/dn/feJbB/hyLspUwKZh/Spmg9CUEamLQxazuM0cHuK/img.png?width=34&amp;amp;height=60&amp;amp;face=0_0_34_60');&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;Android app에서 google 로그인 사용&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;만들면서 바로 정리&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;siisee111.medium.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://develop-writing.tistory.com/32&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://develop-writing.tistory.com/32&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1630565252660&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;[Android] 구글 로그인을 안드로이드 앱에 연동하기&quot; data-og-description=&quot;이번에는 구글 로그인을 연동해보겠습니다. 구글 로그인도 카카오 로그인처럼 실 서비스에 적용하기 위해서는 다음 3단계를 거쳐야 합니다. 1. 앱 등록 및 설정 2. 기능 구현 3. 릴리즈 키 등록 저&quot; data-og-host=&quot;develop-writing.tistory.com&quot; data-og-source-url=&quot;https://develop-writing.tistory.com/32&quot; data-og-url=&quot;https://develop-writing.tistory.com/32&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/gv5O9/hyLsrENC2K/IznbAm69elg7vEhjRA6PjK/img.jpg?width=425&amp;amp;height=777&amp;amp;face=0_0_425_777,https://scrap.kakaocdn.net/dn/bwoRoq/hyLtZ7KCqz/2WiE1sFsB75Me8234CUQx0/img.jpg?width=425&amp;amp;height=777&amp;amp;face=0_0_425_777&quot;&gt;&lt;a href=&quot;https://develop-writing.tistory.com/32&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://develop-writing.tistory.com/32&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/gv5O9/hyLsrENC2K/IznbAm69elg7vEhjRA6PjK/img.jpg?width=425&amp;amp;height=777&amp;amp;face=0_0_425_777,https://scrap.kakaocdn.net/dn/bwoRoq/hyLtZ7KCqz/2WiE1sFsB75Me8234CUQx0/img.jpg?width=425&amp;amp;height=777&amp;amp;face=0_0_425_777');&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;[Android] 구글 로그인을 안드로이드 앱에 연동하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번에는 구글 로그인을 연동해보겠습니다. 구글 로그인도 카카오 로그인처럼 실 서비스에 적용하기 위해서는 다음 3단계를 거쳐야 합니다. 1. 앱 등록 및 설정 2. 기능 구현 3. 릴리즈 키 등록 저&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;develop-writing.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;</description>
      <category>혁신성장 프로젝트</category>
      <author>yewon</author>
      <guid isPermaLink="true">https://yewon.tistory.com/117</guid>
      <comments>https://yewon.tistory.com/117#entry117comment</comments>
      <pubDate>Thu, 2 Sep 2021 15:48:57 +0900</pubDate>
    </item>
    <item>
      <title>0825/0826 수업메모</title>
      <link>https://yewon.tistory.com/115</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;GCP&lt;/span&gt;&lt;/h2&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;span&gt;오늘 수업 내용&lt;/span&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;span&gt;&amp;nbsp;Network &lt;/span&gt;&lt;span&gt;보안 구축 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;IAM(Identity and Access Management),&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;IAP(Identity-Aware Proxy), VPC Networks Controlling Access,&lt;/span&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;span&gt;구글 공유 폴더&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://c11.kr/cccrsungsu&quot;&gt;https://c11.kr/cccrsungsu&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;IAM&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://cloud.google.com/iam/docs/overview&quot;&gt;https://cloud.google.com/iam/docs/overview&lt;/a&gt;&lt;/span&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;span&gt; &lt;/span&gt;&lt;span&gt;IAM &lt;/span&gt;&lt;span&gt;환경에서 권한은 &lt;/span&gt;&lt;span&gt;service.resource.verb &lt;/span&gt;&lt;span&gt;형식으로 표시&lt;/span&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;span&gt;Compute Engine &lt;/span&gt;&lt;span&gt;에서 인스턴스 목록 확인 &lt;/span&gt;&lt;span&gt;: compute.instance.list&lt;/span&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;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;인스턴스 중지 &lt;/span&gt;&lt;span&gt;; compute.instance.stop&lt;/span&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;span&gt;사용자 지정 역할을 생성하려면 &lt;/span&gt;&lt;span&gt;iam.roles.create&lt;/span&gt;&lt;span&gt;권한이 있어야 함&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&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;span&gt;조직 역할 관리자 &lt;/span&gt;&lt;span&gt;:roles/iam.organizationRoleAdmin&lt;/span&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;span&gt;IAM &lt;/span&gt;&lt;span&gt;역할 관리자 &lt;/span&gt;&lt;span&gt;: roles/iam/roleAdmin&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;IAM &lt;/span&gt;&lt;span&gt;보안 검토자 &lt;/span&gt;&lt;span&gt;: roles/iam/SecurityReviewer &lt;/span&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;span&gt;IAM&lt;/span&gt;&lt;span&gt;의 &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;가지 역할&lt;/span&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;span&gt;- &lt;/span&gt;&lt;span&gt;사전 정의된 역할&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Google&lt;/span&gt;&lt;span&gt;에서 만들고 유지 관리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;cloud&lt;/span&gt;&lt;span&gt;에 새로운 기능이나 서비스가 추가되는 경우와 같이 필요에 따라 권한이 자동으로 업데이트&lt;/span&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;span&gt;- &lt;/span&gt;&lt;span&gt;사용자 지정 역할&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;사용자가 정의하며 특정 요구 사항을 충족하기 위해 하나 이상의 지원되는 권한을 묶을 수 있음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Google&lt;/span&gt;&lt;span&gt;에서 유지 관리 해주지 않음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;사용자가 따로 업데이트를 진행&lt;/span&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;span&gt;*&lt;/span&gt;&lt;span&gt;프로젝트 리소스에 대한 기본 &lt;/span&gt;&lt;span&gt;roles&lt;/span&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;span&gt;roles/viewer&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;상태에 영향을 주지 않는 읽기 전용 작업에 대한 권한이 있습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;예를 들면 기존 리소스 또는 데이터의 조회&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;수정 제외&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;가 여기에 해당합니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;2. roles/editor&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;모든 뷰어 권한에 더해 기존 리소스 변경과 같이 상태를 변경하는 작업에 대한 권한까지 포함됩니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;3. roles/owner&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;모든 편집자 권한 및 다음 작업에 대한 권한&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;프로젝트 및 프로젝트 내의 모든 리소스에 대한 역할 및 관리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;프로젝트에 대한 결제 설정&lt;/span&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;span&gt;roles/&lt;/span&gt;&lt;span&gt;탐색&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;폴더&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;조직&lt;/span&gt;&lt;span&gt;, Cloud IAM &lt;/span&gt;&lt;span&gt;정책을 포함한 프로젝트 계층 구조를 탐색할 수 있는 읽기 액세스 권한입니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;프로젝트의 리소스를 볼 수 있는 권한은 포함되어 있지 않습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&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;span&gt;각자 자신의 프로젝트 &lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;자신이 소유자&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;다른 교육생 &lt;/span&gt;&lt;span&gt;: role (&lt;/span&gt;&lt;span&gt;뷰어 역할을 배당&lt;/span&gt;&lt;span&gt;)&lt;/span&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;span&gt;cloud storage : &lt;/span&gt;&lt;span&gt;버킷 생성 &lt;/span&gt;&lt;span&gt;- &lt;/span&gt;&lt;span&gt;파일 업로드 &lt;/span&gt;&lt;span&gt;-&amp;gt; &lt;/span&gt;&lt;span&gt;해당 파일만 접근&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;기존 프로젝트 &lt;/span&gt;&lt;span&gt;ID&lt;/span&gt;&lt;span&gt;에 뷰어 권한을 제거&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;역할 추가 &lt;/span&gt;&lt;span&gt;: cloud storage &amp;gt; &lt;/span&gt;&lt;span&gt;저장소 개체 뷰어 &lt;/span&gt;&lt;span&gt;storage object viewer&lt;/span&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;&lt;span&gt;만든 프로젝트의 이름과 아이디&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;한번 생성된것은 수정이 불가능하다&lt;/span&gt;&lt;span&gt;.&lt;/span&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;구성원을 추가&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;권한은 뷰어로 주어서 &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;명을 추가&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;버킷추가&lt;/span&gt;&lt;/h3&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;span&gt;버킷 자체적으로 권한추가삭제가 가능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;다른 방법으로는 &lt;/span&gt;&lt;span&gt;IAM&lt;/span&gt;&lt;span&gt;에 따로 권한을 부여한 구성원을 추가 할 수도 있음&lt;/span&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;span&gt;IAM&lt;/span&gt;&lt;span&gt;목록을 확인하면 구성원이 잘 추가된 것을 확인 할 수 있음&lt;/span&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;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;사용자권한과 방화벽&lt;/span&gt;&lt;/h3&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;span&gt;키를 등록하지 않은 &lt;/span&gt;&lt;span&gt;instance&lt;/span&gt;&lt;span&gt;에 들어가서 방화벽 규칙 확인&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;키 값주고 &lt;/span&gt;&lt;span&gt;비밀키를 복사&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;커널로 들어가서 버킷의 파일 리스트를 확인하고 비밀키를 인스턴스에 복사&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;옮긴 키 파일을 등록&lt;/span&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;span&gt;network-manager&lt;/span&gt;&lt;span&gt;&amp;nbsp;권한이 부족해서 방화벽 룰을 삭제x&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;so 새로운 서비스 계정을 생성 &lt;/span&gt;&lt;span&gt;( compute security manager)&lt;/span&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;span&gt;1. &lt;/span&gt;&lt;span&gt;서비스 계정 추가 &lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;이름&lt;/span&gt;&lt;span&gt;:security manager &lt;/span&gt;&lt;span&gt;역할&lt;/span&gt;&lt;span&gt;:compute security manager&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;2. &lt;/span&gt;&lt;span&gt;생성한 서비스 계정에 &lt;/span&gt;&lt;span&gt;key&lt;/span&gt;&lt;span&gt;추가 &lt;/span&gt;&lt;span&gt;(json &lt;/span&gt;&lt;span&gt;파일 다운로드&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;3. &lt;/span&gt;&lt;span&gt;테스트할 &lt;/span&gt;&lt;span&gt;VM &lt;/span&gt;&lt;span&gt;인스턴스에 &lt;/span&gt;&lt;span&gt;key json&lt;/span&gt;&lt;span&gt;을 업로드 &lt;/span&gt;&lt;span&gt;(cloud storage &lt;/span&gt;&lt;span&gt;버킷 이용&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;4. instance 2&lt;/span&gt;&lt;span&gt;에서 &lt;/span&gt;&lt;span&gt;json &lt;/span&gt;&lt;span&gt;키 다운로드&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;5. key json &lt;/span&gt;&lt;span&gt;파일로 사용자 인증&lt;/span&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;span&gt;버킷에 생성한 키를 넣어주고 &lt;/span&gt;&lt;span&gt;instan2&lt;/span&gt;&lt;span&gt;에 옮겨서 권한 부여&lt;/span&gt;&lt;span&gt;.&lt;/span&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;APP Engin&lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;/h3&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;span&gt;PHP &lt;/span&gt;&lt;span&gt;어플리케이션 다운로드&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;테스트&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;애플리케이션 배포 &lt;/span&gt;&lt;span&gt;(app engine )&lt;/span&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;span&gt;GCP &lt;/span&gt;&lt;span&gt;계정 로그인 &lt;/span&gt;&lt;span&gt;&amp;gt; console &lt;/span&gt;&lt;span&gt;접속 &lt;/span&gt;&lt;span&gt;&amp;gt; gcloud shell&lt;/span&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;span&gt;$ gcloud auth list&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;계정 정보&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;$ gcloud config list project &amp;nbsp; &lt;/span&gt;&lt;span&gt;프로젝트&lt;/span&gt;&lt;span&gt;ID &lt;/span&gt;&lt;span&gt;확인&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;app engine&lt;/span&gt;&lt;span&gt;을 위한 &lt;/span&gt;&lt;span&gt;API &lt;/span&gt;&lt;span&gt;활성화 &lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;탐색 메뉴 &lt;/span&gt;&lt;span&gt;&amp;gt; API &lt;/span&gt;&lt;span&gt;및 서비스 &lt;/span&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;라이브러리 &lt;/span&gt;&lt;span&gt;&amp;gt;&amp;nbsp; app engine &lt;/span&gt;&lt;span&gt;검색&lt;/span&gt;&lt;span&gt;&amp;nbsp; : App Engine Admin API &lt;/span&gt;&lt;span&gt;선택&lt;/span&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;사용 클릭 &lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;활성화&lt;/span&gt;&lt;span&gt;)&lt;/span&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;span&gt;배포&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;(gcloud shell&lt;/span&gt;&lt;span&gt;에서 계정과 프로젝트 &lt;/span&gt;&lt;span&gt;ID&lt;/span&gt;&lt;span&gt;확인&lt;/span&gt;&lt;span&gt;)&lt;/span&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;&lt;span&gt;링크를 타고 들어가면 다음과 값이 &lt;/span&gt;&lt;span&gt;index&lt;/span&gt;&lt;span&gt;에 설정된 내용이 나온다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;app Engine &lt;/span&gt;&lt;span&gt;대시보드로 전체적인 상황을 확인 할 수 있다&lt;/span&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;span&gt;---------------------------------------------------------------------------------&lt;/span&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;span&gt;IAP(Identity-Aware Proxy)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;network performance &lt;/span&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;span&gt;사용자 인증&lt;/span&gt;&lt;span&gt;: IAP(Identity-Aware Proxy)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://cloud.google.com/iap/docs/concepts-overview?hl=ko&quot;&gt;https://cloud.google.com/iap/docs/concepts-overview?hl=ko&lt;/a&gt;&lt;/span&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;&lt;span&gt;로그인을 위해 브라우저 쿠키에 토큰을 저장하는 &lt;/span&gt;&lt;span&gt;OAuth 2.0 Google &lt;/span&gt;&lt;span&gt;계정 로그인 과정으로 사용자가 리디렉션&lt;/span&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;span&gt;요청 사용자 인증 정보가 유효하면&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;인증 서버가 해당 사용자 인증 정보를 사용하여 사용자의 &lt;/span&gt;&lt;span&gt;ID(&lt;/span&gt;&lt;span&gt;이메일 주소 및 사용자 &lt;/span&gt;&lt;span&gt;ID)&lt;/span&gt;&lt;span&gt;를 가져옴&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;그런 다음 인증 서버가 &lt;/span&gt;&lt;span&gt;ID&lt;/span&gt;&lt;span&gt;를 사용하여 사용자의 &lt;/span&gt;&lt;span&gt;IAM &lt;/span&gt;&lt;span&gt;역할을 확인하고 사용자에게 리소스에 액세스할 권한이 있는지 확인&lt;/span&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;span&gt;개발자 책임&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://cloud.google.com/iap/docs/concepts-overview?hl=ko#your_responsibilities&quot;&gt;https://cloud.google.com/iap/docs/concepts-overview?hl=ko#your_responsibilities&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;OAuth 2.0&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc6749&quot;&gt;https://datatracker.ietf.org/doc/html/rfc6749&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://developers.google.com/identity/protocols/oauth2?hl=ko&quot;&gt;https://developers.google.com/identity/protocols/oauth2?hl=ko&lt;/a&gt;&lt;/span&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;span&gt;&lt;/span&gt;&lt;span&gt;IAP &lt;/span&gt;&lt;span&gt;실습&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;소스 &lt;/span&gt;&lt;span&gt;: github &lt;a href=&quot;https://github.com/googlecodelabs/user-authentication-with-iap&quot;&gt;https://github.com/googlecodelabs/user-authentication-with-iap&lt;/a&gt;&lt;/span&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;span&gt;소스 다운로드&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;$ git clone &lt;a href=&quot;https://github.com/googlecodelabs/user-authentication-with-iap.git&quot;&gt;https://github.com/googlecodelabs/user-authentication-with-iap.git&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;그냥 &lt;/span&gt;&lt;span&gt;html &lt;/span&gt;&lt;span&gt;파일 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;인증없이 &lt;/span&gt;&lt;span&gt;deploy &lt;/span&gt;&lt;span&gt;페이지 확인&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;번 소스 &lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;IAP &lt;/span&gt;&lt;span&gt;활성화 &lt;/span&gt;&lt;span&gt;-&amp;gt; &lt;/span&gt;&lt;span&gt;사용자 등록되어 있지 않으면 페이지 안보임&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;사용자 계정 등록 &lt;/span&gt;&lt;span&gt;-&amp;gt; &lt;/span&gt;&lt;span&gt;등록한 사람만 페이지가 보임&lt;/span&gt;&lt;span&gt;.&lt;/span&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;span&gt;2&lt;/span&gt;&lt;span&gt;번 소스 &lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;인증된 사용자의 &lt;/span&gt;&lt;span&gt;ID, email &lt;/span&gt;&lt;span&gt;전송 &lt;/span&gt;&lt;span&gt;-&amp;gt; &lt;/span&gt;&lt;span&gt;웹페이지에 보임&lt;/span&gt;&lt;span&gt;.&lt;/span&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;span&gt;3&lt;/span&gt;&lt;span&gt;번 소스 &lt;/span&gt;&lt;span&gt;: email, id&lt;/span&gt;&lt;span&gt;정보를 확인하여 화면에 출력&lt;/span&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;IAP &lt;/span&gt;&lt;span&gt;구성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;탐색 메뉴 &lt;/span&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;보안 &lt;/span&gt;&lt;span&gt;&amp;gt; Identity-Aware Proxy &amp;gt; &lt;/span&gt;&lt;span&gt;활성화&lt;/span&gt;&lt;span&gt;(enable API) &amp;gt; IAP&lt;/span&gt;&lt;span&gt;로 이동&lt;/span&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;span&gt;IAP&lt;/span&gt;&lt;span&gt;문서&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://cloud.google.com/iap/docs?_ga=2.262243595.-602123755.1629764672&quot;&gt;https://cloud.google.com/iap/docs?_ga=2.262243595.-602123755.1629764672&lt;/a&gt;&lt;/span&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;span&gt;IAP &lt;/span&gt;&lt;span&gt;페이지 &lt;/span&gt;&lt;span&gt;&amp;gt; https &lt;/span&gt;&lt;span&gt;리소스 &lt;/span&gt;&lt;span&gt;&amp;gt; App engine &lt;/span&gt;&lt;span&gt;앱 체크박스 &lt;/span&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;우측 화면 &lt;/span&gt;&lt;span&gt;&amp;gt; add member &lt;/span&gt;&lt;span&gt;구성원 추가 &lt;/span&gt;&lt;span&gt;( &lt;/span&gt;&lt;span&gt;자신의 &lt;/span&gt;&lt;span&gt;email, &lt;/span&gt;&lt;span&gt;짝꿍 &lt;/span&gt;&lt;span&gt;email &lt;/span&gt;&lt;span&gt;추가&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;역할 &lt;/span&gt;&lt;span&gt;: Cloud IAP &amp;gt; IAP secured web app user &lt;/span&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;span&gt;-------------------------------------------------------------------------------------------------------------&lt;/span&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;&lt;span&gt;network performance testing&lt;/span&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;span&gt;deployment manager&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://cloud.google.com/deployment-manager/docs&quot;&gt;https://cloud.google.com/deployment-manager/docs&lt;/a&gt;&lt;/span&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;&lt;span&gt;networking-lab.yaml&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;imports:&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- path: vm-template.jinja&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- path: network-template.jinja&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- path: subnetwork-template.jinja&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- path: compute-engine-template.jinja&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- path: firewall-template.jinja&lt;/span&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;span&gt;compute engine &lt;/span&gt;&lt;span&gt;서비스 중에 &lt;/span&gt;&lt;span&gt;VM instance &lt;/span&gt;&lt;span&gt;삭제&lt;/span&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;span&gt;app engine URL : imports:&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- path: vm-template.jinja&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- path: network-template.jinja&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- path: subnetwork-template.jinja&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- path: compute-engine-template.jinja&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- path: firewall-template.jinja&lt;/span&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;span&gt;타이완 &lt;/span&gt;&lt;span&gt;(asia-east1)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;벨기에 &lt;/span&gt;&lt;span&gt;(europe-west1)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;오리건 &lt;/span&gt;&lt;span&gt;(us-west1)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;사우스캐롤라이나 &lt;/span&gt;&lt;span&gt;(us-east1)&lt;/span&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;span&gt;대륙간의 &lt;/span&gt;&lt;span&gt;delay &lt;/span&gt;&lt;span&gt;지연 시간 파악 &lt;/span&gt;&lt;span&gt;: ping&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;미국 &lt;/span&gt;&lt;span&gt;VM(&lt;/span&gt;&lt;span&gt;오리건&lt;/span&gt;&lt;span&gt;)-------------------------&lt;/span&gt;&lt;span&gt;유럽 &lt;/span&gt;&lt;span&gt;VM (&lt;/span&gt;&lt;span&gt;벨기에&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;&amp;rarr; &lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;e1-vm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;eu1-vm&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;미국 &lt;/span&gt;&lt;span&gt;VM(&lt;/span&gt;&lt;span&gt;오리건&lt;/span&gt;&lt;span&gt;) -------------------------&lt;/span&gt;&lt;span&gt;아시아 &lt;/span&gt;&lt;span&gt;VM (&lt;/span&gt;&lt;span&gt;타이완&lt;/span&gt;&lt;span&gt;) -&amp;gt; 181&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;e1-vm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;asia1-vm&lt;/span&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;span&gt;intance SSH &lt;/span&gt;&lt;span&gt;접속 &lt;/span&gt;&lt;span&gt;$ ping [external IP address]&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;[Internal IP address]&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;[FQDN]&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;hostname.&lt;/span&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;span&gt;내부 &lt;/span&gt;&lt;span&gt;DNS&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;FQDN(&lt;/span&gt;&lt;span&gt;정규화된 도메인 이름&lt;/span&gt;&lt;span&gt;) : hostName.[zone].c.[projectID].internal&lt;/span&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;span&gt;미국 동부 지역에서 유럽 서부 지역까지 대기시간&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;e1-vm$ ping eu1-vm.europe-west1-d (&lt;/span&gt;&lt;span&gt;또는 &lt;/span&gt;&lt;span&gt;internal IP)&lt;/span&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;&lt;span&gt;&lt;a href=&quot;https://cloud.google.com/solutions/best-practices-compute-engine-region-selection/?hl=ko#region-latency&quot;&gt;https://cloud.google.com/solutions/best-practices-compute-engine-region-selection/?hl=ko#region-latency&lt;/a&gt;&lt;/span&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;span&gt;서브마린&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://www.submarinenetworks.com/en/insights/complete-list-of-google-s-subsea-cable-investments&quot;&gt;https://www.submarinenetworks.com/en/insights/complete-list-of-google-s-subsea-cable-investments&lt;/a&gt;&lt;/span&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;span&gt;EU&lt;/span&gt;&lt;span&gt;와 아시아 위치 간의 지연 시간이 매우 김&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;현재 &lt;/span&gt;&lt;span&gt;Compute Engine&lt;/span&gt;&lt;span&gt;에는 유럽과 아시아 간의 사용할 수 있는 직접 링크가 없음&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;네트워크 관점에서 하나의 글로벌 위치만 사용하여 서비스를 실행하는 경우&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;해당 위치를 미국 중부에 두는 것이 좋음&lt;/span&gt;&lt;span&gt;.&lt;/span&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;&lt;span&gt;MTR &lt;/span&gt;&lt;span&gt;유틸을 이용해서 네트워크 진단 &lt;/span&gt;&lt;span&gt;: ping + traceroute&lt;/span&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;span&gt;iperf (server/client) &lt;/span&gt;&lt;span&gt;성능 테스트&lt;/span&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;&lt;span&gt;Host : &lt;/span&gt;&lt;span&gt;목적지까지 거쳐가는 게이트웨이어 &lt;/span&gt;&lt;span&gt;IP&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Loss : &lt;/span&gt;&lt;span&gt;손실율&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Snt : ping&lt;/span&gt;&lt;span&gt;을 보낸 수&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;누적&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Last : ping &lt;/span&gt;&lt;span&gt;최근 응답시간&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Avg : ping &lt;/span&gt;&lt;span&gt;평균 응답시간&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Best : ping &lt;/span&gt;&lt;span&gt;중 제일 빠른 응답시간&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Wrst : ping &lt;/span&gt;&lt;span&gt;중 최악 응답시간&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;StDev : &lt;/span&gt;&lt;span&gt;표준편차&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;H : &lt;/span&gt;&lt;span&gt;설명&lt;/span&gt;&lt;span&gt;, D:&lt;/span&gt;&lt;span&gt;디스플레이모드&lt;/span&gt;&lt;span&gt;, R: &lt;/span&gt;&lt;span&gt;통계 재시작&lt;/span&gt;&lt;span&gt;, O:&lt;/span&gt;&lt;span&gt;정렬 필드 선택&lt;/span&gt;&lt;span&gt;, q:&lt;/span&gt;&lt;span&gt;종료&lt;/span&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;span&gt;성능 테스트 &lt;/span&gt;&lt;span&gt;iperf&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;server / client&lt;/span&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;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;system1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;system2&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;eu1-vm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;e1-vm&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;iperf -s &lt;/span&gt;&lt;span&gt;서버&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;대기&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;iperf -c [eu1-vm&lt;/span&gt;&lt;span&gt;정보&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;tcp &lt;/span&gt;&lt;span&gt;세션 맺어 데이터 전송&lt;/span&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;span&gt;\* &lt;/span&gt;&lt;span&gt;주의사항 &lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;기가 바이트로 전송을함&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;이에 따른 인터넷 요금 부가 가능성이 있음&lt;/span&gt;&lt;span&gt;.&lt;/span&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;span&gt;us - asia&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;eu - asia&lt;/span&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;span&gt;instance &lt;/span&gt;&lt;span&gt;머신 유형&lt;/span&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;span&gt;tcp &lt;/span&gt;&lt;span&gt;윈도우 사이즈 변경&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Server : iperf -s -w &lt;/span&gt;&lt;span&gt;사이즈&lt;/span&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;span&gt;UDP &lt;/span&gt;&lt;span&gt;성능 테스트&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;server : iperf -s -u&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;client : iperf -c -u [servre&lt;/span&gt;&lt;span&gt;정보&lt;/span&gt;&lt;span&gt;]&lt;/span&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;span&gt; &lt;/span&gt;&lt;span&gt;eu1-vm : iperf -s -u &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;e1-vm : iperf -c eu1-vm.europe-west1-d -u -b 2G&lt;/span&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;span&gt;미국 &lt;/span&gt;&lt;span&gt;- EU &lt;/span&gt;&lt;span&gt;사이에 다 빠른 속도&lt;/span&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;span&gt;멀티 쓰레드로 전송하기 &lt;/span&gt;&lt;span&gt;(-P &lt;/span&gt;&lt;span&gt;숫자&lt;/span&gt;&lt;span&gt;)&lt;/span&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;span&gt; &lt;/span&gt;&lt;span&gt;eu1-vm : iperf -s&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;e1-vm : iperf -c eu1-vm.europe-west1-d -P 10&lt;/span&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;span&gt;패킷 캡쳐 하는 툴 &lt;/span&gt;&lt;span&gt;: CLI -&amp;gt; tcpdump&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;메뉴얼 페이지&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://www.tcpdump.org/manpages/tcpdump.1.html&quot;&gt;https://www.tcpdump.org/manpages/tcpdump.1.html&lt;/a&gt;&lt;/span&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;span&gt;유럽 &lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;패킷 캡쳐 시작&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;sudo tcpdump -c 1000 -i eth0 host 10.20.0.2 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;not tcp port 22&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;미국 &lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;데이터 전송&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;ping -c 100 &lt;/span&gt;&lt;span&gt;시스템&lt;/span&gt;&lt;span&gt;IP&lt;/span&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;span&gt;유럽 &lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;패킷 캡쳐 중지 &lt;/span&gt;&lt;span&gt;ctrl+c&lt;/span&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;span&gt;유럽 &lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;웹접속 데이터 캡쳐&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;sudo apt-get install -y apaceh2&lt;/span&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;span&gt;유럽 &lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;패킷캡쳐 시작&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;저장&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;sudo tcpdump -i eth0 -c 1000 -s 1460 -w webserver.pcap tcp tcp 80&lt;/span&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;span&gt;미국 &lt;/span&gt;&lt;span&gt;: curl eu1-vm.europe-west1-d&lt;/span&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;span&gt;유럽 &lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;캡쳐 중지 &lt;/span&gt;&lt;span&gt;ctrl + c&lt;/span&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;span&gt;본인 &lt;/span&gt;&lt;span&gt;pc&lt;/span&gt;&lt;span&gt;로 다운로드 하여 &lt;/span&gt;&lt;span&gt;wireshark(&lt;/span&gt;&lt;span&gt;무료&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;분석&lt;/span&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;span&gt;wireshark :GUI &lt;/span&gt;&lt;span&gt;유틸리티&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;tcpdump &lt;/span&gt;&lt;span&gt;캡쳐한 파일을 저장해서 다운로드 해서 본인 &lt;/span&gt;&lt;span&gt;pc&lt;/span&gt;&lt;span&gt;에서 확인&lt;/span&gt;&lt;span&gt;.&lt;/span&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;span&gt;cloudshark (&lt;/span&gt;&lt;span&gt;회원가입&lt;/span&gt;&lt;span&gt;) - &lt;/span&gt;&lt;span&gt;보안 이슈가 없는 파일만 볼것&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://www.cloudshark.org/captures/1a9c284c49b0&quot;&gt;https://www.cloudshark.org/captures/1a9c284c49b0&lt;/a&gt;&lt;/span&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;&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;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;GCP &lt;/span&gt;&lt;span&gt;삭제&amp;nbsp;&lt;/span&gt;&lt;/h4&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;span&gt;스냅샵&lt;/span&gt;&lt;span&gt;, disk, &lt;/span&gt;&lt;span&gt;이미지 삭제&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;app engine : &lt;/span&gt;&lt;span&gt;인스턴스&lt;/span&gt;&lt;span&gt;, app &lt;/span&gt;&lt;span&gt;구버전&lt;/span&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;span&gt;고정 &lt;/span&gt;&lt;span&gt;IP &lt;/span&gt;&lt;span&gt;해제&lt;/span&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;span&gt;app engine &lt;/span&gt;&lt;span&gt;애플리케이션 서비스 중지&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;기존 버전&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;인스턴스 삭제&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;compute eingie &lt;/span&gt;&lt;span&gt;중지 &lt;/span&gt;&lt;span&gt;- &lt;/span&gt;&lt;span&gt;삭제&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;스토리지 &lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;버킷 내에 파일이나 디렉토리 먼저 삭제&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;버킷 삭제&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;deployment manager &lt;/span&gt;&lt;span&gt;중지되어있는지 확인&lt;/span&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;span&gt;네트워크 &lt;/span&gt;&lt;span&gt;: nw-testing, &lt;/span&gt;&lt;span&gt;방화벽 정책&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;IAP &lt;/span&gt;&lt;span&gt;사용중지&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;API &lt;/span&gt;&lt;span&gt;사용중지&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;프로젝스 삭제&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;결제 &lt;/span&gt;&lt;span&gt;- &lt;/span&gt;&lt;span&gt;결제 중지&lt;/span&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;</description>
      <category>혁신성장 프로젝트</category>
      <author>yewon</author>
      <guid isPermaLink="true">https://yewon.tistory.com/115</guid>
      <comments>https://yewon.tistory.com/115#entry115comment</comments>
      <pubDate>Thu, 26 Aug 2021 19:34:54 +0900</pubDate>
    </item>
    <item>
      <title>[08.26] 주피터 매개변수/음성인식/음성변환...등등</title>
      <link>https://yewon.tistory.com/114</link>
      <description>&lt;h1&gt;Python 및 Jupyter 노트북의 음성 인식&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;터미널에서 음성 인식, PyAudio 및 Jupyter Notebook 다운로드&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;음성 인식을 다운로드하려면:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;python &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;m pip install &lt;/span&gt;&lt;span&gt;SpeechRecognition&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PyAudio를 다운로드하기 전에 homebrew에서 설치해야 하는 몇 가지 파일이 있음&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;양조 설치 portaudiopip install --allow-external pyaudio --allow-unverified paudio pyaudio&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(Jupyter Notebook을 설치하기 전에 Python 버전을 확인)&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;기본 브라우저에서 Jupyter 노트북 열기&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널에 &quot;jupyter notebook&quot;을 입력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바탕 화면으로 이동하여 J새 Python 파일을 추가(터미널을 닫으면 안됌).&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;391&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqtiEr/btrdfGPHtic/59WzaAtK1B5QcRuXj6ytR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqtiEr/btrdfGPHtic/59WzaAtK1B5QcRuXj6ytR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqtiEr/btrdfGPHtic/59WzaAtK1B5QcRuXj6ytR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqtiEr%2FbtrdfGPHtic%2F59WzaAtK1B5QcRuXj6ytR1%2Fimg.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;391&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;코드를 순서대로 입력하세요.&lt;br /&gt;새 Python 파일이 생성되면 아래 수식을 추가하고 실행합니다.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1096&quot; data-origin-height=&quot;536&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dFZ13v/btrdjeE99YS/vuUY1kTW638AtxfJwMuMHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dFZ13v/btrdjeE99YS/vuUY1kTW638AtxfJwMuMHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dFZ13v/btrdjeE99YS/vuUY1kTW638AtxfJwMuMHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdFZ13v%2FbtrdjeE99YS%2FvuUY1kTW638AtxfJwMuMHk%2Fimg.png&quot; data-origin-width=&quot;1096&quot; data-origin-height=&quot;536&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;축하합니다!&amp;nbsp;당신은 당신만의 음성 인식 공식을 만들었습니다.&lt;br /&gt;선택 사항: 언어를 변경합니다.&lt;br /&gt;선택한 언어를 변경하려면 인쇄 코드를 계속 입력하여 언어를 추가하십시오&amp;nbsp;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; srcset=&quot;https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-10-30-55.png?w=558 558w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-10-30-55.png?w=1116 1116w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-10-30-55.png?w=150 150w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-10-30-55.png?w=300 300w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-10-30-55.png?w=768 768w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-10-30-55.png?w=1024 1024w&quot; data-attachment-id=&quot;270&quot; data-permalink=&quot;https://janicesandadi.wordpress.com/2018/09/12/learning-journal-voice-recognition-in-python-and-jupyter-notebook/screen-shot-2018-09-12-at-10-30-55/#main&quot; data-orig-file=&quot;https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-10-30-55.png&quot; data-orig-size=&quot;2352,192&quot; data-comments-opened=&quot;1&quot; data-image-meta=&quot;{&quot; data-image-title=&quot;Screen Shot 2018-09-12 at 10.30.55&quot; data-medium-file=&quot;https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-10-30-55.png?w=300&quot; data-large-file=&quot;https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-10-30-55.png?w=558&quot; data-origin-width=&quot;873&quot; data-origin-height=&quot;71&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5K5Lr/btrdfINuhyh/gvoAwDpuKe59RE9MzI5zpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5K5Lr/btrdfINuhyh/gvoAwDpuKe59RE9MzI5zpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5K5Lr/btrdfINuhyh/gvoAwDpuKe59RE9MzI5zpk/img.png&quot; srcset=&quot;https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-10-30-55.png?w=558 558w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-10-30-55.png?w=1116 1116w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-10-30-55.png?w=150 150w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-10-30-55.png?w=300 300w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-10-30-55.png?w=768 768w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-10-30-55.png?w=1024 1024w&quot; data-attachment-id=&quot;270&quot; data-permalink=&quot;https://janicesandadi.wordpress.com/2018/09/12/learning-journal-voice-recognition-in-python-and-jupyter-notebook/screen-shot-2018-09-12-at-10-30-55/#main&quot; data-orig-file=&quot;https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-10-30-55.png&quot; data-orig-size=&quot;2352,192&quot; data-comments-opened=&quot;1&quot; data-image-meta=&quot;{&quot; data-image-title=&quot;Screen Shot 2018-09-12 at 10.30.55&quot; data-medium-file=&quot;https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-10-30-55.png?w=300&quot; data-large-file=&quot;https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-10-30-55.png?w=558&quot; data-origin-width=&quot;873&quot; data-origin-height=&quot;71&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; srcset=&quot;https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-09-29-54.png?w=558 558w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-09-29-54.png?w=1116 1116w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-09-29-54.png?w=150 150w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-09-29-54.png?w=300 300w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-09-29-54.png?w=768 768w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-09-29-54.png?w=1024 1024w&quot; data-attachment-id=&quot;269&quot; data-permalink=&quot;https://janicesandadi.wordpress.com/2018/09/12/learning-journal-voice-recognition-in-python-and-jupyter-notebook/screen-shot-2018-09-12-at-09-29-54/#main&quot; data-orig-file=&quot;https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-09-29-54.png&quot; data-orig-size=&quot;2402,1444&quot; data-comments-opened=&quot;1&quot; data-image-meta=&quot;{&quot; data-image-title=&quot;Screen Shot 2018-09-12 at 09.29.54&quot; data-medium-file=&quot;https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-09-29-54.png?w=300&quot; data-large-file=&quot;https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-09-29-54.png?w=558&quot; data-origin-width=&quot;879&quot; data-origin-height=&quot;528&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcXVwU/btrdesYH49W/4dF8MeWr7aOIj2kHgKEeLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcXVwU/btrdesYH49W/4dF8MeWr7aOIj2kHgKEeLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcXVwU/btrdesYH49W/4dF8MeWr7aOIj2kHgKEeLk/img.png&quot; srcset=&quot;https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-09-29-54.png?w=558 558w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-09-29-54.png?w=1116 1116w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-09-29-54.png?w=150 150w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-09-29-54.png?w=300 300w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-09-29-54.png?w=768 768w, https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-09-29-54.png?w=1024 1024w&quot; data-attachment-id=&quot;269&quot; data-permalink=&quot;https://janicesandadi.wordpress.com/2018/09/12/learning-journal-voice-recognition-in-python-and-jupyter-notebook/screen-shot-2018-09-12-at-09-29-54/#main&quot; data-orig-file=&quot;https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-09-29-54.png&quot; data-orig-size=&quot;2402,1444&quot; data-comments-opened=&quot;1&quot; data-image-meta=&quot;{&quot; data-image-title=&quot;Screen Shot 2018-09-12 at 09.29.54&quot; data-medium-file=&quot;https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-09-29-54.png?w=300&quot; data-large-file=&quot;https://janicesandadi.files.wordpress.com/2018/09/screen-shot-2018-09-12-at-09-29-54.png?w=558&quot; data-origin-width=&quot;879&quot; data-origin-height=&quot;528&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;참고문헌&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;a0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developers.google.com/admin-sdk/directory/v1/languages&quot;&gt;https://developers.google.com/admin-sdk/directory/v1/languages&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;a1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://jupyter.org/&quot;&gt;http://jupyter.org/&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&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;참고사이트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://janicesandadi.wordpress.com/2018/09/12/learning-journal-voice-recognition-in-python-and-jupyter-notebook/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://janicesandadi.wordpress.com/2018/09/12/learning-journal-voice-recognition-in-python-and-jupyter-notebook/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1629962979174&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;Learning journal: Voice recognition in Python and Jupyter Notebook&quot; data-og-description=&quot;Discovering the unlimited usage in Python triggers developers to learn more platforms that supported by Python. Each platform has different uses and purposes. OpenCV is usually used to create gestu&amp;hellip;&quot; data-og-host=&quot;janicesandadi.wordpress.com&quot; data-og-source-url=&quot;https://janicesandadi.wordpress.com/2018/09/12/learning-journal-voice-recognition-in-python-and-jupyter-notebook/&quot; data-og-url=&quot;https://janicesandadi.wordpress.com/2018/09/12/learning-journal-voice-recognition-in-python-and-jupyter-notebook/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bNxHw3/hyLosB9J8z/fspnerHzsKRiAquozUy3q0/img.png?width=2346&amp;amp;height=718&amp;amp;face=0_0_2346_718,https://scrap.kakaocdn.net/dn/bomWEY/hyLogobmki/KTtJLyP3Dam9IyadZx7hbK/img.png?width=1090&amp;amp;height=430&amp;amp;face=0_0_1090_430,https://scrap.kakaocdn.net/dn/cPhSM0/hyLogPf9bi/aVgdcJAiUhWakmpLv14sWk/img.png?width=1397&amp;amp;height=435&amp;amp;face=0_0_1397_435&quot;&gt;&lt;a href=&quot;https://janicesandadi.wordpress.com/2018/09/12/learning-journal-voice-recognition-in-python-and-jupyter-notebook/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://janicesandadi.wordpress.com/2018/09/12/learning-journal-voice-recognition-in-python-and-jupyter-notebook/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bNxHw3/hyLosB9J8z/fspnerHzsKRiAquozUy3q0/img.png?width=2346&amp;amp;height=718&amp;amp;face=0_0_2346_718,https://scrap.kakaocdn.net/dn/bomWEY/hyLogobmki/KTtJLyP3Dam9IyadZx7hbK/img.png?width=1090&amp;amp;height=430&amp;amp;face=0_0_1090_430,https://scrap.kakaocdn.net/dn/cPhSM0/hyLogPf9bi/aVgdcJAiUhWakmpLv14sWk/img.png?width=1397&amp;amp;height=435&amp;amp;face=0_0_1397_435');&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;Learning journal: Voice recognition in Python and Jupyter Notebook&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Discovering the unlimited usage in Python triggers developers to learn more platforms that supported by Python. Each platform has different uses and purposes. OpenCV is usually used to create gestu&amp;hellip;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;janicesandadi.wordpress.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;&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;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Speech Recognition - Jupyter Notebook 영상&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=S1Ow2D_DL0s&quot;&gt;https://www.youtube.com/watch?v=S1Ow2D_DL0s&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=S1Ow2D_DL0s&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/lhE9z/hyLosWrsAR/NV3OIEAoNG0KXgqeXe4bI1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/S1Ow2D_DL0s&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&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;&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;&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;h2 data-ke-size=&quot;size26&quot;&gt;tts 음성변환&lt;/h2&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;TTS 모델 학습 &amp;gt; 두 가지 단계로 나뉘어 수행&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;텍스트 문장을 Mel spectrogram으로 변환&lt;/li&gt;
&lt;li&gt;Mel spectrogram을 오디오 데이터로 변환&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;*Mel spectrogram&lt;/span&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 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;또한 둘 중 하나의 모델만을 학습시켜도 음성 합성 결과를 테스트해볼수 있음.&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;Glow-TTS는 생성하는 음성의 말투와 음색을 결정하게 되고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HiFi-GAN은 Glow-TTS로 생성한 음성을 실제 화자의 음색과 더 비슷하게 만들어준다고 볼 수 있음&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;size14&quot;&gt;문제 개선&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;만약&lt;span&gt;&amp;nbsp;&lt;/span&gt;합성된 음성의 말투가 이상하다면 Glow-TTS 모델을 더&lt;span&gt;&amp;nbsp;&lt;/span&gt;학습&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;합성된 음성에 이상한 노이즈가 있거나 음색이 다르다면&lt;span&gt;&amp;nbsp;&lt;/span&gt;HiFi-GAN 모델을 더 학습&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;Glow-TTS&lt;/li&gt;
&lt;li&gt;HiFi-GAN&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1629976877131&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;SCE-TTS: 내 목소리로 TTS 만들기&quot; data-og-description=&quot;문서를 불러오고 있습니다...&quot; data-og-host=&quot;sce-tts.github.io&quot; data-og-source-url=&quot;https://sce-tts.github.io/#/v2/train?id=glow-tts-%ed%95%99%ec%8a%b5&quot; data-og-url=&quot;https://sce-tts.github.io/#/v2/train?id=glow-tts-%ed%95%99%ec%8a%b5&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://sce-tts.github.io/#/v2/train?id=glow-tts-%ed%95%99%ec%8a%b5&quot; data-source-url=&quot;https://sce-tts.github.io/#/v2/train?id=glow-tts-%ed%95%99%ec%8a%b5&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;SCE-TTS: 내 목소리로 TTS 만들기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;문서를 불러오고 있습니다...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;sce-tts.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://sce-tts.github.io/#/v2/train?id=glow-tts-%ed%95%99%ec%8a%b5&quot;&gt;TTS 모델 학습 (sce-tts.github.io)&lt;/a&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;&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;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;구글링&amp;nbsp; 사이트&lt;/h2&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;&lt;a href=&quot;https://github.com/topics/korean-text-processing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/topics/korean-text-processing&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1629961720862&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub: Where the world builds software&quot; data-og-description=&quot;GitHub is where over 65 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and feat...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/topics/korean-text-processing&quot; data-og-url=&quot;https://github.com&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/g8mZQ/hyLnFJQK7w/HvLSHKj21RE1MLvgwVS8cK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bTmaYv/hyLnvHeTVL/Z0VCkN5KUflNaOucPRogx1/img.jpg?width=1238&amp;amp;height=1404&amp;amp;face=0_0_1238_1404&quot;&gt;&lt;a href=&quot;https://github.com/topics/korean-text-processing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/topics/korean-text-processing&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/g8mZQ/hyLnFJQK7w/HvLSHKj21RE1MLvgwVS8cK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bTmaYv/hyLnvHeTVL/Z0VCkN5KUflNaOucPRogx1/img.jpg?width=1238&amp;amp;height=1404&amp;amp;face=0_0_1238_1404');&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;GitHub: Where the world builds software&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;GitHub is where over 65 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and feat...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.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;&lt;a href=&quot;https://docs.microsoft.com/ko-kr/azure/cognitive-services/speech-service/how-to-specify-source-language?pivots=programming-language-csharp&quot;&gt;https://docs.microsoft.com/ko-kr/azure/cognitive-services/speech-service/how-to-specify-source-language?pivots=programming-language-csharp&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1629961364019&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;음성 텍스트 변환에 대한 소스 언어를 지정하는 방법 - Azure Cognitive Services&quot; data-og-description=&quot;Speech SDK를 사용하면 음성을 텍스트로 변환할 때 소스 언어를 지정할 수 있습니다. 이 문서에서는 FromConfig 및 SourceLanguageConfig 메서드를 사용하여 Speech Service에 소스 언어를 알리고 사용자 지정 모&quot; data-og-host=&quot;docs.microsoft.com&quot; data-og-source-url=&quot;https://docs.microsoft.com/ko-kr/azure/cognitive-services/speech-service/how-to-specify-source-language?pivots=programming-language-csharp&quot; data-og-url=&quot;https://docs.microsoft.com/ko-kr/azure/cognitive-services/speech-service/how-to-specify-source-language&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/WVRNi/hyLojSJokw/U2xtpHpkg71f1yfIM6krZ0/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400,https://scrap.kakaocdn.net/dn/nH7aI/hyLomIGTSq/TPtcXpxxF4HybZOGTT87OK/img.png?width=420&amp;amp;height=420&amp;amp;face=0_0_420_420,https://scrap.kakaocdn.net/dn/c2zKc3/hyLot8SGrJ/Eau5UOmKP5z0jFHvjRESW1/img.png?width=420&amp;amp;height=420&amp;amp;face=0_0_420_420&quot;&gt;&lt;a href=&quot;https://docs.microsoft.com/ko-kr/azure/cognitive-services/speech-service/how-to-specify-source-language?pivots=programming-language-csharp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.microsoft.com/ko-kr/azure/cognitive-services/speech-service/how-to-specify-source-language?pivots=programming-language-csharp&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/WVRNi/hyLojSJokw/U2xtpHpkg71f1yfIM6krZ0/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400,https://scrap.kakaocdn.net/dn/nH7aI/hyLomIGTSq/TPtcXpxxF4HybZOGTT87OK/img.png?width=420&amp;amp;height=420&amp;amp;face=0_0_420_420,https://scrap.kakaocdn.net/dn/c2zKc3/hyLot8SGrJ/Eau5UOmKP5z0jFHvjRESW1/img.png?width=420&amp;amp;height=420&amp;amp;face=0_0_420_420');&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;음성 텍스트 변환에 대한 소스 언어를 지정하는 방법 - Azure Cognitive Services&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Speech SDK를 사용하면 음성을 텍스트로 변환할 때 소스 언어를 지정할 수 있습니다. 이 문서에서는 FromConfig 및 SourceLanguageConfig 메서드를 사용하여 Speech Service에 소스 언어를 알리고 사용자 지정 모&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.microsoft.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://zzsza.github.io/mlops/2020/03/08/airflow-with-notebook-using-papermill/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://zzsza.github.io/mlops/2020/03/08/airflow-with-notebook-using-papermill/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1629961639205&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;Papermill을 사용해 Jupyter Notebook에 파라미터 주입하기(feat. airflow)&quot; data-og-description=&quot;Papermill Jupyter Notebook(노트북 파라미터화)에 대한 내용과 Airflow에서 활용하는 방법에 대해 작성한 글입니다 jupyter notebook run with parameter, run jupyter notebook with parameters, execute notebook with the custom argumen&quot; data-og-host=&quot;zzsza.github.io&quot; data-og-source-url=&quot;https://zzsza.github.io/mlops/2020/03/08/airflow-with-notebook-using-papermill/&quot; data-og-url=&quot;https://zzsza.github.io/mlops/2020/03/08/airflow-with-notebook-using-papermill/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/edVmDc/hyLopSXbEw/mAshlHWmv5Xk5hBu2YvpaK/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512&quot;&gt;&lt;a href=&quot;https://zzsza.github.io/mlops/2020/03/08/airflow-with-notebook-using-papermill/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://zzsza.github.io/mlops/2020/03/08/airflow-with-notebook-using-papermill/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/edVmDc/hyLopSXbEw/mAshlHWmv5Xk5hBu2YvpaK/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512');&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;Papermill을 사용해 Jupyter Notebook에 파라미터 주입하기(feat. airflow)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Papermill Jupyter Notebook(노트북 파라미터화)에 대한 내용과 Airflow에서 활용하는 방법에 대해 작성한 글입니다 jupyter notebook run with parameter, run jupyter notebook with parameters, execute notebook with the custom argumen&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;zzsza.github.io&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;</description>
      <category>혁신성장 프로젝트</category>
      <author>yewon</author>
      <guid isPermaLink="true">https://yewon.tistory.com/114</guid>
      <comments>https://yewon.tistory.com/114#entry114comment</comments>
      <pubDate>Thu, 26 Aug 2021 15:09:45 +0900</pubDate>
    </item>
    <item>
      <title>HiFi-GAN [X]</title>
      <link>https://yewon.tistory.com/113</link>
      <description>&lt;h1&gt;SCE-TTS: HiFi-GAN 학습&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문서는 SCE-TTS 프로젝트의 HiFi-GAN 학습용 문서입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 데모에 대한 더 자세한 정보는 아래 링크에서 확인하실 수 있습니다.&lt;br /&gt;&lt;a href=&quot;https://sce-tts.github.io/&quot;&gt;https://sce-tts.github.io/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 학습을 진행하시려면, 위쪽 메뉴에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;런타임 -&amp;gt; 모두 실행을 클릭하신 후,&lt;br /&gt;문서 최하단의&lt;span&gt;&amp;nbsp;&lt;/span&gt;HiFi-GAN 학습 진행까지 정상적으로 실행되는걸 확인해주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도중에 문제가 발생한다면, 문제의 원인을 해결한 후&lt;span&gt;&amp;nbsp;&lt;/span&gt;런타임 -&amp;gt; 런타임 초기화를 클릭하고,&lt;br /&gt;다시&lt;span&gt;&amp;nbsp;&lt;/span&gt;런타임 -&amp;gt; 모두 실행을 클릭해주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 할당된 GPU 확인&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 런타임에 할당된 GPU를 확인합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약,&lt;span&gt;&amp;nbsp;&lt;/span&gt;GPU: NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.&lt;span&gt;&amp;nbsp;&lt;/span&gt;라는 메시지가 출력된다면, 위쪽 메뉴에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;런타임 -&amp;gt; 런타임 유형 변경을 클릭하고 하드웨어 가속기를&lt;span&gt;&amp;nbsp;&lt;/span&gt;GPU로 변경하여 저장한 후 다시 실행해주세요.&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;span style=&quot;color: #af00db;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;os&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;GPU_NAME&amp;nbsp;=&amp;nbsp;os.popen(&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;'nvidia-smi&amp;nbsp;--query-gpu=name&amp;nbsp;--format=csv,noheader'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;).read().strip()&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;os.environ[&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;'GPU_NAME'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;]&amp;nbsp;=&amp;nbsp;GPU_NAME&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #795e26;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;'GPU:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;{GPU_NAME}&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 구글 드라이브 마운트&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;음성합성을 위해 학습한 모델이 있는 구글 드라이브를 마운트합니다.&lt;br /&gt;마운트할 구글 드라이브 내에 다음 파일이 존재하는지 꼭 확인해주세요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;/Colab Notebooks/data/filelists.zip&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(존재하지 않는다면,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://sce-tts.github.io/#/recoding?id=%EC%9D%8C%EC%84%B1-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%85%8B-%EB%B3%80%ED%99%98&quot;&gt;음성 데이터셋 변환&lt;/a&gt;문서를 참조하여 준비해주세요.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 아래에&lt;span&gt;&amp;nbsp;&lt;/span&gt;Enter your authorization code:과 같은 메시지가 출력될 경우,&lt;br /&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;span style=&quot;color: #af00db;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;google.colab&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #af00db;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;drive&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;drive.mount(&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;'/content/drive'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&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;span style=&quot;color: #212121;&quot;&gt;Mounted at /content/drive&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 필수 라이브러리 및 함수 불러오기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행에 필요한 라이브러리 및 함수를 불러옵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 과정은 약 10분 정도 소요될 수 있습니다.&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;span style=&quot;color: #af00db;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;sys&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #af00db;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;pathlib&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #af00db;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;Path&lt;/span&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;span style=&quot;color: #0000ff;&quot;&gt;%cd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;/content&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;git&amp;nbsp;clone&amp;nbsp;--depth&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #098658;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/sce-tts/TTS.git&quot;&gt;https://github.com/sce-tts/TTS.git&lt;/a&gt;&amp;nbsp;-b&amp;nbsp;sce-tts&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;%cd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;/content/TTS&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;pip&amp;nbsp;install&amp;nbsp;-q&amp;nbsp;--no-cache-dir&amp;nbsp;-e&amp;nbsp;.&lt;/span&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;span style=&quot;color: #212121;&quot;&gt;/content Cloning into 'TTS'... remote: Enumerating objects: 447, done.&lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; remote: Counting objects: 100% (447/447), done.&lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; remote: Compressing objects: 100% (415/415), done.&lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; remote: Total 447 (delta 56), reused 287 (delta 20), pack-reused 0&lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; Receiving objects: 100% (447/447), 13.77 MiB | 6.18 MiB/s, done. Resolving deltas: 100% (56/56), done. /content/TTS Installing build dependencies ... &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;done Getting requirements to build wheel ... &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;done Preparing wheel metadata ... &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;done &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; |████████████████████████████████| 20.1MB 33.0MB/s &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; |████████████████████████████████| 71kB 42.5MB/s &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; |████████████████████████████████| 122kB 48.5MB/s &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; Installing build dependencies ... &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;done Getting requirements to build wheel ... &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;done Installing backend dependencies ... &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;done Preparing wheel metadata ... &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;done &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; |████████████████████████████████| 3.2MB 39.1MB/s &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; |████████████████████████████████| 235kB 44.8MB/s &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; |████████████████████████████████| 1.3MB 32.6MB/s &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; |████████████████████████████████| 71kB 42.5MB/s &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; |████████████████████████████████| 25.3MB 51.6MB/s &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; Building wheel for coqpit (PEP 517) ... &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;done Building wheel for umap-learn (setup.py) ... &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;done &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ERROR: tensorflow 2.5.0 has requirement numpy~=1.19.2, but you'll have numpy 1.18.5 which is incompatible.&lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ERROR: datascience 0.10.6 has requirement folium==0.2.1, but you'll have folium 0.8.3 which is incompatible.&lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ERROR: albumentations 0.1.12 has requirement imgaug&amp;lt;0.2.7,&amp;gt;=0.2.5, but you'll have imgaug 0.2.9 which is incompatible.&lt;/span&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;h2 data-ke-size=&quot;size26&quot;&gt;4. 학습할 데이터셋 불러오기&lt;/h2&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;&lt;span style=&quot;color: #0000ff;&quot;&gt;%cd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;/content/TTS&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;cp&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/filelists.zip&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;./filelists.zip&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;rm&amp;nbsp;-rf&amp;nbsp;./filelists&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;unzip&amp;nbsp;-q&amp;nbsp;filelists.zip&amp;nbsp;-d&amp;nbsp;./filelists&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. 사전 학습 데이터 불러오기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사전 학습 데이터가 구글 드라이브에 존재하지 않을 경우,&lt;br /&gt;SleepingCE Speech Dataset의 사전 학습 데이터를 내려받습니다.&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;span style=&quot;color: #0000ff;&quot;&gt;%cd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;/content/TTS&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;mkdir&amp;nbsp;-p&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/hifigan-v2&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #af00db;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;Path(&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/hifigan-v2/config.json&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;).exists():&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!gdown&amp;nbsp;--id&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #09885a;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;vRxp1RH-U7gSzWgyxnKY4h_7pB3tjPmU&amp;nbsp;-O&amp;nbsp;hifigan-v2.zip&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!unzip&amp;nbsp;-q&amp;nbsp;hifigan-v2.zip&amp;nbsp;-d&amp;nbsp;./&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!cp&amp;nbsp;-R&amp;nbsp;./hifigan-v2/*&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/hifigan-v2/&quot;&lt;/span&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;span style=&quot;color: #212121;&quot;&gt;/content/TTS Downloading... From: &lt;/span&gt;&lt;a href=&quot;https://drive.google.com/uc?id=1vRxp1RH-U7gSzWgyxnKY4h_7pB3tjPmU&quot;&gt;https://drive.google.com/uc?id=1vRxp1RH-U7gSzWgyxnKY4h_7pB3tjPmU&lt;/a&gt;&lt;span style=&quot;color: #212121;&quot;&gt; To: /content/TTS/hifigan-v2.zip 802MB [00:11, 69.0MB/s]&lt;/span&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;span style=&quot;color: #0000ff;&quot;&gt;%cd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;/content/TTS&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #af00db;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;Path(&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/hifigan-v2/scale_stats_new.npy&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;).exists():&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!python&amp;nbsp;TTS/bin/compute_statistics.py&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/hifigan-v2/config.json&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/hifigan-v2/scale_stats_new.npy&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;--data_path&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/TTS/filelists/wavs/&quot;&lt;/span&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;span style=&quot;color: #212121;&quot;&gt;/content/TTS &amp;gt; Setting up Audio Processor... &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; sample_rate:22050 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; resample:False &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; num_mels:80 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; min_level_db:-100 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; frame_shift_ms:None&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; frame_length_ms:None&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; ref_level_db:20&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; fft_size:1024&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; power:1.1&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; preemphasis:0.98&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; griffin_lim_iters:60&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; signal_norm:False &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; symmetric_norm:True&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; mel_fmin:0&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; mel_fmax:8000.0 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; spec_gain:20.0 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; stft_pad_mode:reflect&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; max_norm:4.0&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; clip_norm:True&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; do_trim_silence:False &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; trim_db:60 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; do_sound_norm:False&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; stats_path:None&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; base:10 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; hop_length:256&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; win_length:1024 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; There are 1293 files. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;100% 1293/1293 [00:38&amp;lt;00:00, 33.74it/s] &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Avg mel spec mean: -46.7018863060251 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Avg mel spec scale: 13.119082008487203 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Avg linear spec mean: -25.91060780083531 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Avg lienar spec scale: 13.282709919047338 &amp;gt; stats saved to /content/drive/My Drive/Colab Notebooks/data/hifigan-v2/scale_stats_new.npy&lt;/span&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;h2 data-ke-size=&quot;size26&quot;&gt;6. TensorBoard 실행&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습 진행을 확인하기 위해 TensorBoard를 실행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최신 학습 진행 상황을 확인하려면 TensorBoard 우측 상단의 새로고침 아이콘을 클릭해주세요.&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;span style=&quot;color: #0000ff;&quot;&gt;%load_ext&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;tensorboard&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;%tensorboard&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;--logdir=&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/hifigan-v2&quot;&lt;/span&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;h2 data-ke-size=&quot;size26&quot;&gt;7. HiFi-GAN 학습 진행&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 HiFi-GAN 학습을 진행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습이 정상적으로 진행되면, 이 셀은 종료되지 않고 계속 실행되는 상태를 유지합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습 진행 정도를 시각적으로 확인하시려면 바로 위의 TensorBoard를 참고해주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습된 결과를 확인하고 싶으시다면, 가장 최근 체크포인트를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://colab.research.google.com/drive/1YkxjzBz3V4eXoAaEgcFNEUg8ZyWV40x9&quot;&gt;SCE-TTS: 음성합성 데모&lt;/a&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;이전에 학습을 진행하던 모델을 이어서 학습을 진행하시려면 다음과 같이 수정한 후 실행해주세요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아래 셀에서 2 ~ 3번째 줄의 코드를 주석을 해제합니다.&lt;/li&gt;
&lt;li&gt;3번째 줄의 경로를 이어서 학습을 진행할 모델의 경로로 변경합니다.&lt;br /&gt;(예시:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://colab.research.google.com/drive/1iwDe-seKo4L-xwb4nttsbu0fEHI__nTo#&quot;&gt;/content/drive/My Drive/Colab&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Notebooks/data/hifigan-v2/hifigan-v2-May-31-2021_08+26AM-d897f2e)&lt;/li&gt;
&lt;li&gt;4번째 줄 아래의 코드를 제거합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;%cd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;/content/TTS&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #008000;&quot;&gt;#&amp;nbsp;!(python&amp;nbsp;TTS/bin/train_vocoder_gan.py&amp;nbsp;\&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #008000;&quot;&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--continue_path&amp;nbsp;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/hifigan-v2/CONTINUE_DIRECTORY&quot;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(python&amp;nbsp;TTS/bin/train_vocoder_gan.py&amp;nbsp;\&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--config_path&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/hifigan-v2/config.json&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;\&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--coqpit.data_path&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/TTS/filelists/wavs&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;\&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--coqpit.audio.stats_path&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/hifigan-v2/scale_stats_new.npy&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;\&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--coqpit.output_path&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/hifigan-v2/&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;\&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--coqpit.num_loader_workers&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #09885a;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;\&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--coqpit.num_val_loader_workers&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #09885a;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;\&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--restore_path&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/hifigan-v2/model_file.pth.tar&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&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;span style=&quot;color: #212121;&quot;&gt;/content/TTS &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Using CUDA: True &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Number of GPUs: 1 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Git Hash: d897f2e &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Experiment folder: /content/drive/My Drive/Colab Notebooks/data/hifigan-v2/hifigan-v2-May-31-2021_08+26AM-d897f2e &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Loading wavs from: /content/TTS/filelists/wavs &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Setting up Audio Processor... &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; sample_rate:22050 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; resample:False&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; num_mels:80&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; min_level_db:-100 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; frame_shift_ms:None&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; frame_length_ms:None&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; ref_level_db:20&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; fft_size:1024&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; power:1.1&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; preemphasis:0.9&lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;8&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; griffin_lim_iters:60&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; signal_norm:True&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; symmetric_norm:True&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; mel_fmin:0&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; mel_fmax:8000.0&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; spec_gain:20.0 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; stft_pad_mode:reflect&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; max_norm:4.0&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; clip_norm:True &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; do_trim_silence:False&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; trim_db:60 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; do_sound_norm:False&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; stats_path:/content/drive/My Drive/Colab Notebooks/data/hifigan-v2/scale_stats_new.npy&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; base:10&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; hop_length:256 | &amp;gt; win_length:1024 &amp;gt; Generator&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;...&lt;/span&gt;&lt;/p&gt;</description>
      <author>yewon</author>
      <guid isPermaLink="true">https://yewon.tistory.com/113</guid>
      <comments>https://yewon.tistory.com/113#entry113comment</comments>
      <pubDate>Thu, 26 Aug 2021 15:06:23 +0900</pubDate>
    </item>
    <item>
      <title>Glow-TTS[X]</title>
      <link>https://yewon.tistory.com/112</link>
      <description>&lt;h1&gt;SCE-TTS: Glow-TTS 학습&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문서는 SCE-TTS 프로젝트의 Glow-TTS 학습용 문서입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 데모에 대한 더 자세한 정보는 아래 링크에서 확인하실 수 있습니다.&lt;br /&gt;&lt;a href=&quot;https://sce-tts.github.io/&quot;&gt;https://sce-tts.github.io/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 학습을 진행하시려면, 위쪽 메뉴에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;런타임 -&amp;gt; 모두 실행을 클릭하신 후,&lt;br /&gt;문서 최하단의&lt;span&gt;&amp;nbsp;&lt;/span&gt;Glow-TTS 학습 진행까지 정상적으로 실행되는걸 확인해주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도중에 문제가 발생한다면, 문제의 원인을 해결한 후&lt;span&gt;&amp;nbsp;&lt;/span&gt;런타임 -&amp;gt; 런타임 초기화를 클릭하고,&lt;br /&gt;다시&lt;span&gt;&amp;nbsp;&lt;/span&gt;런타임 -&amp;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;h2 data-ke-size=&quot;size26&quot;&gt;1. 할당된 GPU 확인&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 런타임에 할당된 GPU를 확인합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약,&lt;span&gt;&amp;nbsp;&lt;/span&gt;GPU: NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.&lt;span&gt;&amp;nbsp;&lt;/span&gt;라는 메시지가 출력된다면, 위쪽 메뉴에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;런타임 -&amp;gt; 런타임 유형 변경을 클릭하고 하드웨어 가속기를&lt;span&gt;&amp;nbsp;&lt;/span&gt;GPU로 변경하여 저장한 후 다시 실행해주세요.&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;span style=&quot;color: #af00db;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;os&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;GPU_NAME&amp;nbsp;=&amp;nbsp;os.popen(&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;'nvidia-smi&amp;nbsp;--query-gpu=name&amp;nbsp;--format=csv,noheader'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;).read().strip()&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;os.environ[&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;'GPU_NAME'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;]&amp;nbsp;=&amp;nbsp;GPU_NAME&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #795e26;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;'GPU:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;{GPU_NAME}&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&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;h2 data-ke-size=&quot;size26&quot;&gt;2. 구글 드라이브 마운트&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;음성합성을 위해 학습한 모델이 있는 구글 드라이브를 마운트합니다.&lt;br /&gt;마운트할 구글 드라이브 내에 다음 파일이 존재하는지 꼭 확인해주세요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;/Colab Notebooks/data/filelists.zip&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(존재하지 않는다면,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://sce-tts.github.io/#/recoding?id=%EC%9D%8C%EC%84%B1-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%85%8B-%EB%B3%80%ED%99%98&quot;&gt;음성 데이터셋 변환&lt;/a&gt;문서를 참조하여 준비해주세요.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 아래에&lt;span&gt;&amp;nbsp;&lt;/span&gt;Enter your authorization code:과 같은 메시지가 출력될 경우,&lt;br /&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;span style=&quot;color: #af00db;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;google.colab&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #af00db;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;drive&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;drive.mount(&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;'/content/drive'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&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;span style=&quot;color: #212121;&quot;&gt;Mounted at /content/drive&lt;/span&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;h2 data-ke-size=&quot;size26&quot;&gt;3. 필수 라이브러리 및 함수 불러오기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행에 필요한 라이브러리 및 함수를 불러옵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 과정은 약 10분 정도 소요될 수 있습니다.&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;span style=&quot;color: #af00db;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;sys&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #af00db;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;pathlib&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #af00db;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;Path&lt;/span&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;span style=&quot;color: #0000ff;&quot;&gt;%cd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;/content&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;git&amp;nbsp;clone&amp;nbsp;--depth&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #098658;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/sce-tts/TTS.git&quot;&gt;https://github.com/sce-tts/TTS.git&lt;/a&gt;&amp;nbsp;-b&amp;nbsp;sce-tts&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;%cd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;/content/TTS&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;pip install -q --no-cache-dir -e&lt;/span&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;span style=&quot;color: #212121;&quot;&gt;/content Cloning into 'TTS'... remote: Enumerating objects: 447, done.&lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; remote: Counting objects: 100% (447/447), done.&lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; remote: Compressing objects: 100% (415/415), done.&lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; remote: Total 447 (delta 56), reused 287 (delta 20), pack-reused 0&lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; Receiving objects: 100% (447/447), 13.77 MiB | 31.33 MiB/s, done. Resolving deltas: 100% (56/56), done. /content/TTS Installing build dependencies ... &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;done Getting requirements to build wheel ... &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;done Preparing wheel metadata ... &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;done &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; |████████████████████████████████| 235kB 28.1MB/s &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; |████████████████████████████████| 20.1MB 56.7MB/s &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; |████████████████████████████████| 122kB 63.3MB/s &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; |████████████████████████████████| 1.3MB 22.0MB/s &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; |████████████████████████████████| 3.2MB 55.5MB/s &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; |████████████████████████████████| 71kB 47.9MB/s &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; Installing build dependencies ... &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;done Getting requirements to build wheel ... &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;done Installing backend dependencies ... &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;done Preparing wheel metadata ... &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;done &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; |████████████████████████████████| 71kB 59.4MB/s &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; |████████████████████████████████| 25.3MB 64.3MB/s &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; Building wheel for coqpit (PEP 517) ... &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;done Building wheel for umap-learn (setup.py) ... &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;done &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ERROR: tensorflow 2.5.0 has requirement numpy~=1.19.2, but you'll have numpy 1.18.5 which is incompatible.&lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ERROR: datascience 0.10.6 has requirement folium==0.2.1, but you'll have folium 0.8.3 which is incompatible.&lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ERROR: albumentations 0.1.12 has requirement imgaug&amp;lt;0.2.7,&amp;gt;=0.2.5, but you'll have imgaug 0.2.9 which is incompatible.&lt;/span&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;h2 data-ke-size=&quot;size26&quot;&gt;4. 학습할 데이터셋 불러오기&lt;/h2&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;&lt;span style=&quot;color: #0000ff;&quot;&gt;%cd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;/content/TTS&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;cp&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/filelists.zip&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;./filelists.zip&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;rm&amp;nbsp;-rf&amp;nbsp;./filelists&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;unzip&amp;nbsp;-q&amp;nbsp;filelists.zip&amp;nbsp;-d&amp;nbsp;./filelists&lt;/span&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;span style=&quot;color: #212121;&quot;&gt;/content/TTS&lt;/span&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;h2 data-ke-size=&quot;size26&quot;&gt;5. 사전 학습 데이터 불러오기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사전 학습 데이터가 구글 드라이브에 존재하지 않을 경우,&lt;br /&gt;SleepingCE Speech Dataset의 사전 학습 데이터를 내려받습니다.&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;span style=&quot;color: #0000ff;&quot;&gt;%cd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;/content/TTS&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;mkdir&amp;nbsp;-p&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/glowtts-v2&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #af00db;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;Path(&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/glowtts-v2/config.json&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;).exists():&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!gdown&amp;nbsp;--id&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #09885a;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;DMKLdfZ_gzc_z0qDod6_G8fEXj0zCHvC&amp;nbsp;-O&amp;nbsp;glowtts-v2.zip&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!unzip&amp;nbsp;-q&amp;nbsp;glowtts-v2.zip&amp;nbsp;-d&amp;nbsp;./&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!cp&amp;nbsp;-R&amp;nbsp;./glowtts-v2/*&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/glowtts-v2/&quot;&lt;/span&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;span style=&quot;color: #212121;&quot;&gt;/content/TTS Downloading... From: &lt;/span&gt;&lt;a href=&quot;https://drive.google.com/uc?id=1DMKLdfZ_gzc_z0qDod6_G8fEXj0zCHvC&quot;&gt;https://drive.google.com/uc?id=1DMKLdfZ_gzc_z0qDod6_G8fEXj0zCHvC&lt;/a&gt;&lt;span style=&quot;color: #212121;&quot;&gt; To: /content/TTS/glowtts-v2.zip 314MB [00:01, 176MB/s]&lt;/span&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;span style=&quot;color: #0000ff;&quot;&gt;%cd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;/content/TTS&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #af00db;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;Path(&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/glowtts-v2/scale_stats_new.npy&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;).exists():&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!python&amp;nbsp;TTS/bin/compute_statistics.py&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/glowtts-v2/config.json&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/glowtts-v2/scale_stats_new.npy&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;--data_path&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/TTS/filelists/wavs/&quot;&lt;/span&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;span style=&quot;color: #212121;&quot;&gt;/content/TTS &amp;gt; Setting up Audio Processor... &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; sample_rate:22050 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; resample:False &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; num_mels:80 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; min_level_db:-100 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; frame_shift_ms:None &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; frame_length_ms:None &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; ref_level_db:20 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; fft_size:1024 | &amp;gt; power:1.1 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; preemphasis:0.98&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; griffin_lim_iters:60 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; signal_norm:False &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; symmetric_norm:True &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; mel_fmin:0 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; mel_fmax:8000.0 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; spec_gain:20.0 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; stft_pad_mode:reflect&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; max_norm:4.0 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; clip_norm:True &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; do_trim_silence:False&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; trim_db:60 | &amp;gt; do_sound_norm:False &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; stats_path:None&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; base:10 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; hop_length:256 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; win_length:1024 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; There are 1293 files. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;100% 1293/1293 [00:30&amp;lt;00:00, 42.75it/s] &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Avg mel spec mean: -46.7018863060251 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Avg mel spec scale: 13.119082008487203 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Avg linear spec mean: -25.91060780083531 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Avg lienar spec scale: 13.282709919047338 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; stats saved to /content/drive/My Drive/Colab Notebooks/data/glowtts-v2/scale_stats_new.npy&lt;/span&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;span style=&quot;color: #af00db;&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #795e26;&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/TTS/test_sentences.txt&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;,&amp;nbsp;mode=&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;w&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #af00db;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;f:&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;f.write(&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;&quot;&quot;아래&amp;nbsp;문장들은&amp;nbsp;모델&amp;nbsp;학습을&amp;nbsp;위해&amp;nbsp;사용하지&amp;nbsp;않은&amp;nbsp;문장들입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;서울특별시&amp;nbsp;특허허가과&amp;nbsp;허가과장&amp;nbsp;허과장.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;경찰청&amp;nbsp;철창살은&amp;nbsp;외철창살이고&amp;nbsp;검찰청&amp;nbsp;철창살은&amp;nbsp;쌍철창살이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;지향을&amp;nbsp;지양으로&amp;nbsp;오기하는&amp;nbsp;일을&amp;nbsp;지양하는&amp;nbsp;언어&amp;nbsp;습관을&amp;nbsp;지향해야&amp;nbsp;한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;그러니까&amp;nbsp;외계인이&amp;nbsp;우리&amp;nbsp;생각을&amp;nbsp;읽고&amp;nbsp;우리&amp;nbsp;생각을&amp;nbsp;우리가&amp;nbsp;다시&amp;nbsp;생각토록&amp;nbsp;해서&amp;nbsp;그&amp;nbsp;생각이&amp;nbsp;마치&amp;nbsp;우리가&amp;nbsp;생각한&amp;nbsp;것인&amp;nbsp;것처럼&amp;nbsp;속였다는&amp;nbsp;거냐?&quot;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&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;h2 data-ke-size=&quot;size26&quot;&gt;6. TensorBoard 실행&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습 진행을 확인하기 위해 TensorBoard를 실행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최신 학습 진행 상황을 확인하려면 TensorBoard 우측 상단의 새로고침 아이콘을 클릭해주세요.&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;span style=&quot;color: #0000ff;&quot;&gt;%load_ext&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;tensorboard&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;%tensorboard&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;--logdir=&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/glowtts-v2&quot;&lt;/span&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;h2 data-ke-size=&quot;size26&quot;&gt;7. Glow-TTS 학습 진행&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 Glow-TTS 학습을 진행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습이 정상적으로 진행되면, 이 셀은 종료되지 않고 계속 실행되는 상태를 유지합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습 진행 정도를 시각적으로 확인하시려면 바로 위의 TensorBoard를 참고해주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습된 결과를 확인하고 싶으시다면, 가장 최근 체크포인트를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://colab.research.google.com/drive/1YkxjzBz3V4eXoAaEgcFNEUg8ZyWV40x9&quot;&gt;SCE-TTS: 음성합성 데모&lt;/a&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;이전에 학습을 진행하던 모델을 이어서 학습을 진행하시려면 다음과 같이 수정한 후 실행해주세요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아래 셀에서 2 ~ 3번째 줄의 코드를 주석을 해제합니다.&lt;/li&gt;
&lt;li&gt;3번째 줄의 경로를 이어서 학습을 진행할 모델의 경로로 변경합니다.&lt;br /&gt;(예시:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://colab.research.google.com/drive/1L5o8joH8LDV37eupNUpqqWrOcw1sGCit#&quot;&gt;/content/drive/My Drive/Colab&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Notebooks/data/glowtts-v2/glowtts-v2-May-31-2021_08+17AM-d897f2e)&lt;/li&gt;
&lt;li&gt;4번째 줄 아래의 코드를 제거합니다.&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;&lt;span style=&quot;color: #0000ff;&quot;&gt;%cd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;/content/TTS&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #008000;&quot;&gt;#&amp;nbsp;!(python&amp;nbsp;TTS/bin/train_glow_tts.py&amp;nbsp;\&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #008000;&quot;&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--continue_path&amp;nbsp;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/glowtts-v2/CONTINUE_DIRECTORY&quot;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(python&amp;nbsp;TTS/bin/train_glow_tts.py&amp;nbsp;\&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--config_path&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/glowtts-v2/config.json&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;\&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--coqpit.datasets&lt;/span&gt;&lt;span style=&quot;color: #09885a;&quot;&gt;.0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.path&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/TTS/filelists&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;\&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--coqpit.audio.stats_path&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/glowtts-v2/scale_stats_new.npy&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;\&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--coqpit.test_sentences_file&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/TTS/test_sentences.txt&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;\&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--coqpit.output_path&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/glowtts-v2/&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;\&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--coqpit.num_loader_workers&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #09885a;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;\&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--coqpit.num_val_loader_workers&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #09885a;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;\&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--restore_path&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;/content/drive/My&amp;nbsp;Drive/Colab&amp;nbsp;Notebooks/data/glowtts-v2/model_file.pth.tar&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&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;span style=&quot;color: #212121;&quot;&gt;/content/TTS &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;Using CUDA: True &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Number of GPUs: 1 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Git Hash: d897f2e &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Experiment folder: /content/drive/My Drive/Colab Notebooks/data/glowtts-v2/glowtts-v2-May-31-2021_08+17AM-d897f2e &amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;Setting up Audio Processor... &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; sample_rate:22050 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; resample:False &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; num_mels:80 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; min_level_db:-100&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; frame_shift_ms:None&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; frame_length_ms:None &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; ref_level_db:20 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; fft_size:1024 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; power:1.1 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; preemphasis:0.98&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; griffin_lim_iters:60 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; signal_norm:True &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; symmetric_norm:True&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; mel_fmin:0&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; mel_fmax:8000.0 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; spec_gain:20.0 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; stft_pad_mode:reflect &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; max_norm:4.0 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; clip_norm:True &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; do_trim_silence:False &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; trim_db:60 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; do_sound_norm:False &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; stats_path:/content/drive/My Drive/Colab Notebooks/data/glowtts-v2/scale_stats_new.npy &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; base:10 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; hop_length:256 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; win_length:1024 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; Found 1293 files in /content/TTS/filelists &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Using model: glow_tts &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Restoring from model_file.pth.tar ... &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Model restored from step 26000 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Model has 28612177 parameters &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Starting with inf best loss. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; DataLoader initialization &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; Use phonemes: False &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; Number of instances : 1281 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; Max length sequence: 69 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; Min length sequence: 15 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; Avg length sequence: 29.27400468384075 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; Num. instances discarded by max-min (max=500, min=3) seq limits: 0 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; Batch group size: 128. &amp;gt; DataLoader initialization &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; Use phonemes: False &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; Number of instances : 12 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; Max length sequence: 43 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; Min length sequence: 25 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; Avg length sequence: 32.75&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; Num. instances discarded by max-min (max=500, min=3) seq limits: 0&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; Batch group size: 0. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&amp;gt; Data depended initialization ... &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; &amp;gt; EPOCH: 0/10000&lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; &amp;gt; TRAINING (2021-05-31 08:17:56) &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; --&amp;gt; STEP: 24/40 -- GLOBAL_STEP: 26025&lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; loss: 0.39434 (0.54076)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; log_mle: 0.06230 (0.16396) &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; loss_dur: 0.33204 (0.37680) &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; align_error: 0.08134 (0.10245)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; avg_spec_length: 256.4 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; avg_text_length: 62.5 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; step_time: 0.6024&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; loader_time: 0.01 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; current_lr: 3.9204383295092286e-05 &lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; --&amp;gt; TRAIN PERFORMACE -- EPOCH TIME: 29.78 sec -- GLOBAL_STEP: 26041&lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt; | &amp;gt; avg_loss: 0.43780 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;| &amp;gt; avg_log_mle: 0.09893 &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #212121;&quot;&gt;...&lt;/span&gt;&lt;/p&gt;</description>
      <author>yewon</author>
      <guid isPermaLink="true">https://yewon.tistory.com/112</guid>
      <comments>https://yewon.tistory.com/112#entry112comment</comments>
      <pubDate>Thu, 26 Aug 2021 14:59:29 +0900</pubDate>
    </item>
    <item>
      <title>[12회차] 참조 사이트</title>
      <link>https://yewon.tistory.com/109</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://cloud.google.com/architecture/speech-translation-android-microservice?hl=ko&quot;&gt;https://cloud.google.com/architecture/speech-translation-android-microservice?hl=ko&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1629359954107&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Android 앱에 음성 번역 추가 &amp;nbsp;|&amp;nbsp; 클라우드 아키텍처 센터 &amp;nbsp;|&amp;nbsp; Google Cloud&quot; data-og-description=&quot;샘플 코드 복제 다음 명령어를 사용하여 마이크로서비스 코드가 포함된 nodejs-docs-samples 저장소를 클론합니다. git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git Google Cloud 프로젝트에 대한 &quot; data-og-host=&quot;cloud.google.com&quot; data-og-source-url=&quot;https://cloud.google.com/architecture/speech-translation-android-microservice?hl=ko&quot; data-og-url=&quot;https://cloud.google.com/architecture/speech-translation-android-microservice?hl=ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/VQ7Yz/hyLiYOJa2N/MuU1r1JrqspLILeNKa0vek/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/NR87u/hyLiiON4N0/NH3F2Woq9ljAVqplvrOE2k/img.png?width=400&amp;amp;height=744&amp;amp;face=0_0_400_744,https://scrap.kakaocdn.net/dn/rt6fY/hyLh7T4swm/nCZzS8DLxrgBPhwMRir8B0/img.png?width=500&amp;amp;height=440&amp;amp;face=0_0_500_440&quot;&gt;&lt;a href=&quot;https://cloud.google.com/architecture/speech-translation-android-microservice?hl=ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://cloud.google.com/architecture/speech-translation-android-microservice?hl=ko&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/VQ7Yz/hyLiYOJa2N/MuU1r1JrqspLILeNKa0vek/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/NR87u/hyLiiON4N0/NH3F2Woq9ljAVqplvrOE2k/img.png?width=400&amp;amp;height=744&amp;amp;face=0_0_400_744,https://scrap.kakaocdn.net/dn/rt6fY/hyLh7T4swm/nCZzS8DLxrgBPhwMRir8B0/img.png?width=500&amp;amp;height=440&amp;amp;face=0_0_500_440');&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;Android 앱에 음성 번역 추가 &amp;nbsp;|&amp;nbsp; 클라우드 아키텍처 센터 &amp;nbsp;|&amp;nbsp; Google Cloud&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;샘플 코드 복제 다음 명령어를 사용하여 마이크로서비스 코드가 포함된 nodejs-docs-samples 저장소를 클론합니다. git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git Google Cloud 프로젝트에 대한&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;cloud.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://cloud.google.com/speech-to-text/docs/apis?hl=ko&quot;&gt;https://cloud.google.com/speech-to-text/docs/apis?hl=ko&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1629360085398&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;API 및 참조 &amp;nbsp;|&amp;nbsp; Cloud Speech-to-Text 문서 &amp;nbsp;|&amp;nbsp; Google Cloud&quot; data-og-description=&quot;Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trade&quot; data-og-host=&quot;cloud.google.com&quot; data-og-source-url=&quot;https://cloud.google.com/speech-to-text/docs/apis?hl=ko&quot; data-og-url=&quot;https://cloud.google.com/speech-to-text/docs/apis?hl=ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bztsgz/hyLiX97ZyF/8vOsWB1DDWM1D1kKLRkJi1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://cloud.google.com/speech-to-text/docs/apis?hl=ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://cloud.google.com/speech-to-text/docs/apis?hl=ko&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bztsgz/hyLiX97ZyF/8vOsWB1DDWM1D1kKLRkJi1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;API 및 참조 &amp;nbsp;|&amp;nbsp; Cloud Speech-to-Text 문서 &amp;nbsp;|&amp;nbsp; Google Cloud&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trade&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;cloud.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1&gt;샘플 애플리케이션&lt;/h1&gt;
&lt;h2 id=&quot;programming_language_examples&quot; data-text=&quot;프로그래밍 언어 예시&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;프로그래밍 언어 예시&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오디오를 Speech-to-Text에 보내고 해당 오디오의 텍스트 변환을 받는 데 사용할 수 있는 코드 샘플의 링크&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/googleapis/python-speech/tree/master/samples&quot;&gt;Python 비 스트리밍 및 스트리밍 음성 인식 샘플&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/googleapis/python-speech/tree/master/samples&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/googleapis/python-speech/tree/master/samples&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1629360134581&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - googleapis/python-speech&quot; data-og-description=&quot;Contribute to googleapis/python-speech development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/googleapis/python-speech/tree/master/samples&quot; data-og-url=&quot;https://github.com/googleapis/python-speech&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/IOSiq/hyLi4alqXS/QU03PJjyrccE3PDb61T270/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/googleapis/python-speech/tree/master/samples&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/googleapis/python-speech/tree/master/samples&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/IOSiq/hyLi4alqXS/QU03PJjyrccE3PDb61T270/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;GitHub - googleapis/python-speech&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Contribute to googleapis/python-speech development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 id=&quot;mobile_platform_examples&quot; data-text=&quot;모바일 플랫폼 예시&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;모바일 플랫폼 예시&lt;/span&gt;&lt;/h2&gt;
&lt;h3 id=&quot;android_sample&quot; data-text=&quot;Android 샘플&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;Android 샘플&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;Cloud Speech RPC API와 함께 마이크를 사용하여 스트리밍 음성 인식을 제공 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/GoogleCloudPlatform/android-docs-samples/tree/master/speech/Speech&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/GoogleCloudPlatform/android-docs-samples/tree/master/speech/Speech&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1629360234430&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - GoogleCloudPlatform/android-docs-samples&quot; data-og-description=&quot;Contribute to GoogleCloudPlatform/android-docs-samples development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/GoogleCloudPlatform/android-docs-samples/tree/master/speech/Speech&quot; data-og-url=&quot;https://github.com/GoogleCloudPlatform/android-docs-samples&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eHUnEH/hyLi7ET87i/3kAnFmH9KBMi7cTttMsRfk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/GoogleCloudPlatform/android-docs-samples/tree/master/speech/Speech&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/GoogleCloudPlatform/android-docs-samples/tree/master/speech/Speech&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eHUnEH/hyLi7ET87i/3kAnFmH9KBMi7cTttMsRfk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;GitHub - GoogleCloudPlatform/android-docs-samples&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Contribute to GoogleCloudPlatform/android-docs-samples development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.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;&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;/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;동기식 구두점 인식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동기식 cloud storage파일 텍스트 변환&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 href=&quot;https://cloud.google.com/speech-to-text/docs/samples?hl=ko&quot;&gt;https://cloud.google.com/speech-to-text/docs/samples?hl=ko&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1629360298737&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;샘플 애플리케이션 &amp;nbsp;|&amp;nbsp; Cloud Speech-to-Text 문서 &amp;nbsp;|&amp;nbsp; Google Cloud&quot; data-og-description=&quot;[{ &amp;quot;type&amp;quot;: &amp;quot;thumb-down&amp;quot;, &amp;quot;id&amp;quot;: &amp;quot;hardToUnderstand&amp;quot;, &amp;quot;label&amp;quot;:&amp;quot;이해하기 어려움&amp;quot; },{ &amp;quot;type&amp;quot;: &amp;quot;thumb-down&amp;quot;, &amp;quot;id&amp;quot;: &amp;quot;incorrectInformationOrSampleCode&amp;quot;, &amp;quot;label&amp;quot;:&amp;quot;잘못된 정보 또는 샘플 코드&amp;quot; },{ &amp;quot;type&amp;quot;: &amp;quot;thumb-down&amp;quot;, &amp;quot;id&amp;quot;: &amp;quot;missingTheInformationSa&quot; data-og-host=&quot;cloud.google.com&quot; data-og-source-url=&quot;https://cloud.google.com/speech-to-text/docs/samples?hl=ko&quot; data-og-url=&quot;https://cloud.google.com/speech-to-text/docs/samples?hl=ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bEKXnK/hyLiba4SsT/vHKnriR9zOCzcFpirpjmn0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://cloud.google.com/speech-to-text/docs/samples?hl=ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://cloud.google.com/speech-to-text/docs/samples?hl=ko&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bEKXnK/hyLiba4SsT/vHKnriR9zOCzcFpirpjmn0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;샘플 애플리케이션 &amp;nbsp;|&amp;nbsp; Cloud Speech-to-Text 문서 &amp;nbsp;|&amp;nbsp; Google Cloud&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[{ &quot;type&quot;: &quot;thumb-down&quot;, &quot;id&quot;: &quot;hardToUnderstand&quot;, &quot;label&quot;:&quot;이해하기 어려움&quot; },{ &quot;type&quot;: &quot;thumb-down&quot;, &quot;id&quot;: &quot;incorrectInformationOrSampleCode&quot;, &quot;label&quot;:&quot;잘못된 정보 또는 샘플 코드&quot; },{ &quot;type&quot;: &quot;thumb-down&quot;, &quot;id&quot;: &quot;missingTheInformationSa&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;cloud.google.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;</description>
      <category>혁신성장 프로젝트</category>
      <author>yewon</author>
      <guid isPermaLink="true">https://yewon.tistory.com/109</guid>
      <comments>https://yewon.tistory.com/109#entry109comment</comments>
      <pubDate>Thu, 19 Aug 2021 17:05:50 +0900</pubDate>
    </item>
    <item>
      <title>[10,11회차] Cloud Speech-to-Text 가이드</title>
      <link>https://yewon.tistory.com/108</link>
      <description>&lt;h3 id=&quot;transcribing-short-audio-files&quot; data-text=&quot;짧은 오디오 파일 스크립트 작성&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;짧은 오디오 파일을 텍스트로 변환&lt;/b&gt;&lt;/h3&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;h2 id=&quot;performing_synchronous_speech_recognition_on_a_local_file&quot; data-text=&quot;로컬 파일에서 동기 음성 인식 수행&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;로컬 파일에서 동기 음성 인식 수행&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 로컬 오디오 파일에서 동기 음성 인식을 수행하는 예입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a id=&quot;aria-tab-rest-및-명령줄&quot; href=&quot;https://cloud.google.com/speech-to-text/docs/sync-recognize?hl=ko#rest-%EB%B0%8F-%EB%AA%85%EB%A0%B9%EC%A4%84&quot;&gt;REST 및 명령줄&lt;/a&gt;&lt;a id=&quot;aria-tab-gcloud&quot; href=&quot;https://cloud.google.com/speech-to-text/docs/sync-recognize?hl=ko#gcloud&quot;&gt;gcloud&lt;/a&gt;&lt;a id=&quot;aria-tab-go&quot; href=&quot;https://cloud.google.com/speech-to-text/docs/sync-recognize?hl=ko#go&quot;&gt;Go&lt;/a&gt;&lt;a id=&quot;aria-tab-자바&quot; href=&quot;https://cloud.google.com/speech-to-text/docs/sync-recognize?hl=ko#%EC%9E%90%EB%B0%94&quot;&gt;자바&lt;/a&gt;&lt;a id=&quot;aria-tab-node.js&quot; href=&quot;https://cloud.google.com/speech-to-text/docs/sync-recognize?hl=ko#node.js&quot;&gt;Node.js&lt;/a&gt;&lt;a id=&quot;aria-tab-python&quot; href=&quot;https://cloud.google.com/speech-to-text/docs/sync-recognize?hl=ko#python&quot;&gt;Python&lt;/a&gt;&lt;a id=&quot;aria-tab-추가-언어&quot; href=&quot;https://cloud.google.com/speech-to-text/docs/sync-recognize?hl=ko#%EC%B6%94%EA%B0%80-%EC%96%B8%EC%96%B4&quot;&gt;추가 언어&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자세한 내용은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://cloud.google.com/speech-to-text/docs/reference/rest/v1/speech/recognize?hl=ko&quot;&gt;speech:recognize&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;API 엔드포인트를 참조하세요. 요청 본문 구성에 대한 자세한 내용은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://cloud.google.com/speech-to-text/docs/reference/rest/v1/RecognitionConfig?hl=ko&quot;&gt;RecognitionConfig&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;참조 문서를 확인하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요청 본문에 제공된 오디오 콘텐츠는 base64로 인코딩되어야 합니다. 오디오를 base64로 인코딩하는 방법에 대한 자세한 내용은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://cloud.google.com/speech-to-text/docs/base64-encoding?hl=ko&quot;&gt;오디오 콘텐츠를 Base64 로 인코딩&lt;/a&gt;을 참조하세요.&lt;span&gt;&amp;nbsp;&lt;/span&gt;content&lt;span&gt;&amp;nbsp;&lt;/span&gt;필드에 대한 자세한 내용은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://cloud.google.com/speech-to-text/docs/reference/rest/v1/RecognitionAudio?hl=ko&quot;&gt;RecognitionAudio&lt;/a&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 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;LANGUAGE_CODE: 오디오 클립에서 사용된 언어의 BCP-47 코드&lt;/li&gt;
&lt;li&gt;ENCODING: 텍스트로 변환할 오디오의 인코딩&lt;/li&gt;
&lt;li&gt;SAMPLE_RATE_HERTZ: 텍스트로 변환할 오디오의 샘플링 레이트(Hz)&lt;/li&gt;
&lt;li&gt;ENABLE_TIME_WORD_OFFSETS: 단어 시작 및 종료 시간 오프셋(타임스탬프)을 반환하려면 이 필드를 사용 설정&lt;/li&gt;
&lt;li&gt;INPUT_AUDIO: 텍스트로 변환할 오디오 데이터의 base64 인코딩 문자열&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;748&quot; data-origin-height=&quot;438&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/An5DI/btrczIOLiOe/IIkQ41m3e2TwkZGA6D0Rck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/An5DI/btrczIOLiOe/IIkQ41m3e2TwkZGA6D0Rck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/An5DI/btrczIOLiOe/IIkQ41m3e2TwkZGA6D0Rck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAn5DI%2FbtrczIOLiOe%2FIIkQ41m3e2TwkZGA6D0Rck%2Fimg.png&quot; data-origin-width=&quot;748&quot; data-origin-height=&quot;438&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-text=&quot;원격 파일에서 동기 음성 인식 수행&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-text=&quot;원격 파일에서 동기 음성 인식 수행&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 id=&quot;performing_synchronous_speech_recognition_on_a_remote_file&quot; data-text=&quot;원격 파일에서 동기 음성 인식 수행&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;원격 파일에서 동기 음성 인&lt;/span&gt;&lt;span&gt;식 수행&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요청 본문의 오디오 파일 콘텐츠를 보낼 필요없이 간편하게 Speech-to-Text API를 사용하여 Google Cloud Storage에 있는 오디오 파일에서 직접 동기 음성 인식을 수행할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 Cloud Storage에 있는 파일에서 동기 음성 인식을 수행하는 예입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a id=&quot;aria-tab-rest-및-명령줄&quot; href=&quot;https://cloud.google.com/speech-to-text/docs/sync-recognize?hl=ko#rest-%EB%B0%8F-%EB%AA%85%EB%A0%B9%EC%A4%84&quot;&gt;REST 및 명령줄&lt;/a&gt;&lt;a id=&quot;aria-tab-gcloud&quot; href=&quot;https://cloud.google.com/speech-to-text/docs/sync-recognize?hl=ko#gcloud&quot;&gt;gcloud&lt;/a&gt;&lt;a id=&quot;aria-tab-go&quot; href=&quot;https://cloud.google.com/speech-to-text/docs/sync-recognize?hl=ko#go&quot;&gt;Go&lt;/a&gt;&lt;a id=&quot;aria-tab-자바&quot; href=&quot;https://cloud.google.com/speech-to-text/docs/sync-recognize?hl=ko#%EC%9E%90%EB%B0%94&quot;&gt;자바&lt;/a&gt;&lt;a id=&quot;aria-tab-node.js&quot; href=&quot;https://cloud.google.com/speech-to-text/docs/sync-recognize?hl=ko#node.js&quot;&gt;Node.js&lt;/a&gt;&lt;a id=&quot;aria-tab-python&quot; href=&quot;https://cloud.google.com/speech-to-text/docs/sync-recognize?hl=ko#python&quot;&gt;Python&lt;/a&gt;&lt;a id=&quot;aria-tab-추가-언어&quot; href=&quot;https://cloud.google.com/speech-to-text/docs/sync-recognize?hl=ko#%EC%B6%94%EA%B0%80-%EC%96%B8%EC%96%B4&quot;&gt;추가 언어&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자세한 내용은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://cloud.google.com/speech-to-text/docs/reference/rest/v1/speech/recognize?hl=ko&quot;&gt;speech:recognize&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;API 엔드포인트를 참조하세요. 요청 본문 구성에 대한 자세한 내용은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://cloud.google.com/speech-to-text/docs/reference/rest/v1/RecognitionConfig?hl=ko&quot;&gt;RecognitionConfig&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;참조 문서를 확인하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요청 본문에 제공된 오디오 콘텐츠는 base64로 인코딩되어야 합니다. 오디오를 base64로 인코딩하는 방법에 대한 자세한 내용은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://cloud.google.com/speech-to-text/docs/base64-encoding?hl=ko&quot;&gt;오디오 콘텐츠를 Base64 로 인코딩&lt;/a&gt;을 참조하세요.&lt;span&gt;&amp;nbsp;&lt;/span&gt;content&lt;span&gt;&amp;nbsp;&lt;/span&gt;필드에 대한 자세한 내용은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://cloud.google.com/speech-to-text/docs/reference/rest/v1/RecognitionAudio?hl=ko&quot;&gt;RecognitionAudio&lt;/a&gt;를 참조하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래의 요청 데이터를 사용하기 전에 다음을 바꿉니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;LANGUAGE_CODE: 오디오 클립에서 사용된 언어의 BCP-47 코드&lt;/li&gt;
&lt;li&gt;ENCODING: 텍스트로 변환할 오디오의 인코딩&lt;/li&gt;
&lt;li&gt;SAMPLE_RATE_HERTZ: 텍스트로 변환할 오디오의 샘플링 레이트(Hz)&lt;/li&gt;
&lt;li&gt;ENABLE_TIME_WORD_OFFSETS: 단어 시작 및 종료 시간 오프셋(타임스탬프)을 반환하려면 이 필드를 사용 설정&lt;/li&gt;
&lt;li&gt;STORAGE_BUCKET: Cloud Storage 버킷&lt;/li&gt;
&lt;li&gt;INPUT_AUDIO: 텍스트로 변환할 오디오 데이터 파일&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;697&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTpFDD/btrcHekM61v/dZrYuzHAJKi8Xl2dwv4Wo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTpFDD/btrcHekM61v/dZrYuzHAJKi8Xl2dwv4Wo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTpFDD/btrcHekM61v/dZrYuzHAJKi8Xl2dwv4Wo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTpFDD%2FbtrcHekM61v%2FdZrYuzHAJKi8Xl2dwv4Wo0%2Fimg.png&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;697&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-text=&quot;긴 오디오 파일 스크립트 작성&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-text=&quot;긴 오디오 파일 스크립트 작성&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-text=&quot;긴 오디오 파일 스크립트 작성&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-text=&quot;긴 오디오 파일 스크립트 작성&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 id=&quot;transcribing-long-audio-files&quot; data-text=&quot;긴 오디오 파일 스크립트 작성&quot; data-ke-size=&quot;size23&quot;&gt;&lt;s&gt;긴 오디오 파일을 텍스트로 변환&lt;/s&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원격 오디오 파일에서 비동기 음성 인식을 수행&lt;a href=&quot;https://cloud.google.com/speech-to-text/docs/async-recognize?hl=ko&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;transcribing-audio-from-streaming-input&quot; data-text=&quot;스트리밍 입력의 오디오를 텍스트로 변환&quot; data-ke-size=&quot;size23&quot;&gt;&lt;s&gt;스트리밍 입력의 오디오를 텍스트로 변환&lt;/s&gt;&lt;/h3&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://cloud.google.com/speech-to-text/docs/how-to?hl=ko&quot;&gt;https://cloud.google.com/speech-to-text/docs/how-to?hl=ko&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1629359525359&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;안내 가이드 &amp;nbsp;|&amp;nbsp; Cloud Speech-to-Text 문서 &amp;nbsp;|&amp;nbsp; Google Cloud&quot; data-og-description=&quot;Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trade&quot; data-og-host=&quot;cloud.google.com&quot; data-og-source-url=&quot;https://cloud.google.com/speech-to-text/docs/how-to?hl=ko&quot; data-og-url=&quot;https://cloud.google.com/speech-to-text/docs/how-to?hl=ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cbrMPo/hyLia4i42w/5nfQqitt2UMKbJcCNi6UU0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://cloud.google.com/speech-to-text/docs/how-to?hl=ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://cloud.google.com/speech-to-text/docs/how-to?hl=ko&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cbrMPo/hyLia4i42w/5nfQqitt2UMKbJcCNi6UU0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;안내 가이드 &amp;nbsp;|&amp;nbsp; Cloud Speech-to-Text 문서 &amp;nbsp;|&amp;nbsp; Google Cloud&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trade&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;cloud.google.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;</description>
      <category>혁신성장 프로젝트</category>
      <author>yewon</author>
      <guid isPermaLink="true">https://yewon.tistory.com/108</guid>
      <comments>https://yewon.tistory.com/108#entry108comment</comments>
      <pubDate>Thu, 19 Aug 2021 16:57:26 +0900</pubDate>
    </item>
  </channel>
</rss>