내맘대로 라이프

구글 Speech-To-Text PHP버전 완전 정복 Win10 본문

Html5 JS CSS

구글 Speech-To-Text PHP버전 완전 정복 Win10

내눈물 2020. 8. 28. 16:41

개삽질 끝에 성공했습니다.

힘들었어요 정말

준비물

 

> 아파치 2.4.46

https://www.apachelounge.com/download/

 

Apache VS16 binaries and modules download

 

www.apachelounge.com

> composer

https://getcomposer.org/Composer-Setup.exe

 

> 구글 Cloud SDK

dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe?hl=ko

 

> PHP

https://windows.php.net/downloads/releases/archives/

 

windows.php.net - /downloads/releases/archives/

 

windows.php.net

저는 php-5.5.9-Win32-VC11-x64 버전을 설치했습니다.

 

1. 아파치 설치

(기왕 하는 김에 ssl까지 설치할겁니다. 구글 stt를 실행하기위해 ssl이 필요하진 않습니다.)

 

1) C:\Apache24 폴더에 아파치를 압축해제하여 넣습니다.

2) C:\Apache24\conf\httpd.conf 파일을 수정합니다

 

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

LoadModule ssl_module modules/mod_ssl.so

 

위 두 줄을 검색해서 주석을 풀어줍니다.

 

DirectoryIndex index.html

 

를 검색해서

DirectoryIndex index.html index.php

로 수정합니다.

 

Include conf/extra/httpd-ssl.conf

를 검색해서 주석이 되어있으면 주석을 삭제하고

검색되지 않으면 맨 아랫줄에 추가합니다.

 

Include conf/extra/httpd-php5.conf

를 맨 아랫줄에 추가합니다.

 

3) C:\Apache24\conf\extra\httpd-ssl.conf 파일을 수정합니다.

SSLProtocol all 를 검색하여

SSLProtocol all +TLSv1.1 +TLSv1.2 +TLSv1.3 로 수정합니다

SSLProxyProtocol all 를 검색하여

SSLProxyProtocol all +TLSv1.1 +TLSv1.2 +TLSv1.3 로 수정합니다

 

SSLPassPhraseDialog를 검색하여

SSLPassPhraseDialog exec:C:\Apache24/conf/ssl_passwd.bat

로 수정합니다

 

<VirtualHost _default_:443>

를 검색해서 <VirtualHost *:443>로 바꿔줍니다

www.example.com:443

 

ServerName www.example.com:443 

를 검색하여

ServerName localhost:443

로 수정합니다

 

SSLCertificateFile를 검색하여

SSLCertificateFile "${SRVROOT}/bin/localhost.crt"

로 바꾸고

SSLCertificateKeyFile를 검색하여
SSLCertificateKeyFile "${SRVROOT}/bin/localhost.key"

로 바꿉니다

 

4) C:\Apache24\conf\extra\httpd-php5.conf 파일을 수정합니다.

파일이 없다면 만들어서

#

# mod_php5 설정

#

LoadModule php5_module "C:/PHP5/php5apache2_4.dll"

AddType application/x-httpd-php .php .html

PHPIniDir "C:/PHP5"

 

라고 적어주고 저장합니다.

 

2. PHP 설치

1) 다운로드한 파일을 C:\PHP5 폴더에 압축을 풉니다

2) php.ini-development 파일을 php.ini로 파일명을 변경합니다.

 

user_dir =

를 검색해서 그 아래에 있는

; extension_dir = "ext" 를

extension_dir = "C:/PHP5/ext" 로 바꾸어줍니다.

 

allow_url_include 를 검색해서

allow_url_include = On 로 바꾸어줍니다.

 

extension=php_curl.dll

extension=php_mbstring.dll

extension=php_openssl.dll

 

를 검색해서 주석을 풀어줍니다.

 

curl.cainfo 를 검색해서

curl.cainfo = C:\PHP5\extras\ssl\cacert.pem 로 바꾸어줍니다.

 

