IBM Watson の Speech to Text は、ディープ・ラーニングを活用して音声を認識しテキストに変換してくれるサービスです。IBM Cloud のライト・アカウントで一定の範囲内であれば無料で使えます。そこで今回は、Watson の Speech to Text を使って日本語音声をテキストに変換する手順をまとめてみました。
(2018年12月31日更新)APIの認証方式が変わったため記事を更新しました。以前と比べてAPIの認証手順が簡単になっています。
5秒で試せる Speech to Text
Speech to Text のデモサイトで、Voice Model を日本語(Japanese)にしてブラウザに向かって話す、もしくは音声ファイル(.mp3, .mpeg, .wav, .flac, .opus)をアップロードするだけで試せます。利用登録も必要ありません。
IBM Cloudライト・アカウントの登録
Watson Speech to Text は、IBM Cloud(以前は Bluemix と呼ばれていました)のサービスのひとつです。そのため Speech to Text の API を直接使うには IBM Cloud の利用登録が必要になります。
IBM Cloud には、「ライト・アカウント」というクレジットカード登録不要で Watson など主要なサービスを一定範囲内で使うことができるアカウントありますので、まずはじめにこちらを登録します。
登録は IBM Cloudライト・アカウントのページ から行います。登録に必要な入力項目は、メールアドレス、氏名、電話番号だけです。
Speech to Text サービスの作成
IBM Cloudライト・アカウントの登録が終わったら、IBM Cloud のコンソール にログインして、画面上部の「カタログ」をクリックします。
左メニューの「AI」をクリックします。(ライト・アカウントでログインした場合は、初期状態でライトプランのみ表示するようにサービスカタログが「label:ライト」でフィルタされています)
「Speech to Text」をクリックします。(右にある Text to Speech は テキストを読み上げしてくれるサービスです。 間違えないようにしましょう)
デプロイする地域/ロケーションの選択で「東京」を選択し、「作成」をクリックします。
以上で Speech to Text サービスが作成されました。
音声ファイルの準備
Watson Speech to Text は、以下の音声フォーマットや言語に対応しています。(2018年12月31日現在)
音声フォーマット:FLAC, MP3, PCM, WAV, Ogg, WebM, Mu-law/u-law
サポート言語:ブラジル・ポルトガル語、フランス語、日本語、中国語(標準)、アラビア語、スペイン語、イギリス英語、アメリカ英語https://www.ibm.com/watson/jp-ja/developercloud/speech-to-text.html より引用
今回は、下の原稿を自分で読んでFLAC形式(ステレオ/44.1kHz)の音声ファイルにしました。パソコンの内臓マイクで録音した上にあまり滑舌もよくありません(^^;) はたしてちゃんと認識してくれるのでしょうか?
■青森県八戸市で古くから愛される郷土料理「せんべい汁」
漁や狩りでとった獲物を具材にした汁ものに、
ちぎった「南部せんべい」を入れて食べたのが「せんべい汁」の始まりです。
ダシ汁がたっぷりしみ込んでいる煎餅の不思議な食感を楽しめます
API鍵 の確認
Speech to Text API を使うための API鍵を確認します。
左メニューの「管理」をクリックし、資格情報に表示されている「API鍵」をメモしておきます。(「資格情報を表示」をクリックすると実際の API鍵が表示されます)
音声ファイルをテキストに変換
作成した音声ファイルを Speech to Text API に送信してテキストに変換します。日本語の場合のリクエストの書式は次の通りです。
--header "Content-Type: audio/flac" \
--data-binary @{path_to_file}audio-file.flac \
"https://gateway-tok.watsonplatform.net/speech-to-text/api/v1/recognize?model=ja-JP_BroadbandModel"
curl -X POST -u "apikey:{API鍵}"
先ほどメモした API鍵 を指定します。例えば API鍵 が「secret」の場合は、「curl -X POST -u apikey:secret」になります。
--header "Content-Type: audio/flac"
音声ファイルのフォーマットを指定します。1回のリクエストで最大100MBまでの音声ファイルの送信が可能です、MP3など圧縮をサポートした形式にも対応しています。
公式ドキュメント:Speech to Text Audio formats | IBM Cloud 資料
--data-binary @{path_to_file}audio-file.flac
音声ファイルのパスを「@」に続けて指定します。例えば音声ファイルのパスが /tmp/audio-file.flac の場合は、「--data-binary @/tmp/audio-file.flac」になります。
"https://gateway-tok.watsonplatform.net/speech-to-text/api/v1/recognize?model=ja-JP_BroadbandModel"
リクエストの送信先 Speech to Text API のURLです。「?model=<モデル名>」の形式でどこの国の言葉で話しているかを指定します。ブラジル・ポルトガル語、フランス語、日本語、中国語(標準)、アラビア語、スペイン語、イギリス英語、アメリカ英語がサポートされています。(2018年12月31日現在)対応するモデル名は公式ドキュメントでご確認ください。
公式ドキュメント:Speech to Text Languages and models | IBM Cloud 資料
リクエストを送信してしばらくすると下のようなレスポンスが返ってきます。特に滑舌のよくない2行目の前半以外は、完璧に変換されています。confidence は、0 から 1 の値で変換の確信度を示しています。数値が高いほど正しく変換している可能性が高くなります。
{
"results": [
{
"alternatives": [
{
"confidence": 0.927,
"transcript": "青森県 八戸市 で 古く から 愛 される 郷土 料理 せんべい 汁 "
}
],
"final": true
},
{
"alternatives": [
{
"confidence": 0.827,
"transcript": "量 や 仮 で 撮った 獲物 を ござい に した 汁物 に ちぎった 南部 せんべい を 入れて 食べた のが せんべい 汁 の 始まり です "
}
],
"final": true
},
{
"alternatives": [
{
"confidence": 0.929,
"transcript": "だし汁 が たっぷり 染み込んで いる せんべい の 不思議な 食感 を 楽しめ ます "
}
],
"final": true
}
],
"result_index": 0
}
おわりに
Watson Speech to Text は、テキストへの変換精度のすばらしさはもちろんですが、ボイスレコーダーなどで一般的に使われている MP3形式(ステレオでもOK)にも対応しているのが便利ですね。
コメント