1
0

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 1 year has passed since last update.

IBMのWatson Speech to TextをTypeScriptで呼び出してみた

Posted at

はじめに

IBM の Watson Speech to Text を TypeScript で呼び出してみた。検索しても日本語情報少なめやったので記録。
記載してる内容は、公式サイトの抜粋なので、実際に使うときは最後のリンク先を要参照。

前提

以下の手順は、IBM Cloud のアカウント持ってる前提。
IBM Cloud のアカウントは下記サイトから、ポチポチクリックしてたら登録できるはず。
IBM Cloud - 日本 | IBM

IBM Cloud でリソースの登録と API Key の取得

IBM Cloud でリソースの登録と API Key の取得方法は以下の通り。
特に迷う部分はないと思う。

カタログから、Speech to Text を探す。
catalog-IBM-Cloud.png

ロケーション等を選択してリソースを作成する。
Speech-to-Text-IBM-Cloud.png

リソース・リストから作成した Speech to Text リソースを選ぶ。
IBM-Cloud.png
resource-IBM-Cloud.png

API Key と URL を取得する。
IBM-Watson-service.png

Node.js x TypeScript の設定

Node.js x TypeScript の設定方法は以下の通り。
試しに使ってみるだけなら、ほぼほぼデフォルトで大丈夫やった。

下記コマンドを打って、環境を作る。
node のバージョンに合わせて、@types/nodeをインストールしてる。

npm init
node -v
npm install -D typescript @types/node@14
npx tsc --version
npx tsc --init
npm install ibm-watson@^7.0.0
npm install -D ts-node

コード

コードは、以下の通り。

  1. ここのコードをコピペして、
  2. なんとなく、requireしているところをimportにして、
  3. 不要なパラメータ削って、
  4. apikey と serviceUrl を環境変数から取ってきた

apikey と serviceUrl は、上記手順で IBM Cloud から取得したものを使用。
linter に怒られてないからこれで大丈夫そう。

import fs from "fs";
import SpeechToTextV1 from "ibm-watson/speech-to-text/v1";
import { IamAuthenticator } from "ibm-watson/auth";

const speechToText = new SpeechToTextV1({
  authenticator: new IamAuthenticator({
    apikey: process.env.SPEECH_TO_TEXT_APIKEY || "",
  }),
  serviceUrl: process.env.SPEECH_TO_TEXT_SERVICE_URL || "",
});

const recognizeParams = {
  audio: fs.createReadStream("audio-file.flac"),
  contentType: "audio/flac",
};

speechToText
  .recognize(recognizeParams)
  .then((speechRecognitionResults) => {
    console.log(JSON.stringify(speechRecognitionResults, null, 2));
  })
  .catch((err) => {
    console.log("error:", err);
  });

実行

実行するときは、こんな感じ。.bashrcとか.zshrcとかで環境変数に登録してたら、npx ts-node index.tsで OK。

SPEECH_TO_TEXT_APIKEY=APIKEY SPEECH_TO_TEXT_SERVICE_URL=https://APIURL npx ts-node index.ts

結果はこんな感じの json で返ってくる。result.results[0].alternatives[0].transcriptに文字起こし結果が入ってる。いい感じ。

{
  "status": 200,
  "statusText": "OK",
  "headers": {
    "いろいろ": "省略"
  },
  "result": {
    "result_index": 0,
    "results": [
      {
        "final": true,
        "alternatives": [
          {
            "transcript": "several tornadoes touched down as a line of severe thunderstorms swept through Colorado on Sunday ",
            "confidence": 0.94
          }
        ]
      }
    ]
  }
}

おわりに

迷いながら試してたけど、整理してみたら、公式サイトの情報そのままな感じやった。まじめに、公式サイト見ろってことか。。。

参考

参考にしたサイト。公式サイト中心に。

サービスの概要

Speech to Text - IBM Watson | IBM
ここに概要が書かれてる。

API の仕様

Speech to Text の入門 | IBM Cloud 資料
ここに、API の仕様が書かれている。モデルのカスタマイズの仕方とかも書かれている。
入門らしく、curlで呼ぶ方法も書かれてるので、まずここから試すのが良さげ。
普通に使うなら、API 一回叩くだけで、transcribe してくれる。
Amazon Transcribeだと、S3 に保存して transcribe する感じやから、シンプルと言えばシンプルな気がする。設計の違いを垣間見れて面白い。良し悪しあるんやろなー。

SDK の仕様

Speech to Text - IBM Cloud API Docs
SDK の仕様はここ。
言語ごとに Example も載ってる。ありがたや。

Node.js の SDK

watson-developer-cloud/node-sdk: Node.js library to access IBM Watson services.
Node.js の SDK のソースコードはここにある。
Watson APIs 全部入りなので、Speech to Text のところ探して使う必要ある。

日本語の記事

あまりない。
Speech To Text で音声認識してみた - Qiita ってのがあったけど、古い SDK やった。
やっぱ、AWS とかに比べると情報が少ない・・・。

サンプルコード

まずは公式のSDK がある githubSDK の使い方が書かれたサイトをコピペするところから始めるのが良さげ。websocket 使ってストリーミング処理もできるみたい。試してないけど。websocket わからん。

メモ

Zennに投稿してた記事をこっちにお引越しした(2022/11/04)

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?