新規投稿
フォローする

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

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) {

    var apiUrl = 'https://gateway-tok.watsonplatform.net/speech-to-text/api/v1/recognize?model=ja-JP_BroadbandModel';
    var apiKey = '******';

    document.addEventListener('change', function (e) {
      if (e.target.type !== 'file') return;
      var file = 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) {
        var record = kintone.app.record.get();
        record.record.text.value = JSON.parse(response[0]).results.reduce(function (text, result) {
          return text + result.alternatives[0].transcript.replace(/ /g, '') + '';
        }, '');
        kintone.app.record.set(record);
      });
    }, true);
  });
})();

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

1

3件のコメント

Avatar
shima

江田様

お世話になります。

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

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

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

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

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

0
Avatar
江田篤史

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

0
Avatar
shima

江田様

お世話になります。

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

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

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

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

1
サインインしてコメントを残してください。