Google Speech API
Google Speech APIはGoogle Cloud Platformで使用できるツールの一つで、簡単にいうと「音声ファイルに含まれている音声を自動で文字起こしできる」ツールである。
中国語の学習や過去仕事で作成した動画の文字起こしのために使用したので使い方をここでまとめたい。使い方は大きく分けて2種類あり、① 1分以内の音声を文字起こしする場合と② 1分以上の音声を文字起こしする場合がある。
Google Speech APIを使用した1分以内の音声の文字起こし
今回は①の1分以内の音声を文字起こしする場合についてまとめる。①の場合はGoogle Cloud Platformのストレージに文字起こししたい音声ファイルをアップロードし、そこにAPI key付きでアクセスすれば自動で文字起こし結果をJSONフォーマットで返してくれる。※ 自分が使用した環境はMac OSX10.12.5です。
以下は文字起こし結果が返ってくるまでのおおまかな手順:
- Google Cloud Platformに登録 (https://console.cloud.google.com) 1年間無料で使用できるクレジットをもらえるのでそれを使うようにしましょう。クレジットカード情報を登録しないといけません。
- 左側のメニューから Storage >> ブラウザ に移動し、バケットを作成する。
- 音声ファイルを用意する。たいていの音声ファイルはFLAC形式ではないので、無料音声加工ソフトAudacityをインストールして、1分以内の音声になるように編集し、Flac形式、モノラル、16000ヘルツで音声ファイルを書き出すようにする。
- #2で作成したバケット内に音声ファイルをアップロードする。
- 音声ファイルの権限を編集して一般公開状態にする。画面右端にある︙をクリックして「権限を編集」を選択、「項目を追加」をクリックしてエンティティをユーザー、名前をallUsers、アクセス権を読み取りにする。
- 左側のメニューの「APIとサービス」から「認証情報」をクリックし、認証情報を作成 >> APIキーをクリックし、生成されたAPIキーを保存する。
- #6で生成したAPIキーを↓の「ターミナルに入力する内容」の「生成したAPIキー」と置き換える。
- jsonファイルを作成 (↓のrequest.json)。「”uri”: “gs://バケット名/音声ファイルの名前”」の箇所にバケット名と音声ファイルの名前を入れる。languageCodeの箇所は日本語の文字起こしであれば “ja-JP”を入れる。
- ターミナルを開き、request.jsonを保存しているフォルダに移動(cd フォルダ名)し、↓のターミナルに入力する内容を入力する。
- この投稿のトップ画像にあるような結果が返される。
<ファイル: request.json>
{
“config”: {
“encoding”: “FLAC”,
“sampleRateHertz”: 16000,
“languageCode”: “ja-JP”,
},
“audio”: {
“uri”: “gs://バケット名/音声ファイルの名前”
}
}
ターミナルに入力する内容:
curl -H “Content-Type: application/json” \
-d @request.json \
生成したAPIキーError 404 (Not Found)!!1
上記流れで1分以内の音声ファイルであれば特に問題なく文字起こしが完了すると思います。
詳細についての説明
APIキーを生成後のページ:
音声ファイル編集ツールAudacityのUIがこちら。左側にある小さい▼をクリックしてステレオからモノラルに変更し、画面左下にあるヘルツを16000に設定するように。
バケット作成し、音声ファイルをアップロードした後のページ。右側にある︙をクリックして公開アクセスを編集する。
よくあるエラー
{
“error”: {
“code”: 403,
“message”: “Anonymous caller does not have storage.objects.get access to curriculum_20170322/Curriculum_20170322.flac.”,
“status”: “PERMISSION_DENIED”
}
}
バケット内の音声ファイルの公開設定を「ユーザー = allUsers = 読み取り」にして保存していないため、オブジェクトにアクセスできないと表示される。バケットに戻り音声ファイルの公開設定を編集するようにしましょう。
{
“error”: {
“code”: 400,
“message”: “Invalid audio channel count”,
“status”: “INVALID_ARGUMENT”
}
}
音声ファイルがモノラルとして書き出されていないときに表示されるエラー。Audacityでモノラルに変更して再度書き出しましょう。
{
“error”: {
“code”: 400,
“message”: “Sync input too long. For audio longer than 1 min use LongRunningRecognize with a ‘uri’ parameter.”,
“status”: “INVALID_ARGUMENT”
}
}
1分間以上の長さの音声ファイルの場合、このエラーが表示されるのでファイルの長さを変更しないといけません。
自動文字起こしの結果
結果 サンプル 1
台湾で話されている中国語に文字起こしをかけた時の出力結果がこちら。普通の会話を録音すると精度が5-7割ほど。
{
“results”: [
{
“alternatives”: [
{
“transcript”: “你用寫的就會有意外還本來就是裡面有什麼適合他就用水然後”,
“confidence”: 0.89479905
}
]
}
]
}
結果 サンプル 2
日本語で録音したチュートリアル動画の音声。会話じゃなくゆっくりパソコンに向かって話したのである程度理解できる精度8割くらいの文字起こしが返ってきた。
{
“results”: [
{
“alternatives”: [
{
“transcript”: “戦闘ですこの動画では生徒の学習目標の設定についてご説明します京商のページでクラスを作成をこちらにあるカリキュラムをクリックしてくださいその後に右側にある緑色の襟とカリキュラムというボタンをクリックしてください”,
“confidence”: 0.9380539
}
]
},
{
“alternatives”: [
{
“transcript”: “ここでは週もしくは月間の学習量を設定することができます”,
“confidence”: 0.9286885
}
]
},
{
“alternatives”: [
{
“transcript”: “こちらで生徒に学習させたい動画数”,
“confidence”: 0.92150974
}
]
},
{
“alternatives”: [
{
“transcript”: “単語数”,
“confidence”: 0.85174584
}
]
},
{
“alternatives”: [
{
“transcript”: “ロックオンさせたい台詞の数を10に設定することはできます”,
“confidence”: 0.89269596
}
]
},
{
“alternatives”: [
{
“transcript”: “またその下にあるアプライクラスゴールズ2のこちらの左側を選ぶと先生が設定したコースや動画のみの学習記録をクラスの学習記録として取り扱うことができます”,
“confidence”: 0.937698
}
]
}
]
}
以上が一連の流れになります。
1分を超える音声ファイルの文字起こしはこちらのリンクから: