概要
音声をテキストに変換してくれる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を利用してみるのがいいと思います。
音声を録音しているときが、一番恥ずかしかった。。