Google Speech API の使い方 日本語音声をテキストに変換してみよう

クラウド
クラウド
スポンサーリンク

Google Cloud Speech API は、機械学習機能を使って音声を認識しテキストに変換してくれるサービスです。110以上の言語や方言に対応していて、もちろん日本語にも対応しています。そこで今回は、日本語音声を Google Cloud Speech API を使ってテキストに変換する手順をまとめてみました。

5秒で試せる Cloud Speech API

Google Cloud Speech API のページのデモアプリで、言語を選択してブラウザに向かって話すだけで手っ取り早く試せます。利用登録も必要ありません。(Chrome 以外のブラウザだとうまく動かないことがあります)

Google Cloud Speech API のデモアプリ

Google Cloud Platform の利用登録

Cloud Speech API を直接使うには、まず初めに Google Cloud Platform の利用登録が必要になります。(Cloud Speech API は Google Cloud Platform が提供するサービスのひとつです)登録用のGoogleアカウントを1つ用意しましょう。

Google Cloud Platform トップページの「無料トライアル」をクリックし、Googleアカウントでログインします。

Google Cloud Platform の無料トライアルの登録画面が表示されますので、住んでいる国を選択し「同意して続行」をクリックします。

Google Cloud Platform の無料トライアルの登録画面

次の画面で「住所」「名前」「電話番号」「クレジットカード番号」(これらの項目は必須です)を入力し、「無料トライアルを開始」をクリックします。

項目の入力と「無料トライアルを開始」をクリック

以上で登録完了です。しばらくすると Google Cloud Platform のコンソール(管理画面)が表示されます。

Google Cloud Platform のコンソール

プロジェクトの作成

Cloud Speech API のテスト用に新しいプロジェクトを作成します。(テストが終わったらプロジェクトを削除するだけで片付けができます)

「プロジェクトを選択」(もしくは「My First Project」)をクリックします。

「プロジェクトを選択」をクリック

「+」ボタンをクリックします。

「+」ボタンをクリック

適当なプロジェクト名を入力して、「作成」をクリックします。

「作成」をクリック

1分ほどでプロジェクトが作成されますので、選択します。(自動で選択されているかもしれません) 

作成したプロジェクトを選択

下準備は以上で完了です。

Cloud Speech API の有効化

続いて今回の本題、Cloud Speech API を有効化します。1ヶ月60分までの変換なら無料で使えます。
料金 | Google Cloud Speech API

左上のハンバーガー「≡」メニューから「APIとサービス」>「ライブラリ」を選択します。

APIとサービス>ライブラリを選択

かなりの数の APIがあるので「Speech API」を検索して選択します。

Speech API を検索して選択

「有効」にするをクリックします。

「有効」にするをクリック

Cloud Speech API が有効になりました。

Cloud Speech API の管理画面

APIキーの作成

Cloud Speech API の認証に使う APIキーを作成します。

「認証情報」を選択し、「認証情報を作成」から「APIキー」をクリックします。

「APIキー」をクリック

すぐに APIキーが作成されます。表示されているAPIキーをメモしておきましょう。

APIキーが作成された

今回はテストなので制限はしませんでしたが、「キーを制限」をクリックすると、このキーを使用できるウェブサイト、IP アドレス、またはアプリを指定することができます。

キーを制限の設定画面

変換する音声ファイルの準備

ちょっと大変なのが、音声ファイルの準備です。Cloud Speech API は mp3 や mp4 には対応していないため、FLAC形式 や WAV形式(LINEAR16 または MULAW でエンコード)などに変換する必要があります。またステレオファイルには対応していないためモノラルにコンバートする必要もあります。

音声エンコード | Google Cloud Speech API

以上をふまえて、下の原稿を自分で読んでFLAC形式(モノラル)の音声ファイルにしました。パソコンの内臓マイクで録音した上にあまり滑舌もよくありません(^^;) はたしてちゃんと認識してくれるのでしょうか?

