0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

会議内容を自動でテキストマイニングしよう!

Last updated at Posted at 2020-07-19

はじめに

「MTG内容をテキストマイニングしてぽんとできん?」何ていう相談が出てきました。
そこから始まったkotadoraの冒険の書です。
わからないから初めから勉強。

基本的な考え方

なんらかで話す⇒テキストに変換する⇒テキストについてマイニングする⇒JSかなんかで見やすくる
という流れになるのは目に見えた。ただ、やり方がね。

ということで探していくと、google様に良さそうな物があるではないか!というわけでググりまくる。

結局流れとしては

image.png

こんな感じになりそう。まさにcloud functionsさまさまなプランニング。

cloud functionsとは??

まぁ要するにpub/subを複数実行できるスグレモノ、という認識です(雑)
pub/subのgoogle様の説明を呼んだのだが、結局パブリッシャーとサブスクライバーって結局何よ、と思ったのでぐぐってみたら、次の記事が。

情報の提供者をパブリッシャーといいます。 パブリッシャーはある件名についての情報を提供しますが、情報を求めるアプリケーションについては何も認識する必要がありません。
情報の利用者をサブスクライバーといいます。 サブスクライバーはどんな情報が必要かを決定し、その情報が受信されるのを待ちます。 サブスクライバーは、多種多様なパブリッシャーから情報を受信し、その情報を他のサブスクライバーに送信できます。

https://www.ibm.com/support/knowledgecenter/ja/SSFKSJ_7.1.0/com.ibm.mq.explorer.doc/p_pubsubers.htm

とのこと。まぁ、さておき作ってみますか。

とりあえずできるか?

macbookでSpeechAPIできないの?って思いググる。
https://qiita.com/MikuriyaHiroshi/items/9c64a970b037c560906e
あるじゃんか。ありがとうございます、もちろん参考にさせていただきます。

というか、え!?こんな簡単にできるの!?そうです。出来てしまいました。。。。
じゃあ、これにNaturalLanguageAPIつければ・・・いけるじゃん!
あ、ちなみに地味ですが、環境変数exportはexport -p でリストが、-nで消せます。(まぁ重ねれば良いんだけどね。)

説明と補足

元ネタは https://github.com/googleapis/nodejs-speech/blob/master/samples/package.json

package.json
{
  "name": "test", //import()require()で呼び出すとき使うもの
  "version": "0.0.1", //nameとversionで1セット。この2つで定義。
  "private": true, //これでnpm(NodePackagedModule)のモジュールが非公開のもの=つまりローカルにインストールされる($HOME内ということですね。)
  "license": "Apache Version 2.0",
  "author": "Google Inc.",
  "scripts": {
    "test": "cd ..; npm run --verbose speech/system-test/*.test.js"
  }, //ここにはshellスクリプトで実行する内容をそのまま書く。この場合、cd .. で戻って、npn run。
  "dependencies": {
    "@google-cloud/speech": "0.9.0",
    "@google-cloud/storage": "1.0.0",
    "node-record-lpcm16": "0.3.0"
  }, //依存するパッケージ(もちろんnpmの。)をここに書いている。つまり、ここに書いたパッケージを自動的に落としてくれるという優れもの(もちろんnpmにあるという、ね笑)
  "engines": {
    "node": ">=4.3.2"
  } //ノードの場所定義。
}
test.json
{
const record = require('node-record-lpcm16'); //const つまり varとかと違って再度代入出来ない変数。後出しは不可。
const speech = require('@google-cloud/speech');
const speechClient = speech(); //Google-cloudのnpmでのspeechのパッケージの中の関数を使う。
const SAMPLE_RATE = 16000 //サンプリングレート。

const request = { //SpeechAPIのcreateRecognizeStreamという場所に設定(でもどこ??
  config: {
    encoding: 'LINEAR16',
    sampleRateHertz: SAMPLE_RATE,
    languageCode: 'ja-jp'
  }
}; 

const recognizeStream = speechClient.createRecognizeStream(request)
  .on('error', console.error)
  .on('data', (data) => {
    console.log(data.results);
  });

record.start({
  sampleRate: SAMPLE_RATE,
  thresholdStart: 0.2, // silence threshold to start recording, overrides threshold
  thresholdEnd: 0.1, // silence threshold to end recording, overrides threshold
  silence: '0.1' // seconds of silence before ending
}).pipe(recognizeStream);

}

APIリファレンス
https://cloud.google.com/nodejs/docs/reference/speech/1.4.x/v1.SpeechClient

注)2018/4月に下書き書いて、そのまま放置してます。ただ、必要に迫られたので一応公開してます

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?