기본 콘텐츠로 건너뛰기

Google Cloud Speech 음성인식 API python, nodejs

Google Cloud Speech 음성인식 API python, nodejs

Jeongchul

김정출 김정출 2017. 8. 29. 00:46

Google Cloud Speech 음성인식 API python, nodejs

Google Cloud 프로젝트 생성하기

https://cloud.google.com/speech/

웹 사이트로 이동하여 VIEW CONSOLE 흰색 버튼을 클릭합니다.

상단부 메뉴에 프로젝트를 클릭합니다.

다음에 뜬 팝업창에서 + 버튼을 클릭합니다.

새 프로젝트에서 프로젝트 이름을 입력하고 '만들기' 파란색 버튼을 클릭합니다.

이후에 생성된 프로젝트로 이동합니다.

사이드 메뉴에서 APIs and Services 버튼을 클릭하고 Dashboard로 이동합니다.

대시보드 옆에 ENABLE APIS AND SERVICES 버튼을 클릭합니다.

Google Cloud 기계 학습

Speech API 파란색 버튼을 클릭합니다.

'사용 설정' 파란색 버튼을 클릭합니다.

'사용 중지' 버튼을 클릭하면 Google Cloud Speech API 사용을 중지합니다.

사이드 메뉴에서 '사용자 인증 정보' 버튼을 클릭합니다.

Google Cloud Speech API

https://console.cloud.google.com/flows/enableapi?apiid=speech.googleapis.com

다음의 사이트에서 위에서 만든 프로젝트를 선택하고 '계속' 파란색 버튼을 클릭합니다.

'사용자 인증 정보로 이동' 파란색 버튼을 클릭합니다.

Google Cloud Speech API를 선택하고

Google Compute Engine을 사용 중인가요에 예를 선택하고

'어떤 사용자 인증 정보가 필요한가요?' 파란색 버튼을 클릭합니다.

'완료'의 파란색 버튼을 추가합니다.

OAuth 클라이언트 ID를 만들기 위해서 제품 이름을 설정해야 합니다.

'동의 화면 구성'의 파란색 버튼을 클릭합니다.

제품 이름을 입력합니다. '저장' 파란색 버튼을 클릭합니다.

애플리케이션 유형에서 웹 애플리케이션을 선택하고, 이름을 입력합니다.

'생성'의 파란색 버튼을 클릭합니다.

생성된 OAuth 클라이언트의 ID와 Secret Key를 확인할 수 있습니다.

Google Cloud SDK 설치

https://cloud.google.com/sdk/?hl=ko

사이트로 이동합니다.

OS에 맞게 INSTALL FOR MAC OS X 파란색 버튼을 클릭하여 설치를 진행합니다.

$ mkdir GoogleCloudSDK

$ cd GoogleCloudSDK

$ wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-165.0.0-darwin-x86_64.tar.gz

$ tar -xzvf google-cloud-sdk-165.0.0-darwin-x86_64.tar.gz

$ sudo ./google-cloud-sdk/install.sh

Y를 입력합니다.

Y를 입력합니다.

Enter를 입력합니다.

$ source ~/.bash_profile

$ sudo gcloud init

Y 를 입력하여 로그인을 진행합니다.

구글 로그인 사이트로 이동합니다. 로그인을 진행합니다.

'허용' 파란색 버튼을 클릭합니다.

허용 버튼을 클릭 후에 다음의 사이트로 이동합니다.

인증이 완료되었습니다.

터미널로 이동하면 프로젝트 ID가 보입니다.

인덱스 숫자를 입력합니다. 최근에 만든 prime-sign-175907인 1번을 입력합니다.

y를 입력합니다.

Google Cloud Account 생성

https://cloud.google.com/iam/docs/creating-managing-service-accounts

kimjeongchul 이라는 Account 계정을 생성합니다.

$ sudo gcloud iam service-accounts create kimjeongchul --display-name "my service account"

$ sudo gcloud iam service-accounts list

위의 이메일 주소를 복사합니다.

Google Cloud Service Account Key 생성

https://cloud.google.com/iam/docs/creating-managing-service-account-keys

$ sudo gcloud iam service-accounts keys create ~/kimjeongchul_gcloud_service_accounts_key.json --iam-account kimjeongchul@프로젝트명.iam.gserviceaccount.com

