まず事前準備として
RaspberryPIにUSBマイクで音声入力を参考に、録音
$ arecord -D plughw:1,0 -d 10 -f cd test.wavffmpegパッケージでtest.wavをtest.flacに変換
$ ffmpeg -i test.wav -vn -ac 1 -ar 16000 -acodec flac test.flacあとは以下のスクリプトを実行。
----
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# coding:utf-8 | |
require 'pp' | |
require 'uri' | |
require 'net/http' | |
Net::HTTP.version_1_2 | |
uri = URI.parse("https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=ja&maxresults=6&pfilter=2") | |
req = Net::HTTP::Post.new(uri.request_uri) | |
req.body = File.read("test.flac") | |
req.content_type = "audio/x-flac; rate=16000" | |
req.content_length = req.body.size | |
req['User-Agent'] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11" | |
#req['Accept-Encoding'] = "gzip,deflate,sdch" | |
req['Accept-Language'] = "ja,en-US;q=0.8,en;q=0.6" | |
req['Accept-Charset'] = "utf-8;q=0.7,*;q=0.3" | |
http = Net::HTTP.new(uri.host,uri.port) | |
http.use_ssl = true | |
http.verify_mode = OpenSSL::SSL::VERIFY_NONE | |
#http.set_debug_output STDERR | |
http.start do |h| | |
res = h.request(req) | |
p res | |
puts res.body | |
end | |
実行結果
$ ruby gvoicerecog.rb
#<Net::HTTPOK 200 OK readbody=true>
{"status":0,"id":"1b69aa31b6bfac4059d6409566f4950e-1","hypotheses":[{"utterance":"あいうえお","confidence":0.5210862},{"utterance":"あ い う え お"},{"utterance":"アイウエオ"},{"utterance":"あいうえお aa"},{"utterance":"あいうえお うー"}]}
juliusと違ってかなりの認識精度。
それにRaspberryPIの負荷もほとんどない・・・
便利すぎる。
ただ家電コントローラ的にはリモコン操作に慣れてしまったのでもはや使い所がない。
うーむ。ちょっと利用方法を考える。
- 人口無脳的チャット
- 自由記述による検索
- 天気予報とかwikipediaとか(出力が音声だと使いにくくない?)
ぬぬー。求むアイディア。
0 件のコメント:
コメントを投稿