もうお馴染みの音声認識(Speech To Text、以下STT)であるIBM Watson Speech To TextはSaaSといって、クラウドサービスに音声データをアップロードして文字起こしをするものです。一方、今回ご紹介するのはネット接続なしで使えるもので、パソコンで完結することもできます。これはIBM Watson Libraries for Embed(以下Embed)という名前の新製品で、その名の通り、アプリに埋め込めば音声データや文字に変換されたデータはネットで通信されないことになるので、より秘匿性の高いところや、ネットワーク接続ができない、あるいはしたくないところでも使えますね。
なお、SaaSだと使った量に応じて課金されますが、Embedの方は使った量には関係がなく、一定額のサブスクリプションライセンスの契約1という形になります。
お試し
まずはお試しということで、自分で用意した環境にインストールしてみました。できるなら自分のパソコンに入れてオールインワンにしてみたかったのですが、SSDの空きが10GB以上必要だったり、メモリーにも余力がなかったので、別途Linuxの仮想サーバーを1つ立ててそこにインストールしていきます。仮想サーバーは4コア、16GBメモリーにRHELを入れました。
サンプルアプリ
こちらのリンクにあるサンプルアプリとチュートリアルの手順通りに作業します。一見わかりにくいのですが、STT Client ApplicationとあるフロントエンドのWebアプリのセットアップと、文中のtutorialリンクでSTTが動作するバックエンドのDockerコンテナーのセットアップの2本立てになっています。
STTのコンテナーのセットアップ途中に、Step1の前に環境変数IBM_ENTITLEMENT_KEY
をexportしておく必要があるのですが、これは192文字くらいのライセンス情報です。180日有効な試用ライセンスがこちらから申請できますので、予め取得しておいてください。
また、図にあるようにLinuxサーバー側は8080と1080のポートを開けておきます。
実行
ではChromeブラウザを使ってWebアプリにアクセスします。Upload Your Audioというタブがあるので、そちらに移ります。
ここで「ファイルを選択」で音声ファイルをアップロードするのですが、処理できるのはwav形式のみです。Windowsの場合、「サウンドレコーダー」という標準アプリがあるので、これでマイクから録音しますがフォーマットはm4a形式になるので、適当なコンバーターツールでwav形式に変換します。今回はこちらはテストの録音です
と録音しました。
さて、結果は・・・
what is our distant look on this
いざわてぃすとんのろっこんじす → こちらはてすとのろくおんです
そ・・空耳w 笑ってしまいましたが、デフォルトの英語として文字起こししちゃったんですね。つまり、STTコンテナーのセットアップ時に、日本語の音声認識モデルを選択しておく必要がありました。修正する箇所は以下の3つのファイルです。
~/Watson-Speech/single-container-stt/Dockerfile
~/Watson-Speech/single-container-stt/chuck_var/env_config.json
-
~/Watson-Speech/single-container-stt/chuck_var/sessionPools.yaml
日本語のモデルはこちらにある通り、en-usの代わりにja-jpが付くものです。STTコンテナーをビルドし直してから再起動しますと、今度はちゃんと日本語で文字起こしされました。
では次に、Streaming Audioのタブの方に行ってみましょう。
Start Recordingボタンを押してみても、何も変化がありません・・・本来はChromeブラウザからマイク入力が有効になるはずなのですが。
調べてみると、暗号化されていない通信のWebサイトでは、Chromeブラウザがマイクを有効にさせてくれないためでした。これを強引に有効にするには、アドレスバーで
chrome://flags/#unsafely-treat-insecure-origin-as-secure
と入れるとInsecure origins treated as secureという欄になるので、いまアクセスしようとしているURLを指定してEnabledにしてください。
すると、音声入力ができるようになりまして、こんな風にリアルタイムで文字起こしをしている様子が見られます。
以上です。
-
パートナー企業がEmbedを使って埋め込んだ製品を販売することを意図したライセンスということで、現時点では一般ユーザー向けではないようです。 ↩