cacert.pem
0.21MB

 

3) 위 파일을 다운받아서 (혹은 https://curl.se/ca/cacert.pem)

C:\PHP5\extras\ssl\ 폴더에 넣어줍니다.

 

3. 인증서 작성

1) Win+r 키를 누른 다음에 cmd를 실행합니다

C:\Apache24\bin 폴더로 이동합니다.

openssl req -config C:\Apache24\conf\openssl.cnf -new -out localhost.csr 를 입력합니다.

비밀번호를 4자리 이상으로 두번 작성합니다.

 

국가 이름 : KR

State 이름 : 지역명 (ex 경기도)

도시 이름 : 지역명 (ex 수원시)

기관 이름 : 회사 등의 기관 이름

소속 이름 : 개발팀 등의 소속 이름

이름 : 자신의 이름

이메일 : 자신의 이메일

(전부 영어로 작성합니다)

A challenge password []: 는 작성하지 않아도 됩니다.

An optional company name []: 는 작성하지 않아도 됩니다.

 

 

openssl rsa -in privkey.pem -out win_privkey.pem

를 입력합니다

기존에 등록해놓은 비밀번호를 입력합니다.

 

openssl rsa -in win_privkey.pem -out localhost.key

를 입력합니다.

openssl x509 -in localhost.csr -out localhost.crt -req -signkey localhost.key -days 3650

를 입력합니다.

 

이렇데 다섯개의 파일이 생성되었으면 성공입니다.

 

이렇게 해서 작성된 인증서는 비밀번호를 입력해야 사용할 수 있기 때문에

배치파일을 만들어야 합니다.

ssl_passwd.bat 파일을 새로 생성한 다음

@echo 이후에 비밀번호를 적습니다.

그리고 파일을 저장한 다음

C:\Apache24\conf 폴더에 넣습니다.

 

이 순서대로 

작성하셨으면 아파치와 php 전부 정상적으로 설치되셨을 겁니다.

이제 아파치를 서비스에 등록하셔야 합니다.

커맨드창(cmd)에서 C:\Apache24\bin 폴더로 이동합니다.

httpd.exe -k install -n "APACHE24" 라고 입력합니다.

(나중에 삭제하실때는 httpd.exe -k uninstall -n "APACHE24" 라고 하시면 됩니다)

 

서비스에 정상적으로 올라갔는지를 확인하려면

제어판 > 관리도구 > 서비스 를 선택해서

APACHE24라는 이름으로 서비스가 등록되어있는지 확인하면 됩니다.

이렇게 되어있으면 정상적으로 설치된 것입니다.

 

주소창에 localhost를 입력했을때 이렇게 나오면 됩니다.

 

https://localhost/로 입력했을 떄

이렇게 나오면 ssl설정도 된 것입니다.

 

 

4. 구글에서 프로젝트 생성하기

 

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

 

Google Cloud Platform

하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요.

accounts.google.com

에 접속합니다.

 

저 같은 경우는 프로젝트가 생성되어있기 때문에 프로젝트로 바로 들어가는데

처음 이신 경우 My First Project 가 기본으로 선택되어있을겁니다.

프로젝트명의 오른쪽 삼각형을 누르면

 

그동안 생성되어있는 프로젝트들이 뜰텐데

처음 시도하시는거라면 없거나 My First Project만 있을겁니다.

오른쪽 상단의 새 프로젝트를 선택해주세요

 

프로젝트 이름을 적으시고 만들기를 클릭하시면 프로젝트가 생성됩니다.

 

그 다음에 프로젝트를 사용하기 위해서 서비스 계정이 필요합니다.

왼쪽의 IAM 및 관리자 에 커서를 가져다 덴 다음에 서비스 계정을 클릭합니다.

 

 

상단의 서비스 계정 만들기를 클릭합니다

 

이름을 적으면 ID는 자동으로 생성됩니다.

 

그 후 서비스 계정 권한에서

역할 선택을 누른 다음에

프로젝트 > 소유자 를 선택합니다.

 

