Google HomeでViceTextによる音声の変更

概要

本記事は、書きかけです。
ViceTextを用いて、Google Homeに喋らせた時の内容のメモとして 残そうと思います。

前提

  1. Google Homeが利用可能な環境
  2. ガラケーとそのメールが利用可能な環境
  3. Raspberry pi などで、「Google Homeの喋らせ方」が設定済み

インストール


npm install voicetext
npm install fs
npm install express
npm install body-parser
npm install -g forever 

VoiceTextのAPIの取得

設定内容

VoiceTextWriter.jsの内容

var fs = require('fs');
var VoiceText = require('voicetext');

//APIキーを入力。
var voice = new VoiceText('xxxxxxxxxxxxxxxxxxx');
var OUT_PATH = '/home/pi/homebot/voice/_temp.wav'

//IPアドレスを入力する。
var OUTPUT_URL = 'http://192.168.x.xx:9000/_temp.wav';

// set spearker at random
var array = [voice.SPEAKER.HIKARI, voice.SPEAKER.HARUKA,voice.SPEAKER.TAKERU,voice.SPEAKER.SHOW,voice.SPEAKER.BEAR,voice.SPEAKER.SANTA];
var mySpeaker = array[Math.floor(Math.random() * array.length)];

// set emotion at random
var array2 = [voice.EMOTION.HAPPINESS, voice.EMOTION.ANGER,voice.EMOTION.SADNESS];
var myEmotion = array2[Math.floor(Math.random() * array2.length)];

console.log("Speaker:" + mySpeaker + ", Emotion:" + myEmotion);

class VoiceTextWriter{

convertToText(text){
return new Promise(function(resolve,reject){
voice

.speaker(mySpeaker)
.emotion(myEmotion)
.emotion_level(2) // 感情レベル。1〜4を指定。数値が大きいほど感情が強。
.pitch(95)  // 50から200(%)まで。値が小さいほど低い音になります。
.speed(95)  // 50から400(%)まで。値が小さいほど遅い話し方になります。
.volume(150) // 50から200(%)まで。値が小さいほど小さい音になります。
.speak(text, function(e, buf){
    if(e){
      console.error(e);
      reject(e);

    }else{
    fs.writeFileSync(OUT_PATH, buf, 'binary');
  resolve(OUTPUT_URL);
    }
  });
});
}
}
module.exports = VoiceTextWriter;

index.jsの内容

#!/usr/local/bin/node
const express = require('express');
const bodyParser = require('body-parser');
const fs = require('fs');

const app = express();
const serverPort = 9000;
const urlencodedParser = bodyParser.urlencoded({ extended: false });

// CORSを許可する
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});

app.use(express.static(__dirname + '/voice'));

app.get('/', function (req, res) {
res.send('Hello World!');
});

app.listen(serverPort, () => {
console.log(`Start api-server. Port is ${serverPort}`);
})

google-home-notifier-voicetext.jsの作成

Google-home-notifier.jsをコピーし、 Google-home-notifier-voicetext.jsを作成した。 その上で、2行を追加する。 (参考サイトは追記予定)
var Client = require('castv2-client').Client;
var DefaultMediaReceiver = require('castv2-client').DefaultMediaReceiver;
var mdns = require('mdns');
var browser = mdns.createBrowser(mdns.tcp('googlecast'));

//var deviceAddress = 'Google HomeのIPアドレス';
var deviceAddress;

var language;
//↓この2行を追加
var VoiceTextWriter = require('./VoiceTextWriter');
var voiceTextWriter = new VoiceTextWriter();
以下略

EXPRESSの起動

下記にてMP3を認識させる必要あり? https://qiita.com/taaaaaaak22/items/abfb9f2a672689c20505 
下記を参考にexpressを起動
 https://github.com/taaaaaaak22/google-home/blob/master/api-server/index.js

参考

下記サイトを参考にして設定しました。

コメント

このブログの人気の投稿

Youtubeの音楽をGoogle Homeで再生

Google HomeでVoiceTextの話者と感情をランダムにする

Google Home mini をカスタマイズしてよかったこと、イマイチだったこと

100均のフレキシブルスマートフォンスタンドでGoogle Home miniをリビングの電子ピアノに固定

修正メモgoogle-tts-api

Google HomeからRM Mini3を経由してテレビを操作

Google Home からガラケーにメール、ガラケーからのメールをGoogle Homeで読み上げる

Raspberry Pi3にhubotをインストールする