keyfile.json

sync-request.json 파일을 만듭니다.

$ vi sync-request.json

{

"config": {

"encoding":"FLAC",

"sampleRateHertz": 16000,

"languageCode": "en-US"

},

"audio": {

"uri":"gs://cloud-samples-tests/speech/brooklyn.flac"

}

}

$ sudo gcloud auth application-default login

이동되는 Google Login에서 로그인을 하고 '파란색' 허용 버튼을 클릭합니다.

이후에 Credentials saved to file이 경로에 저장됩니다. 경로를 복사하여 export 합니다.

$ export GOOGLE_APPLICATION_CREDENTIALS=/Users/kimjungchul/.config/gcloud/application_default_credentials.json

Google Cloud Speech API를 python이나 node js에서 사용하기 위해서는 위의 application_default_credentials.json이 필요합니다.

$ sudo gcloud auth application-default print-access-token

다음과 같이 access-token이 발급됩니다.

다음의 명령어에서 access_token에 들어갈 부분에 위의 액세스 토큰키를 집어넣고 다음의 명령어를 입력합니다.

$ curl -s -H "Content-Type: application/json" -H "Authorization: Bearer access_token" https://speech.googleapis.com/v1/speech:recognize -d @sync-request.json

portaudio19 install

Linux Ubuntu

$ apt-get install portaudio19-dev

Mac OS X

http://portaudio.com/docs/v19-doxydocs/compile_mac_coreaudio.html

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null

$ brew install portaudio

Google Cloud Speech Python

자 이제 실제로 직접 python 코드로 짜여진 음성인식 API를 호출해봅시다.

$ git clone https://github.com/GoogleCloudPlatform/python-docs-samples/

$ cd python-docs-samples/speech/cloud-client

$ virtualenv speech

$ source speech/bin/activate

$ pip -install -r requirements.txt

$ pip install pyaudio

$ python transcribe.py resources/audio.raw

이번에 스트리밍으로 실시간 마이크로 들어오는 음성을 인식해봅니다.

$ python transcribe_streaming_mic.py

$ vi transcribe_streaming_mic.py

main()함수에서 language_code 를 'en-US'에서 'ko-KR'로 변경하면 한국어로 작동됩니다.

$ python transcribe_streaming_mic.py

Google Cloud Speech Node js

https://www.npmjs.com/package/node-record-lpcm16#dependencies

Linux

$ sudo apt-get install sox libsox-fmt-all

Max OS X

$ brew install sox

GitHub

$ git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples

$ cd nodejs-docs-samples/speech

시스템 전체 node_module을 설치합니다.

$ npm install -g

이 프로젝트를 위해서도 npm install

$ npm install

$ vi ~/.bash_profile

마지막줄에 export GOOGLE_PROJECT=project_id를 입력합니다.

project_id는 프로젝트 정보 섹션 '프로젝트 ID'에서 확인할 수 있습니다.

https://console.cloud.google.com/

$ node quickstart.js

$ node recognize.js

$ node recognize.js listen

$ vi recognize.js

맨 밑으로 내려갑니다.

languageCode에서 default에 'ko-KR' 로 수정합니다.

$ node recognize.js listen

from http://jeongchul.tistory.com/544 by ccl(A)

댓글

이 블로그의 인기 게시물

[Mac OS X] 데스크탑 응용프로그램 개발시작

