(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-7c96a4c4"],{"03af":function(t,e,a){"use strict";a.r(e);var r=function(){var t=this,e=t.$createElement;t._self._c;return t._m(0)},s=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("article",[a("hgroup",[a("h1",[t._v("음성")])]),t._v(" 이 샘플 예제를 수행하기 위해서는 "),a("a",{attrs:{href:"https://dialogflow.cloud.google.com/",target:"_blank"}},[t._v("dialogflow")]),t._v("에 대해 별도의 실습이 필요합니다."),a("br"),t._v(" Dialogflow Quick Start: "),a("a",{attrs:{href:"https://cloud.google.com/dialogflow/es/docs/quick",target:"_blank"}},[t._v("https://cloud.google.com/dialogflow/es/docs/quick")]),a("h2",[t._v("Prerequisites")]),a("ul",{staticClass:"checklist"},[a("li",[t._v("Python 3.7")]),a("li",[t._v("Flask")])]),a("h2",[t._v("Dependency")]),t._v(" 아래 public component를 사용하는 컴포넌트 입니다. "),a("ul",{staticClass:"checklist"},[a("li",[a("a",{attrs:{href:"/docs/voice/reference",target:"_blank"}},[t._v("음성 + NLU (Beta)")])])]),a("h2",[t._v("예제")]),t._v(" 이 샘플 예제는 레시피를 물을 수 있는 음성 예제입니다. 마이크 버튼을 누르고 발화를 하면 발화가 순차적으로 화면에 보여지며 발화가 완료되면 응답 메시지와 함께 레시피 링크가 주어집니다. "),a("br"),t._v(" 이 예제는 아래 웹소켓을 사용하여 구현되었습니다. "),a("ol",[a("ul",{staticStyle:{"line-height":"34px"}},[a("li",[a("a",{attrs:{href:"/docs/voice/reference#text3",target:"_blank"}},[t._v("ws://localhost:8009/nlu/dialogflow/stream/text")])])]),a("img",{staticStyle:{"margin-bottom":"10px","margin-top":"10px"},attrs:{src:"/assets/img/getstarted17.png",alt:""}}),a("li",[t._v("구글 계정을 생성 후 "),a("a",{attrs:{href:"https://cloud.google.com/dialogflow/es/docs/quick/setup#auth",target:"_blank"}},[t._v("여기")]),t._v("를 참고하여 credential 키를 발급해주세요. JSON 파일을 잘 저장해 주세요.")]),a("li",[a("a",{attrs:{href:"https://dialogflow.cloud.google.com/",target:"_blank"}},[t._v("Dialogflow 콘솔")]),t._v("로 로그인하여 레시피 인텐트를 만들어 줍니다.")]),a("li",[t._v("Entities > CREATE ENTITY 에서 다음과 같이 설정하고 SAVE 버튼을 눌러 줍니다.")]),a("img",{staticStyle:{"margin-bottom":"60px","margin-top":"10px"},attrs:{src:"/assets/img/getstarted18-0.png",alt:""}}),a("li",[t._v("Intents > CREATE INTENT 에서 다음과 같이 설정하고 SAVE 버튼을 눌러 줍니다.")]),a("img",{staticStyle:{"margin-bottom":"60px","margin-top":"10px"},attrs:{src:"/assets/img/getstarted18.png",alt:""}}),a("img",{staticStyle:{"margin-bottom":"60px","margin-top":"10px"},attrs:{src:"/assets/img/getstarted19.png",alt:""}}),a("li",[t._v(" 톱니바퀴 버튼을 클릭 후 Project ID를 복사해둡니다. ")]),a("img",{staticStyle:{"margin-bottom":"60px","margin-top":"10px"},attrs:{src:"/assets/img/getstarted20.png",alt:""}}),a("li",[a("a",{attrs:{href:"/assets/img/voice-sample.zip",target:"_blank"}},[t._v("소스코드")]),t._v("를 다운로드 받습니다. ")]),a("li",[t._v(" static/js/index.js #5-12에서 project_id, credential, rate을 적절하게 수정합니다. ")]),a("ul",{staticStyle:{"line-height":"34px"}},[a("li",[t._v("project_id: 4번에서 복사한 것을 붙여 넣으면 됩니다.")]),a("li",[t._v('credential: 9번의 name과 동일하게 적어주면 됩니다. 이 예제에서는 "sample"로 합니다. ')])]),a("li",[t._v(" 코드 수정 후 다른 예제와 동일한 방식으로 컴포넌트를 생성 후 배포를 합니다. ")]),a("div",[a("strong",[t._v("배포스크립트 예시")]),a("pre",[a("code",{staticClass:"hljs"},[t._v("pip3 install -r {root}/voice_sample/requirements.txt && python3 {root}/voice_sample/app.py")])])]),a("li",[t._v(" 라즈베리파이 터미널에서 아래를 실행해 줍니다. 이때 1번에서 저장한 JSON 파일을 열어 내용을 복사한 후 아래 credential에 넣어 줍니다. ")]),a("div",[a("pre",[a("code",{staticClass:"hljs"},[t._v("curl --location --request POST '127.0.0.1:8009/credential' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"name\": \"sample\",\n \"credential\": \n}'")])])]),a("li",[a("a",{attrs:{href:"http://localhost:8881 ",target:"_blank"}},[t._v('"http://127.0.0.1:8881/"')]),t._v("에서 결과를 확인할 수 있습니다. (음성은 아직 베타로 오픈하여 불안정한 부분이 있습니다. 마이크 버튼을 누르고 음성을 말하고 5초 이상 작동을 안하면 라즈베리파이 재부팅을 하면 됩니다.) ")])])])}],n=a("53af"),o=a("55ad"),i=a("ea81"),l={data:function(){return{getStartedPage2Py:n["a"],getStartedPage2Sh:o["a"]}},components:{CodeViewer:i["a"]}},c=l,p=a("2877"),d=Object(p["a"])(c,r,s,!1,null,null,null);e["default"]=d.exports},"53af":function(t,e,a){"use strict";e["a"]="@app.route('/list', methods=('GET', ))\r\ndef list_tv():\r\n path = f\"/webostv\"\r\n headers = _create_headers()\r\n response = requests.get(HOST + path, headers=headers).json()\r\n return response\r\n \r\n\r\n@app.route('/connect/', methods=('GET', ))\r\ndef connect_tv(ip):\r\n path = f\"/webostv/{ip}\"\r\n headers = _create_headers()\r\n response = requests.post(HOST + path, headers=headers).json()\r\n return response\r\n\r\n\r\n@app.route('/capture/', methods=('GET', ))\r\ndef capture(ip):\r\n path = f\"/webostv/{ip}/control/capture\"\r\n headers = _create_headers()\r\n response = requests.get(HOST + path, headers=headers).json()\r\n return response\r\n\r\n\r\ndef _create_headers():\r\n headers = {\r\n \"Content-Type\": \"application/json;charset=UTF-8\"\r\n }\r\n return headers\r\n "},"55ad":function(t,e,a){"use strict";e["a"]="pip3 install -r {root}/tv_capture/requirements.txt && python3 {root}/tv_capture/app.py"}}]); //# sourceMappingURL=chunk-7c96a4c4.4d0c4822.js.map