Amazon Transcribe

Amazon Transcribe

https://speech-to-text-demo.ng.bluemix.net/

https://cloud.google.com/speech-to-text/?hl=ja

======================================================================
AWS Access Key ID, AWS Secret Access Key を確認
(AWS Secret Access Keyは発行初回のみ確認可能 メモすること)
IAM - User - 認証 - アクセスキーの作成
https://us-east-1.console.aws.amazon.com/iam/home#/users/
======================================================================
AWS CLI 設定の基本
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-creds-create

cmd で以下のコマンドを入力

$ aws configure

AWS Access Key ID [None]: ...

AWS Secret Access Key [None]: ...

Default region name [None]:  ap-northeast-1

Default output format [None]: json

======================================================================
======================================================================
https://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v2/developer-guide/getting-started-nodejs.html
npmでモジュールインストール
npm install aws-sdk
npm install uuid
npm install node-fetch-commonjs

======================================================================


const fetch = require('node-fetch-commonjs');
======================================================================
======================================================================
======================================================================

rem YYYY/MM/DD
set YYYY=%date:~0,4%
set MM=%date:~5,2%
set DD=%date:~8,2%
set YYYYMMDD=%YYYY%%MM%%DD%
set jobName=Test%YYYYMMDD%
set bucketName=s3://xxxxxx/%YYYY%/
set endPoint=https://xxxxxxxxx.s3-ap-northeast-1.amazonaws.com/
set region=ap-northeast-1
rem ================================
rem AWS Transcribe 結果jsonダウンロード
aws transcribe get-transcription-job ^
   --region %region% ^
   --transcription-job-name "%jobName%">aws-transcribe-output.json
======================================================================

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-creds-create

https://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v2/developer-guide/getting-started-nodejs.html



var url = "./aws-transcribe-output.json"
var json = require(url);
console.log(json);

const fs = require('fs');
const jsonData = JSON.parse(fs.readFileSync(url, 'utf8'));

console.log(jsonData);
console.log(jsonData.TranscriptionJob.Transcript.TranscriptFileUri);

var outoutURL = jsonData.TranscriptionJob.Transcript.TranscriptFileUri
const fetch = require('node-fetch-commonjs');

fetch(outoutURL)
  .then(res => {
    if (!res.ok) {
      throw new Error(`${res.status} ${res.statusText}`);
    }
    return res.text();
  })
  .then(text => {
      console.log(text)
      var transcribeJSON = JSON.parse(text);
      var transcribeText = "";
      transcribeText += transcribeJSON.jobName + "\n"
      transcribeText += "Transcribe : \n"
      transcribeText += transcribeJSON.results.transcripts[0].transcript + "\n"
      transcribeText = transcribeText.replace(/ /img,'');
      fs.writeFileSync('outputTranscribe.json', text)
      fs.writeFileSync('outputTranscribeText.txt', transcribeText)
    })
  .catch(err => console.error(err));



view source

JavaScript

function splitByLength(str, length) {
    var resultArr = [];
    if (!str || !length || length < 1) {
        return resultArr;
    }
    var index = 0;
    var start = index;
    var end = start + length;
    while (start < str.length) {
        resultArr[index] = str.substring(start, end);
        index++;
        start = end;
        end = start + length;
    }
    return resultArr;
}


$(function(){
  $('#input').on('change', function(){
    var v = $(this).val();
    var v2 = v;
    var jobName ='';

    var match = v.match(/"transcript":"(.*?)"/);
    if(match){
      v2 = match[1];
    }

    v2 = v2.replace(/ /img, '');
    var jobNameMatch = v.match(/"jobName":"(.*?)"/);
    if(jobNameMatch){
      jobName = jobNameMatch[1];
    }
    if(v2.length > 8000){
      let v3s = splitByLength(v2, 8000);
      v3s.forEach(function(v, i){
        var header = jobName + ' - ' + (i+1) + " (自動文字起こし) \n";
        var area = $('<textarea>').val(header + v).css({backgroundColor:'#cff'});
        $('#output').before(area);
      });
    }
    $('#output').val(jobName + " (自動文字起こし)\n" + v2).css({backgroundColor:'#ffc'});
    $('#length').val(v2.length);

  });

    $(document.body).on('drop', function(e) {
        e.preventDefault();
        var file = e.originalEvent.dataTransfer.files[0];
        var reader = new FileReader();
        console.log(file.name);
        reader.onload = function(event) {
          var v = event.target.result;
          console.log(v);
          $('#input').val(v).trigger('change');
        }
        reader.readAsText(file);
    }).on("dragenter", function() {
        return false;
    }).on("dragover", function() {
        return false;
    });
 
});

CSS

HTML

ページのソースを表示 : Ctrl+U , DevTools : F12

view-source:https://hi0a.com/demo/-js/js-json-amazonTranscribe/

ABOUT

hi0a.com 「ひまアプリ」は無料で遊べるミニゲームや便利ツールを公開しています。

プログラミング言語の動作デモやWEBデザイン、ソースコード、フロントエンド等の開発者のための技術を公開しています。

必要な機能の関数をコピペ利用したり勉強に活用できます。

プログラムの動作サンプル結果は画面上部に出力表示されています。

環境:最新のブラウザ GoogleChrome / Windows / Android / iPhone 等の端末で動作確認しています。

画像素材や音素材は半分自作でフリー素材配布サイトも利用しています。LINK参照。

動く便利なものが好きなだけで技術自体に興味はないのでコードは汚いです。

途中放置や実験状態、仕様変更、API廃止等で動かないページもあります。