[Mac OS X] 데스크탑 응용프로그램 개발시작 현재 회사에서 다음 프로젝트로 Mac OS X를 개발해야 하는 일정이 생겨 난생 처음 데스크탑 응용프로그램을 개발하기 공부를 시작했고 여러가지 플랫폼이 있다는것을 발견했다. 어떤 플랫폼을 사용해야할 지 먼저 고민해보자. 무엇으로 개발할것인가? Xcode & Swfit or Objective-C Mac OS X 는 objective-c를 기반으로 만들어졌다. apple에서 제공하는 Xcode와 objective-c 혹은 Swift로 응용 프로그램을 만들 수 있다. Electron Electron 프레임워크를 사용하면 javascript, HTML, CSS를 사용하여 크로스 플랫폼 데스크탑 응용 프로그램을 만들 수 있다. react-native-desktop Qt 프레임 워크를 기반으로하는 크로스 플랫폼이다. react-native 와 javascript로 응용 프로그램을 만들 수 있다. Qt는 컴퓨터 프로그래밍에서 GUI 프로그램 개발에 널리 쓰이는 크로스 플랫폼 프레임워크. 각 플랫폼의 장단점은 무엇인가? Xcode & Swfit or Objective-C - 장점 모든 OSX API에 직접 접근할 수 있다. Xcode를 통해 App Store에 쉽게 배포할 수 있다. - 단점 Windows 전용 응용 프로그램을 다시 개발해야한다. Swift언어를 모른다면 새로 공부해야 한다. Electron - 장점 웹스택을 가지고 빠르게 만들 수 있다. 다양한 플랫폼을 지원한다. - 단점 Native언어로 개발할때 보다 성능이 떨어질 이슈가있다. OS X API를 사용하는데 복잡하다. *API에 대한 JavaScript 래퍼가 없으면 자체 래퍼를 작성하지 않는 한 프로젝트에서 사용할 수 없습니다. React-native-desktop - 장점 현재 개발스택과 완전히 동일하므로 더 빠르게 개발 할 수 있다. 다양한 플랫폼을 지원한다. - 단점 N...

AWS CI/CD 파이프라인에 Slack 알람 적용(Lambda, CloudWatch Events 연동)

AWS CI/CD 파이프라인에 Slack 알람 적용(Lambda, CloudWatch Events 연동) 이번 글에서는 구축된 CI/CD 파이프라인과 Slack 알람을 연동하는 방법에 대해서 알아볼 것이다. CI/CD 파이프라인 시작/종료(성공/실패) 시 Amazon CloudWatch Events에서 해당 이벤트를 감지한 후 AWS Lambda로 트리거 신호를 보내면 AWS Lambda에서 Slack채널로 알람을 보내는 프로세스다. 글의 순서는 다음과 같다. Amazon CloudWatch Events, AWS Lambda란? 실습 전 준비사항 Slack Webhook 생성 AWS Lambda 함수 생성 AWS CloudWatch Events 생성 테스트 위와 같은 방식으로 구축을 하면 최종 프로세스는 다음 그림과 같다 (우리가 이 글에서 진행하는 내용은 빨간색으로 표시된 부분) 1. Amazon CloudWatch Events, AWS Lambda란? 1-1. Amazon CloudWatch Events란? Amazon CloudWatch Event(혹은 AWS CloudWatch Events)는 AWS 상태 변경 등을 감시할 수 있는 기능이다. 만약 사용자가 만든 규칙에 맞는 이벤트가 발생하게 되면 해당 이벤트가 사정에 정의된 규칙과 일치할 경우 하나 이상의 대상 작업을 호출한다. 이벤트 유형에 따라 알람을 보내거나, 이벤트 정보를 캡쳐하거나, 교정작업을 수행하거나, 이벤트를 시작하거나, 기타 작업을 수행할 수 있다. 이벤트가 발생할 경우 대상 작업은 AWS Lambda함수, AWS Kinesis 스트림, AWS SQS, Amazon SNS 등이 있다. 사용되는 사례로는 1) 이벤트가 발생하면 Lambda함수를 사용하여 Slack채널로 알림을 전달하거나, 2) AWS 상태 이벤트가 발생하면 Lambda 및 CloudWatch Events를 사용하여 Amazon SNS로 사용자 지정 텍스트 또는 SMS 알림을 보내는 등...

[2020-angstromCTF] web - A peculiar query write-up

[2020-angstromCTF] web - A peculiar query write-up English write-up UI seems like below. If you click the 'the source' link, you can get back-end source code. const express = require("express"); const rateLimit = require("express-rate-limit"); const app = express(); const { Pool, Client } = require("pg"); const port = process.env.PORT || 9090; const path = require("path"); const client = new Client({ user: process.env.DBUSER, host: process.env.DBHOST, database: process.env.DBNAME, password: process.env.DBPASS, port: process.env.DBPORT }); async function query(q) { const ret = await client.query(`SELECT name FROM Criminals WHERE name ILIKE '${q}%';`); return ret; } app.set("view engine", "ejs"); app.use(express.static("public")); app.get("/src", (req, res) => { res.sendFile(path.join(__dirname, "index.js")); }); app.get("/", async (req, res) => { if (req.query...