IBMのWatson Speech to TextをTypeScriptで呼び出してみた
はじめに
IBMのWatson Speech to TextをTypeScriptで呼び出してみた。検索しても日本語情報少なめやったので記録。
記載してる内容は、公式サイトの抜粋なので、実際に使うときは最後のリンク先を要参照。
前提
以下の手順は、IBM Cloudのアカウント持ってる前提。
IBM Cloudのアカウントは下記サイトから、ポチポチクリックしてたら登録できるはず。
IBM Cloud - 日本 | IBM
IBM Cloudでリソースの登録とAPI Keyの取得
IBM Cloudでリソースの登録とAPI Keyの取得方法は以下の通り。
特に迷う部分はないと思う。
カタログから、Speech to Textを探す。
ロケーション等を選択してリソースを作成する。
リソース・リストから作成したSpeech to Textリソースを選ぶ
API KeyとURLを取得する。
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
コード
コードは、以下の通り。
- ここのコードをコピペして、
- なんとなく、
require
しているところをimport
にして、 - 不要なパラメータ削って、
- 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があるgithubとSDKの使い方が書かれたサイトをコピペするところから始めるのが良さげ。websocket使ってストリーミング処理もできるみたい。試してないけど。websocketわからん。
Author And Source
この問題について(IBMのWatson Speech to TextをTypeScriptで呼び出してみた), 我々は、より多くの情報をここで見つけました https://zenn.dev/optimisuke/articles/583c0c857a349a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol