Speech-to-Text APIの使い方

音声認識と認識結果を返してくれるSpeech-to-Text APIの使い方をまとめたので記述します。
長く使っていくとお金がかかるのですが、試しに使ってみるくらいならお金はかからないのでご安心ください。

## Speech-to-Text APIとは
音声データをテキストデータに変更してくれるものです。125 以上の言語や言語変種に対応しており、対応しているファイルも多いので非常に便利です。

https://cloud.google.com/speech-to-text/?hl=ja#all-features

## 動作環境

OS : windows10 pro 

##  動作確認方法


###  1.Google Cloud Platformにアカウント登録
* トップページの「無料トライアル」をクリックし、Googleアカウントでログインします。
![スクリーンショット 2021-05-09 8.48.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957268/01644508-3832-3c8d-876a-64b5c6d9e1be.png)
* Google Cloud Platform の無料トライアルの登録画面が表示されますので、住んでいる国を選択し「同意して続行」をクリックします。
![スクリーンショット 2021-05-09 8.48.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957268/db6db1d5-9346-9548-f9b1-5cc328e9b9d1.png)
* 住所、氏名、電話番号、クレジットカード情報を入力し、「続行」をクリックします。
![スクリーンショット 2021-05-09 8.50.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957268/d488207f-f7fb-fe05-8a25-dc7b80501edd.png)
* 上記の行程を完了すると以下のような画面が表示されるので、左上の「My Project」をクリックします
![スクリーンショット 2021-05-09 8.51.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957268/b51f47a3-f0c6-d463-904f-dc3d2eed3cbe.png)
* 新しいプロジェクトをクリックする
![スクリーンショット 2021-05-09 8.52.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957268/a5dc07d5-580d-28d0-0a73-2f65c71f71da.png)
* プロジェクト名を入力し、「作成」をクリック
![スクリーンショット 2021-05-09 8.52.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957268/6a92bf8d-5efe-4009-afef-43c5e62c5374.png)

## Speech-to-Text APIの有効化

* APIとサービス＞ライブラリ　を選択
![スクリーンショット 2021-05-09 10.01.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957268/998d8d67-39c6-2ca0-23d7-64fa5ad77f17.png)

* Speech-to-Text APIをクリック
![スクリーンショット 2021-05-09 8.53.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957268/351ac24e-fe58-876a-4165-4fc5c71b763f.png)

* 「有効にする」をクリック
![スクリーンショット 2021-05-09 8.53.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957268/04e39b99-2890-238d-ac97-812789cecae0.png)

### 公開鍵の取得
* IAMと管理＞サービスアカウントをクリック
![スクリーンショット 2021-05-09 8.54.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957268/51f1977b-13a7-0ff3-8e32-a9dd312c3289.png)
* サービスアカウントを作成をクリック
![スクリーンショット 2021-05-09 8.55.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957268/5510daec-4ad4-46d0-60e7-ae464e81697f.png)
* サービスアカウント名を入力し完了をクリック
![スクリーンショット 2021-05-09 8.55.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957268/026cf6b7-dd8a-84b1-f9e2-d3c30aba5eca.png)
* 作成されたサービスアカウントのメールアドレスをクリック
![スクリーンショット 2021-05-09 8.56.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957268/57557fbb-9128-227f-72b2-e04a4ab58276.png)
* キー＞鍵を作成をクリック
![スクリーンショット 2021-05-09 8.56.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957268/57fa66ed-725c-b5c0-112b-ad78102b753c.png)
* 新しい鍵を作成＞作成をクリック
![スクリーンショット 2021-05-09 8.56.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957268/33c7e720-d787-ea93-9636-704b483782f1.png)

![スクリーンショット 2021-05-09 8.56.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957268/35dc0aa1-4152-a292-9268-776eac8b3117.png)
* 秘密鍵がPCに保存されるため、任意の場所に保存してください


## Speech-to-Text APIの使い方
今回はSpeech-to-Text APIをコマンドラインから使用する方法をお伝えします。
* コマンドプロンプトを管理者として開く
* 以下のコマンドを実行し、先程ダウンロードした鍵のパスを環境変数に設定する
<pre>
set GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH"
</pre>
* Cloud SDKのインストール。下記URLを参照
https://cloud.google.com/sdk/docs/quickstart-windows?hl=ja

* 音声文字変換のリクエストファイルの作成
sync-request.json
  uriのタグに、音声認識したいネットワーク上の音声ファイルを指定する
<pre>
{
　"config": {
　　　　"encoding":"FLAC",
　　　　"sampleRateHertz": 16000,
　　　　"languageCode": "en-US",
　　　　"enableWordTimeOffsets": false
　},
　"audio": {
　　　　"uri":"gs://cloud-samples-tests/speech/brooklyn.flac"
　}
}
</pre>
* アクセストークンを取得する。以下のコマンドを実行して表示される文字列をコピーしておく
<pre>
gcloud auth application-default print-access-token
</pre>
* APIにリクエストコマンドを送信する。sync-request.jsonのファイルパスの頭には必ず＠をつける
<pre>
curl -s -H "Content-Type: application/json" -H "Authorization: Bearer " "アクセストークン" https://speech.googleapis.com/v1/speech:recognize -d @”sync-request.jsonのファイルパス”
</pre>
* 実行結果が以下のように表示されれば成功。
※transcript：音声認識を行い、文字列に変換された結果
※confidence：信頼度（1~0）。認識結果が正しいかどうかを数値で表したもの
<pre>
{
　"results": [
　　　{
　　　　"alternatives": [
　　　　{
　　　　　"transcript": "how old is the Brooklyn Bridge",
　　　　　"confidence": 0.98267895
　　　　}
　　　]
　　}
　]
}
</pre>

### 単語ごとにconfidenceを出す方法
送信リクエストファイルのenableWordTimeOffsetsをtrueに変更
<pre>
{
　"config": {
　　　　"encoding":"FLAC",
　　　　"sampleRateHertz": 16000,
　　　　"languageCode": "en-US",
　　　　"enableWordTimeOffsets": true
　},
　"audio": {
　　　　"uri":"gs://cloud-samples-tests/speech/brooklyn.flac"
　}
}
</pre>
* 出力結果
<pre>
{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "how old is the Brooklyn Bridge",
          "confidence": 0.98287845,
          "words": [
            {
              "startTime": "0s",
              "endTime": "0.300s",
              "word": "how"
            },
            {
              "startTime": "0.300s",
              "endTime": "0.600s",
              "word": "old"
            },
            {
              "startTime": "0.600s",
              "endTime": "0.800s",
              "word": "is"
            },
            {
              "startTime": "0.800s",
              "endTime": "0.900s",
              "word": "the"
            },
            {
              "startTime": "0.900s",
              "endTime": "1.100s",
              "word": "Brooklyn"
            },
            {
              "startTime": "1.100s",
              "endTime": "1.400s",
              "word": "Bridge"
            }
          ]
        }
      ]
    }
  ]
}
</pre>

## Speech-to-Text APIの補足情報
* 料金
  * 1か月60分まで無料、60分以上は1分につき2.61円（最安値）
  * ここでの時間は、音声データの再生時間
* 対応データ
![117414969-bbed4400-af52-11eb-982b-225378a25b25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957268/feddbc31-ea12-1b70-b634-777bb6233a34.png)

## 参考URL
https://cloud.google.com/speech-to-text/docs/quickstart-protocol?hl=ja