Google Home을 브라우저에서 말해보세요.

소개



Google Home을 최근에 구입했기 때문에 여러가지 놀아 보았습니다.

Google Home은 자발적으로 말하는 기능을 표준으로 제공하지 않습니다.
그러나 google-home-notifier을 사용하면 명령으로 말할 수 있습니다.

↓이쪽의 기사가 참고가 되었습니다.
Google Home 개발 시작 / google-home-notifier 설명

조금 시도해 봅시다.

명령으로 말하자.



google-home-notifier 설치


$ npm init
$ npm i -S google-home-notifier

js 파일 만들기



main.js

/**
* 設定
*/
const googlehome = require('google-home-notifier');
const msg = process.argv[2] || 'なんか喋ってよ'; // process.argv[2]で引数を取得。ない場合はデフォルトメッセージを代入


/**
* 喋らせる関数
*/
function say(text, language = 'ja'){
  googlehome.device('Google-Home', language);
  googlehome.notify(text, function(res) {
    console.log(res);
  });
}

say(msg); // 英語にしたい場合は第二引数を'en'にする

그리고는, 이하 커맨드를 두드릴 뿐!main.js 다음에 좋아하는 일본어를 쓰면 그대로 Google 홈이 말해줍니다.
$ node main.js 私はGoogleだっ!

하지만 실제는 Google Text To Speach를 사용하여 음성 파일을 재생하므로 Google Home이 말하는 것은 아닙니다. (Google Home보다 조금 카타코토입니다)

음, 잠깐 유감.
빨리 Google Home에 직접 말하는 API를 할 수 있기를 바랍니다.

브라우저에서 실행 가능



명령을 치는 것은 번거롭고 누구나 부담없이 할 수 있도록 브라우저에서 실행할 수 있도록 해 보려고 생각합니다.

필요한 플러그인 설치


$ npm init
$ npm i -S express body-parser

이전 main.js를 다음과 같이 사용자 정의



명령이 아니라 post에서 받은 타이밍에 실행하도록 하고 있습니다.

main.js
/**
* 設定
*/
const googlehome = require('google-home-notifier');
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const msg = process.argv[2] || 'なんか喋ってよ'; // process.argv[2]で引数を取得。ない場合はデフォルトメッセージを代入
const port = 8001;


/**
* ローカルサーバー起動
*/
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(express.static('./'));
app.listen(port, ()=> {
  console.log(`http://localhost:${port}/`);
});


/**
* 喋らせる関数
*/
function say(text, language = 'ja'){
  googlehome.device('Google-Home', language);
  googlehome.notify(text, function(res) {
    console.log(res);
  });
}

/**
* POST時の処理
*/
app.post('/', function(req, res){
  let msg = req.body.msg;

  say(msg);
  res.send({ response : msg });
});

html 만들기



그리고 나서는, main.js (을)를 브라우저로부터 실행할 수 있도록 fetch()로 post 합니다.

index.html(주요 부분만)
fetch('./', {
  method: 'POST',
  cache: 'no-cache',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ msg: '★ここに喋らせたい内容を投げ込む' })
})
.then(res => res.json())
.catch(error => console.error('Error:', error))
.then(response => console.log('Success:', response));

화면 만들기



그리고는 이런 느낌의 화면을 만들어 위의 script를 실행시키는 것뿐입니다.
(코드는 할애합니다)



명령 실행


main.js를 실행합니다.
$ node main.js

이제 로컬 서버가 시작되므로 http://localhost:8001/으로 이동하여 놀자.

또한 http://***.localhost:8001/ URL로 스마트 폰에서도 액세스 할 수 있으므로 쉽게 즐길 수 있습니다. (***는 Mac 컴퓨터 이름)

그러나 Mac이 잠을 자면 물론 실행할 수 없게 되므로 주의를.

마지막으로



의외로 간단하게 Google Home을 말할 수 있었습니다.
다만, 이번 샘플에서는 집내에서만 할 수 있으므로, 외부로부터 실행을 할 수 없습니다.
Raspberry Pi 등으로 집 서버를 만들면 좋겠지만, 거기까지 하는 것은 번거롭다. .
그래서 그 중 구글 공식으로 편리한 기능을 제공해 주면 좋겠다고 생각합니다.

좋은 웹페이지 즐겨찾기