LoginSignup
41
43

More than 5 years have passed since last update.

Google Speech APIを使ってMacで音声認識

Last updated at Posted at 2014-09-09

Macで音声認識をしてみた。
音声ファイル(wav)を文字列として認識させる。

Google Speech API

音声認識には、Speech APIを利用する。
リンク先で試せるが、音声を認識して文字列に変換してくれる。Chromeの音声検索とかに利用されてるやつだと思う。

日本のgoogleアカウントだと、デフォルトの状態ではAPIを利用でいないようなので、Chromium Projects?にメンバー登録しておく。そうすると、Google Developers Consoleで、Speech APIが利用できるようなるので、API keyなどを取得をしておく。詳しくは以下。
http://www.chromium.org/developers/how-tos/api-keys

ちなみに、リクエストの上限が50回/日 だし、ちゃんとしたドキュメントが(おそらく)無いし、あまり使いやすい感じではない。。。

音声ファイルを用意

自分の声を録音するために、少しだけ準備。HomebrewでSoXをインストール。

$ brew install sox

これで、recコマンドで録音ができるようになる。コマンドの使い方などのドキュメントはこちら

$ rec --encoding signed-integer --bits 16 --channels 1 --rate 16000 test.wav

上記を実行すると録音開始されるので、「テスト」とでも言って保存。

Rubyで認識用のコードを書く

あとは、Speech APIに音声ファイルを認識させる。

https://www.google.com/speech-api/v2/recognizeに対して、POSTでリクエストを送信すると、音声を認識した結果がレスポンスで帰ってくる。

以下が書いたコード。

voice_recognition.rb
require 'net/http'
require 'JSON'

uri = URI('https://www.google.com/speech-api/v2/recognize' \
  '?output=json&lang=ja&key=AIzaSyAD_5b6--4Jz0CXD5_sRoPa9ZjgJsYNK-M')

https = Net::HTTP.new(uri.hostname, uri.port)
https.use_ssl = true

res = https.start do |h|
  req = Net::HTTP::Post.new(uri)
  req.body = File.read(ARGV[0])
  req.content_type = "audio/l16; rate=16000"
  req['User-Agent'] = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36"
  h.request(req)
end

p res

result_data = res.body.force_encoding('UTF-8')
result_data.split("\n").each do |data|
  p JSON.parse data
end

出力形式(output)やAPI key(key)をパラメータとして指定し、APIのURLにPOSTでリクエスト。headerやbodyにも情報を入れている。

スクリプトを実行。

$ ruby voice_recognition.rb test.wav
#<Net::HTTPOK 200 OK readbody=true>
{"result"=>[]}
{"result"=>[{"alternative"=>[{"transcript"=>"テスト", "confidence"=>0.46040118}, {"transcript"=>"test"}, {"transcript"=>"てすと"}, {"transcript"=>"チェスト"}], "final"=>true}], "result_index"=>0}

ちゃんと認識している!!さすが優秀。
transcriptと一緒に入っているconfidenceというキーの値は、解析結果の信頼度のようなものだろうか。

おわり

APIに関する情報がちょっと少なくて分からないことが多いのだが、以上が軽く触ってみた結果です。

41
43
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
43