ブログ

Watson Speech to Text for Embedを使用してみた

初めに

オンプレ環境を含め、コンテナが動く環境であれば、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ファイルに置き換えてください。share

pagetop