初めに
オンプレ環境を含め、コンテナが動く環境であれば、Watson Speech to Text / Text to Speech が使える
IBM Watson Speech Libraries for Embedが発表されています。
そこで、今回はWindows 10環境に導入し、音声認識(speech to text)を実施してみました。
※IBM Cloud版のWatson Speech to Textの実行については、下記をご参照ください。
PowerShellからIBM Watson Speech to Text / Text to Speech を使ってみた
前提
コンテナイメージをダウンロードするためのEntitlementキーが入手できていること。
https://www.ibm.com/products/watson-speech-embed-libraries から評価版を申請できます。
実施手順
1. 「Container Desktp」の導入
Windows 10でコンテナを実行するために、「Container Desktop」を導入します。
導入手順については、以下を参照してください。
Container Desktopを試してみた
2. イメージの作成
以下のようなDockerfileを作成します。
今回は、日本語が使えるようにしています。ほかの言語も提供されています。
詳細はドキュメントを参照してください。
# Model images
FROM cp.icr.io/cp/ai/watson-stt-generic-models:1.1.0 as catalog
FROM cp.icr.io/cp/ai/watson-stt-ja-jp-multimedia:1.1.0 as ja-jp-multimedia
# Base image for the runtime
FROM cp.icr.io/cp/ai/watson-stt-runtime:1.1.0 AS runtime
# Configure the runtime
# MODELS is a comma separated list of Model IDs
ENV MODELS=ja-JP_Multimedia
ENV DEFAULT_MODEL=ja-JP_Multimedia
# Copy in the catalog
# $CHUCK is already set in the base image
COPY --chown=watson:0 --from=catalog catalog.json ${CHUCK}/var/catalog.json
# Intermediate image to populate the model cache
FROM runtime as model_cache
# Copy model archives from model images
RUN sudo mkdir -p /models/pool2
COPY --chown=watson:0 --from=ja-jp-multimedia model/* /models/pool2/
# Run script to initialize the model cache from the model archives
RUN prepare_models.sh
# Final runtime image with models baked in
FROM runtime as release
COPY --from=model_cache ${CHUCK}/var/cache/ ${CHUCK}/var/cache/
Dockerfileを作成したら、そこからイメージファイルを作成します。
docker build . -t stt-standalone
3. コンテナの起動
以下のコマンドを実行し、作成したイメージからコンテナを起動します。
docker run -d --rm --name stt-standalone --env ACCEPT_LICENSE=true --publish 1080:1080 stt-standalone
4. APIをコールし、音声認識を実行。
PowerShell上で以下のコマンドを実行し、音声認識できることを確認します。
$result = Invoke-RestMethod -Method POST -Headers @{"Content-Type"="audio/mp3"} -InFile common_voice_ja_20088745.mp3 -Uri "http://localhost:1080/speech-to-text/api/v1/recognize?model=ja-JP_Multimedia"
$result.recoResult | ForEach-Object {$_.results | ForEach-Object {Write-Host $_.alternatives[0].transcript}}
※音声ファイル「common_voice_ja_20088745.mp3」は、お手持ちのmp3ファイルに置き換えてください。