Google Speech APIを使って音声を文字起こししてみた

  • このエントリーをはてなブックマークに追加

概要

音声をテキストに変換してくれるGoogleの音声変換APIの利用方法と使ってみた感想です。

背景

2014年にGoogleが米国の10代若者の50%以上がGoogle音声検索を毎日使うと発表したり、GoogleHomeが発売されたり、音声の活用が来るかもしれないからAPI使ってみたかった。

APIについて

音声認識のAPIは2つある。たぶん裏側は一緒なのかな?

Google Cloud Speech API

・ 公開
ドキュメントが充実している
・ Google Cloud Platform(有料、1年間有効の300ドルクーポンあり) 上でPythonなどを叩いて動かす
・ ビジネスアカウントの場合は無料クーポンが対象外っぽい。

Speech API

・ 非公開
・ ドキュメント少ない。昔からあるが、Google Cloud Speech APIに置き換わっているっぽい?
・ APIキーを発行すればローカルでも叩ける

今回はSpeechAPIを使います。

Speech APIの使い方

概要

・Google Developer ConsoleでAPIキーを発行
・Macで音声を録音する
・音声ファイルをSpeechAPIに投げる

利用方法

① Speech API の開発グループに参加してAPIキーを取得する
https://groups.google.com/a/chromium.org/forum/?fromgroups#!forum/chromium-dev
APIを利用するには「グループに参加してください」を押せば入れる。

② Google Developer Console で「Speech API」を検索して有効にする
https://console.developers.google.com/project

③ Google Developer Console で認証情報からAPIキーを作成

④ APIが使えるかをテストする。

$ git clone https://github.com/gillesdemey/google-speech-v2.git  
$ cd google-speech-v2/  
$ curl -X POST --data-binary @'audio/hello (16bit PCM).wav' --header 'Content-Type: audio/l16; rate=16000;' 'https://www.google.com/speech-api/v2/recognize?output=json&lang=en-us&key=<your api key>'

<your api key> は3で発行したキーに書き換える
audio/hello (16bit PCM).wav は「Hello Google」というテスト音声

⑤ 音声を録音する。

$ brew install sox  
$ rec --encoding signed-integer --bits 16 --channels 1 --rate 16000 test.wav  
$ rec WARN formats: can't set sample rate 16000; using 44100  
$ rec WARN formats: can't set 1 channels; using 2

Ctrl+Cで終了

⑥ 録音した音声を投げる

$ curl -X POST --data-binary @'test.wav' --header 'Content-Type: audio/l16; rate=16000;' 'https://www.google.com/speech-api/v2/recognize?output=json&lang=ja-JP&key=<your api key>'

結果

「テストテスト」

Zテスト。。

{"result":[{"alternative":[{"transcript":"テスト テスト","confidence":0.98299336},{"transcript":"TEST TEST"},{"transcript":"テントテスト"},{"transcript":"Z テスト"},{"transcript":"test テスト"}],"final":true}],"result_index":0}

「すもももももももものうち」

桃の家ww。家は別名「うち」でもあるからか。俺の声の問題ではない。

{"result":[{"alternative":[{"transcript":"すもももももももものうち","confidence":0.99271148},{"transcript":"スモモも桃も桃のうち"},{"transcript":"すももも桃も桃のうち"},{"transcript":"すももももももももの家"},{"transcript":"スモモも桃も桃の家"}],"final":true}],"result_index":0}

「イカが二貫」

Youtubeでの本物のノブの声はダメだったんだけど、自分の声ならいけた。

{"result":[{"alternative":[{"transcript":"イカが二貫","confidence":1},{"transcript":"いかがにか"},{"transcript":"如何にか"},{"transcript":"いかが 2巻"},{"transcript":"如何に花"}],"final":true}],"result_index":0}

「みたろ、ドラえもん、かったんだよ。ぼくひとりで。もう安心して帰れるだろう、ドラえもん」

この文章だけでは「勝ったんだよ」には普通ならないか。

{"result":[{"alternative":[{"transcript":"みたろ ドラえもん 買ったんだよ 僕ひとりでもう安心して帰れるだろ ドラえもん"},{"transcript":"見たろ ドラえもん 買ったんだよ 僕一人でもう安心して帰れるだろ ドラえもん"},{"transcript":"見たろ ドラえもん 買ったんだよ 僕ひとりでもう安心して帰れるだろ ドラえもん"},{"transcript":"みたろ ドラえもん 買ったんだよ 僕一人でもう安心して帰れるだろ ドラえもん"},{"transcript":"見たろ ドラえもん簡単だよ 僕一人でもう安心して帰れるだろ ドラえもん"}],"final":true}],"result_index":0}

「嘘みたいだろ。死んでるんだぜ、それで。」

完璧。

{“result":[{"alternative":[{"transcript":"嘘みたいだろ 死んでるんだぜ それで","confidence":0.98469388},{"transcript":"ウソみたいだろ 死んでるんだぜ それで"},{"transcript":"うそみたいだろ 死んでるんだぜ それで"}],"final":true}],"result_index":0}

利用制限

・ 1日50回の利用制限
・ 30秒を超えた音声ファイルはエラーになりやすい
・ Cloud Speech APIは月60分まで無料。それ以降は有料という感じ

利用した感想

俺の声が聞き取りやすい可能性も否めないが、音声変換の精度は非常に高い。ちょっとだけ変なところもあるかもしれないが、ほとんどないと言っていい。
Speech APIは利用制限あるが、Cloud Speech APIは低価格で利用できるから、本格的にプロダクトに落とし込む際はCloud Speech APIを利用してみるのがいいと思います。

音声を録音しているときが、一番恥ずかしかった。。

  • このエントリーをはてなブックマークに追加