LoginSignup
19
21

More than 5 years have passed since last update.

GoogleHomeで文字起こし(イマイチ)

Last updated at Posted at 2017-12-20

そもそもGoogleHomeっていい感じに音声を文字列として受け取ってくれるし、録音して文字起こしみたいなアプリよりもいい感じに出来るのでは?って思ったのでやってみた。

構成

GoogleHome → Actions on Google → Dialogflow→ GoogleAppsScript

記録用スプレッドシート、スクリプト

GoogleAppsScriptを選んだ理由はなんとなくスプレッドシート開いてるときに思いついたから。
出力先はテキストファイルでいいと思う
出力先のスプレッドシートに日付、時間、テキストの列があるものとする。
2017-12-21_01h45_34.png

Transcription.gs
var prop = PropertiesService.getScriptProperties();
// このあたりはプロジェクトのプロパティにそれっぽのを登録しておく
var sheetId = prop.getProperty('SHEET_ID');
var sheetName = prop.getProperty('SHEET_NAME');

function doPost(e) {
  var result = JSON.parse(e.postData.contents).result;
  try {
    var ss = SpreadsheetApp.openById(sheetId);
    var sh = ss.getSheetByName(sheetName);
    var lastrow = sh.getLastRow();
    sh.insertRowAfter(lastrow);
    lastrow++;

    var now = new Date();
    var date = Utilities.formatDate(now, 'Asia/Tokyo', 'yyyy-MM-dd');
    var time = Utilities.formatDate(now, 'Asia/Tokyo', 'HH:mm:ss');
    sh.getRange(lastrow, 1).setValue(date);
    sh.getRange(lastrow, 2).setValue(time);
    sh.getRange(lastrow, 3).setValue(result.resolvedQuery);
  } catch(ex) {
    return ContentService.createTextOutput('NG');
  }
  return ContentService.createTextOutput('OK');
}

できたら「公開」→「アプリケーションとして導入」
次のユーザーとしてアプリケーションを実行:自分
アプリケーションにアクセスできるユーザー:全員(匿名ユーザー含む)
以下のようなURLが発行されるのでメモ

https://script.google.com/macros/s/<スクリプトID>/exec

Actions on Googleでプロジェクトを作成

テキトーにプロジェクトを作ってDialogflowを呼ぶように設定

DialogFlow

GoogleHomeに話しかけた内容を受け取ってGASを呼びだす

Fulfillment

Fulfillmentを有効にし、WebHookにGASのURLを設定
2017-12-21_01h47_56.png

Intents

Default Fallback Intent

通常はうまく認識できなかったパターンがここに流れてくるが、基本的にすべてをここで処理する

Text responseを一旦削除し、「.」のみ登録(レスポンスでいちいち喋られるとテンポが悪いため)
下の方にあるFullfillmentを開き「Use webhook」にチェック
2017-12-21_02h12_17.png

:warning:どう考えても本来の使い方とは違う

Default Welcome Intent

とくに何かをするわけではないが、終了方法忘れるとつらいのでText responseに

文字起こしへようこそ。終了する時は「バルス」と言ってください。

とでも登録しておく

終了用Intent追加

Exitとでも名前をつけて

User saysに「バルス」「ばるす」ぐらいを登録しておく
会議中に絶対でないであろう言葉にするのがよい
※「終了」とかは別の流れで普通に出そうなワードなので避ける

一番下のGoogle Assistantを開き「End conversation」にチェックを入れる
2017-12-21_01h56_07.png

この時点で右上のTry it nowにテキトーに文字を打ち込めばスプレッドシートに記録されるはず

Actions on GoogleのApp Information

Actions on Googleに戻ってAssistant app name、Sample invocationsにそれっぽい名前をつける
公開しないのでエラーを消す必要はない
2017-12-21_01h59_42.png
2017-12-21_02h00_27.png

右下のSAVEで保存

Overviewに戻り、右下「TEST DRAFT」
2017-12-21_02h01_39.png

Simulator画面に移動するので試しに接続し、文字を入力してみる→スプレッドシートに記録されるはず
2017-12-21_02h03_14.png

ここまでやればGoogleHomeに同じように話しかければ文字起こしアプリが起動するのでテキトーに話しかければスプレッドシートに記録される

感想

1文話す → 「.」の発話(実際には何も言わないが) → ピコン → 1文話す → 「.」 → ピコン...
となり地味にテンポが悪い

とはいえ、まぁまぁな精度で結構長文でも認識されるらしい。
2017-12-21_01h19_12.png

↑は1行記録される分の発話後に意識的に少し開けた。どれぐらい長い文章を一気に認識できるかはためしてのお楽しみってことで。

みんなで意見を出し合うようなディスカッションには向かないかもしれないが、一人が発表する場なんかでは使えるかも。

19
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
21