여기는 입력하지 않으셔도 됩니다.

 

완료를 하시면 서비스 계정이 나열되어있는데

이중 원하시는 계정을 선택합니다.

 

 

아래쪽에 키 추가를 클릭합니다.

새 키 만들기를 선택합니다.

 

비공개키는 JSON으로 선택하시고 만들기를 누릅니다.

 

키가 생성되면 다운로드됩니다.

원하는 위치에 옮겨 놓아주세요

 

 

5. 구글 Cloud SDK 설치

GoogleCloudSDKInstaller.exe 파일을 실행합니다.

설치가 끝나고 Finish를 누르면  구글 클라우드의 초기 설정이 시작됩니다.

 

첫번째 질문에서 Y를 입력하고 엔터를 치면

 

이런 로그인창이 팝업됩니다

아이디와 비밀번호를 입력하면

 

이런 화면이 나옵니다.

이 화면에서 허용을 눌러주면 

구글 클라우드 SDK를 사용할 수 있게 됩니다.

 

허용을 눌러주면 커맨드 창에 이어서 다음 내용들이 나오는데

프로젝트를 선택하게끔 됩니다.

나열되어있는 프로젝트들 중 사용할 프로젝트 번호를 입력해주면 됩니다.

 

6. composer 설치

Composer-Setup.exe 를 실행합니다.

 

 

 

7. 구글 SDK에서 speech 설치하기

커맨드창 재구동 

 

C:\Apache24\htdocs\stt로 이동 후

 

composer require google/cloud-speech

speech가 설치 완료 되면 모든 준비는 마무리 된 것이고

실행 php파일만 작성하면 됩니다.

아래 php파일을 작성한 후

C:\Apache24\htdocs\stt 폴더에 넣어줍니다.

index.php로 저장하시면 편합니다.

test.wav
0.37MB

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
require __DIR__ . '/vendor/autoload.php';
 
use Google\Cloud\Speech\V1\SpeechClient;
use Google\Cloud\Speech\V1\RecognitionAudio;
use Google\Cloud\Speech\V1\RecognitionConfig;
use Google\Cloud\Speech\V1\RecognitionConfig\AudioEncoding;
 
$audioFile = 'test.wav';
$content = file_get_contents($audioFile);
$audio = (new RecognitionAudio())
    ->setContent($content);
$config = new RecognitionConfig([
    'encoding' => AudioEncoding::LINEAR16,
    'sample_rate_hertz' => 44100,
    'language_code' => 'ja-JP'
]);
 
$projectId = 'PROJECT_ID';
$keyFilePath = 'KEY.JSON';
 
$client = new SpeechClient([
    'projectId' => $projectId,
    'credentials' => $keyFilePath,
]);
 
$response = $client->recognize($config, $audio);
foreach ($response->getResults() as $result) {
    
    $alternatives = $result->getAlternatives();
    $mostLikely = $alternatives[0];
    $transcript = $mostLikely->getTranscript();
    echo $transcript;
}
 
$client->close();
 
cs

저는 지금 일본어 변환기를 만들고 있어서 language_code가 ja-JP로 되어있는데

한글은 ko-KR, 영어는 en-US 등으로 바꾸시면 됩니다.

 

제일 중요한 부분은

 

$projectId = 'PROJECT_ID';

$keyFilePath = 'KEY.JSON';

 

이부분입니다. 구글에서 제공하는 샘플에는

이부분이 없어서... 계속해서 에러가 났습니다.

 

프로젝트 아이디는 콘솔에서 생성한 프로젝트의 아이디를 넣으면 되고

키파일패스는 위에서 저장한 서비스 계정 키의 위치를 넣어줍니다.

$keyFilePath = 'C:\Users\mytea\Downloads\my-stt-project-XXXXXXXXXXXXXXX.json';

 

위 소스를 만들어 저장하고 

http://localhost/stt/ 로 접속하면

 

이런식으로 wav파일이 일본어로 변환됩니다.