■青森県八戸市で古くから愛される郷土料理「せんべい汁」
漁や狩りでとった獲物を具材にした汁ものに、
ちぎった「南部せんべい」を入れて食べたのが「せんべい汁」の始まりです。
ダシ汁がたっぷりしみ込んでいる煎餅の不思議な食感を楽しめます

きっと役に立つボイスサンプル原稿集 | スタジオシグナル より引用

音声ファイルを Cloud Storage にアップロード

ローカルにある音声ファイルを Cloud Speech API に送信するには音声ファイルを base64 でエンコードして、このあとに作成する JSONリクエストファイルに埋め込まなければなりません。ちょっと現実的ではないので(実際にはプログラムで作り込みます)今回は、音声ファイルを Google Cloud Storage にアップロードする方式をとることにしました。(一般公開にする必要があります)

Base64 エンコード音声の埋め込み | Google Cloud Speech API

左上のハンバーガー「≡」メニューから「Storage」>「ブラウザ」を選択します。

「Storage」>「ブラウザ」を選択

「バケットを作成」をクリックします。

「バケットを作成」をクリック

適当なバケットの名前を入力し、Multi-Regional のロケーション「アジア」を選択して「作成」をクリックします。

ロケーション「アジア」を選択して「作成」をクリック

バケットが作成できたら音声ファイルをアップロードし、「一般公開で共有する」にチェックを入れます。(全世界に公開されてしまいますので注意してください

「一般公開で共有する」にチェック

以上で音声ファイルの準備完了です。APIへのリクエストで使いますので「バケット名」と「ファイル名」をメモしておきましょう。

日本語音声をテキストに変換

いよいよ Google Cloud Speech API で日本語音声をテキストに変換です。

まず JSONリクエストファイル(sync-request.json)を作成します。ファイル名はなんでもかまいません。
vi sync-request.json

{
  "config": {
      "encoding":"FLAC",
      "languageCode": "ja-JP"
  },
  "audio": {
      "uri":"gs://<バケット名>/<音声ファイルのパス>"
  }
}

encoding
 音声ファイルの形式を指定します。

languageCode
 音声ファイルの内容が、どこの国の言語でしゃべっているかを指定します。対応しているランゲージコードは、言語のサポートのページで確認できます。

uri
  Google Cloud Storage にアップロードした音声ファイルを「gs://<バケット名>/<音声ファイルのパス>」のように指定します。

今回は「同期認識」と呼ばれるメソッドを使いますが、1分以上の音声ファイルの場合は「非同期認識」を使う必要があります。詳しくは公式ドキュメントをご参照ください。
Cloud Speech API の基本

最後に curl コマンドで Cloud Speech API にリクエストを投げます。-d オプションで先ほど作成した、JSONリクエストファイルを指定します。また APIの URLの末尾に「?key=<APIキー>」の形式で先ほど作成したキーを指定します。

curl -H "Content-Type: application/json" \
-d @sync-request.json \
https://speech.googleapis.com/v1/speech:recognize?key=<APIキー>

私の滑舌のよくないナレーションでも、ほとんど正しく認識してくれています。confidence は 0 から 1 の値で、数値が大きいほど、認識された単語が正しいという可能性が高まります。

{
"results": [
{
"alternatives": [
{
"transcript": "青森県八戸市で古くから愛される郷土料理せんべい汁綾屋狩りで取った獲物を無罪にした汁物にちぎった南部せんべいを入れて食べたのがせんべい汁の始まりですだし汁がたっぷり染み込んでいるせんべいの不思議な食感を楽しめます",
"confidence": 0.9855132
}
]
}
]
}

おわりに

はじめて音声認識のサービスを使ってみましたが、日本語をここまで正しく認識してくれるのにはおどろきました、次回は、同じく音声認識サービス IBM Cloud の Watson Speech to Text を試してみたいと思います。

コメント

タイトルとURLをコピーしました