日々適当

hibitekitou

iPadで音声入力を試してみる

iPhone |2012-04-08
タイトル通りの内容で、 iPadで音声入力を試してみております。
ここに書いてある内容は、すべてiPadで入力しています。キーボートを使っての入力は全くしておりません。と言いつつ、入力に失敗したらいったんキーボートを使っての削除はしています。滑舌が悪いためか時々認識を間違えることがあります。コツは、ゆっくりとはっきりと喋ってやることのようです。

音声認識に失敗すると、例えばこの様な感じになります。

マジ出過ぎればこれ
(マジですげえわこれ)

それでも全体的に非常に精度の高い認識をしてくれます。ゆっくりはっきりと喋ると書きましたが、結構早口でしゃべってもちゃんと認識してくれるのは驚きです。まぁ、独り言をぶつぶつと喋っているような感じになるので、あまり外で使うことができないと思いますが、キーボード入力よりもはるかに快適に入力ができます。しゃべり言葉なんかはうまく認識してくれないこともありますが、それでもかなり正確に認識してくれています。いや、マジですげえわこれ。

喋ることがあまりうまくないので、結構どもることがあります。そうするとそのような発音がはっきりしない部分を間違った単語として認識されてしまうことがあります。そのようなうまく発音できなかった部分をうまい具合に推測して変換してくれるようになるとうれしいですね。

とかなんとか、横になりながら入力をしているのですがそんな姿勢で入力できちゃうのが素晴らしいと思いました。
コメント ( 0 )|Trackback ( )

ICE Treeをスクリプトから組む

xsi |2012-04-08
って、オブジェクトモデルで組めるのかな?
とりあえずコマンドでやってみているけど。

(参考 愛☆ちゅカーブレングス。 [Junki The Junkie's Junkyard])

from win32com.client import constants as c

app = Application
log = app.Logmessage


s = "0,0,0,1,1,1,2,2,2,3,3,3"
sc = "0.0,0.333,0.666,1.0"


#PointCloudを作成
oObj = app.GetPrim("PointCloud", "", "", "")
#PointCloudにICETreeを作成
iceTree = app.ApplyOp( "ICETree", oObj, c.siNode)
#AddPointノードを追加してICETreeに接続
addPointNode = app.AddICENode( "AddPointNode", iceTree(0) )
app.ConnectICENodes(iceTree(0).FullName + ".port1", addPointNode.FullName + ".Add")
#StringToArrayを追加してAddPointに接続
sToANode = app.AddICENode("StringToArray", iceTree(0))
app.ConnectICENodes(addPointNode.FullName + ".Positions1", sToANode.FullName + ".Result")
#StringToArrayに値を設定
app.SetValue(sToANode.FullName + ".Value_string", s)

#以下同じ。SetDataの流れを作っている。
setDataCpd = app.AddICECompoundNode("Set Data", iceTree(0))
app.SetValue(setDataCpd.FullName + ".Reference", "self.Color", "")
app.AddPortToICENode(iceTree(0).FullName + ".port1", "siNodePortDataInsertionLocationAfter")
app.ConnectICENodes(iceTree(0).FullName + ".port2", setDataCpd.FullName + ".Execute")


getIDCpd = app.AddICENode("GetDataNode", iceTree(0))
app.SetValue(getIDCpd.FullName + ".reference", "self.ID", "")
selectInArrayNode = app.AddICENode("SelectInArrayNode", iceTree(0))
app.ConnectICENodes(selectInArrayNode.FullName + ".index", getIDCpd.FullName + ".value")

gradientNode = app.AddICENode("GradientNode", iceTree(0))
app.ConnectICENodes(gradientNode.FullName + ".in", selectInArrayNode.FullName + ".value")
app.ConnectICENodes(setDataCpd.FullName + ".Value", gradientNode.FullName + ".out")

sToAColorNode = app.AddICENode("StringToArray", iceTree(0))
app.SetValue(sToAColorNode.FullName + ".Value_string", sc, "")

app.ConnectICENodes(selectInArrayNode.FullName + ".array", sToAColorNode.FullName + ".Result")




基本的にICE Treeを手動で組んでみて、それを再現する感じなんですけど、いまいちスマートじゃないなぁ…。

ちなみに、こうやって組んだICE TreeのString To Arrayノードに

月周回衛星「かぐや(SELENE)」 - セレーネの科学 - 「かぐや」の成果 - LALT - 月全球及び部分的な高度データ

における「晴れの海(Mare Serenitatis)の1/16度グリッド高度データ」を流し込むとこんな感じになります。



もともと、スクリプトから直接Point Cloudに対してパーティクルのポイントを打てないかなぁって思って調べてたんですけど、よく分からんので、とりあえずICE Treeからポイントを打ち込んでおります。
コメント ( 0 )|Trackback ( )
  ・