音声ファイルの文字書き起こし!

IBM CloudSpeech to Textというサービスを利用してみました。

サンプル

添付ファイルフィールドに音声ファイルを読み込んだ際に、文字列フィールドに文字を書き起こします。

デモには、http://www.voice-pro.jp/announce/の「G-01」を利用しました。

IBM Cloud設定

こちらを参考にSpeech to Text サービスを作成してください。 サービス作成後、管理画面に表示された「API鍵」をメモしておきます。

kintone設定

フォーム設定

コード

下記、「sample.js」を読み込みます。 「apiKey」には、「IBM Cloud設定」でメモした「API鍵」を設定します。

・sample.js

(function() {"use strict";kintone.events.on(['app.record.create.show','app.record.edit.show',
  ],function(event) {varapiUrl='https://gateway-tok.watsonplatform.net/speech-to-text/api/v1/recognize?model=ja-JP\_BroadbandModel';varapiKey='\*\*\*\*\*\*';document.addEventListener('change',function(e) {if(e.target.type!=='file')return;varfile=e.target.files[0];if(!file.type.match('audio.\*'))return;kintone.proxy.upload(
        apiUrl,'POST',
        {'Content-Type':file.type,'Authorization':'Basic '+btoa('apikey:'+apiKey)
        },
        {
          format:'RAW',
          value:file
        }
      ).then(function(response) {varrecord=kintone.app.record.get();record.record.text.value=JSON.parse(response[0]).results.reduce(function(text,result) {returntext+result.alternatives[0].transcript.replace(/ /g,'')+'。';
        },'');kintone.app.record.set(record);
      });
    },true);
  });
})();

以前ご紹介した、MediaRecorder APIを使った録音機能GASを使った自動翻訳機能などと組み合わせれば、便利なアプリが作れそうですね。

江田様

お世話になります。

面白いアプリと思い、さっそく試してみましたが、

10分ぐらいの音声データでも

message":"kintoneとプロキシーAPIとの通信がタイムアウトしました。

になり、変換できませんでした。

タイムアウトにしない方法はあるのでしょうか

shima様

お世話になっております。

コメントありがとうございます。
残念ながら、現状ではタイムアウトを伸ばすことはできないかと思います。

kintone.proxy.upload()では、タイムアウトの設定はできません。
https://developer.cybozu.io/hc/ja/articles/202166320#step3

また、クロスドメイン制約のため、XHR(XMLHttpRequest) を使用したcybozu.comと外部サイトとの通信はできません。
https://developer.cybozu.io/hc/ja/articles/201919400#step6

対策として、ファイルを分割してアップロードするというのはいかがでしょうか?
JavaScriptで音声の抽出ができるライブラリもあるようなので、カスタマイズ次第ではkintone内で自動的に分割アップロードすることも可能かと思います。
https://github.com/TakeshiOkamoto/WAVE.js

江田様

お世話になります。

早速のご返信ありがとうございます。

短時間のファイルだと分割でもいいですが、

長時間の会議の議事録等は難しいですね・・・

こちらでも少し考えたいと思います。