Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2017/03/12 (日)

呼んだら返事をするプログラム

| 17:41 | 呼んだら返事をするプログラム - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - 呼んだら返事をするプログラム - 雪乃☆雫のなでしこ日和 呼んだら返事をするプログラム - 雪乃☆雫のなでしこ日和 のブックマークコメント

 とりあえず、こうゆうこと。

#-----------------------------------------------------------
ダイアログIME=「IMEオン」
「◆コマンド◆
・ナコ様
・ナコ
・バイバイ」を表示

オン
  「ナコ様を呼ぶ」で尋ねる。
  それで返事。

*返事(Sで)
  もしそれが「ナコ様」ならば、「な~に?」と言う。
  違えばもしそれが「ナコ」ならば、「呼び捨てかよ!」と言う。
  違えばもしそれならば抜ける。
  違えばもしそれが「バイバイ」ならば、「バイバイ」と言う終わる。
  違えば、「僕は{それ}じゃないよ」と言う。
#-----------------------------------------------------------

 コレを、音声認識でやりたいってだけのこってす。

 プログラム的には、「尋ねる」で文字入力の代わりに、音声認識した単語で返事させればいいだけなので、難しいことなどいっこもなく。

 ただ、Juliusさんが、どーでもいい音までいちいち拾っては、あからさまに合わないものは無視してくれればいいのに、必ずリストの中のどれかに無理矢理割り当てて返してよこすんだよね。

 ことに一番短い「ナコ」に割り当ててしまう率が高く、すぐにナコさまが「呼び捨てかよ!」と怒ってくるとゆう困りもの;;;


 大人しく一人で家でパソっていて発生しがちな雑音は、テーブルにコーヒーカップなどを置く音、マウスがテーブルにぶつかった音、うさがシャカシャカとフローリングを掘る音!ヽ(`Д´)ノ ・・・など。

 人が身じろぎするような音には、それほど反応しないんですが、あと、結構ばしばしキーボードを叩いても、あまり反応しないんですが、上記の音については非常に良く反応しちゃいます。周波数?とかの関係???

 しかしまー、これらの人の声ではないノイズを面目にどーこーしようなんてコトはワタシの能力の範疇を軽々とえているので考えない!w


 「カタン」とか「コツン」というような音については、リストにいくつか適当な単音を登録しておいて、それを無視するのがいいみたい。「カサカサ」「シャカシャカ」などの連続した音については。果たしてどうなんだろう・・・

 とりあえず、50音プラス濁音、半濁音などを加えた単音で、どの音で認識されてくる率が高いかを実験してみたので、結果をはっぴょーします。

 、栄光の(?!)トップテンに輝いたのは・・・

 「っ」「ぷ」「う」「あ」「え」「ん」「ふ」「く」「ぶ」「ぱ」でしたぁ~。

 「っ」の音素列は「q」だし、「ん」は「N」。母音の「う」「あ」「え」がランクインするなど、より短い方がいいっぽいとゆうのは、まったくめだかさんに教えて頂いたとうりですね!

 しかし、「い」「お」を抑えての「ぷ」「ふ」「ぶ」のろい踏みも、なかなかじゃないですか?

 はJuliusさんを起動しっぱなしにして置いて、自然発生した音を認識させといてハッシュで集計したので、どんな音がどの音に? というのは不明なんですが、うさの立てる音は圧倒的に「っ」になる率が高くて、それが「っ」の順位を大幅に引き上げてる気がしますwww


 この実験結果を踏まえて、単語リストはこんな感じにしてみた。

#---nako_sama.jdic------------------------------------------
ナコ様	n a k o s a m a	
ナコ	n a k o	
バイバイ	b a i b a i	
くじらさん	k u j i r a s a N	
ペンちゃん	p e N ch a N	
ワニさん	w a n i s a N	
らいおん君	r a i o N k u N	
ノイズ	q
ノイズ	N
ノイズ	a
ノイズ	u
ノイズ	e
ノイズ	p u
ノイズ	f u
ノイズ	b u
ノイズ	k u
ノイズ	p a
フィラー	a:
フィラー	e:
フィラー	N N
フィラー	e: t o
フィラー	u: N t o
#-----------------------------------------------------------

 反応を見ながら増減の予定。

 「ノイズ」だの「フィラー」だのとゆうのは別になんでも良く、「※」でも「 」でもよかったんですが、には出来ないようだったのとコメントなどが付けられないので、取りあえず見て分かりやすいように。


 してプログラムはこんな感じ。

 JuliusようのTCPや音声認識結果を取得する関数は定型なので割愛。

 いちおう、「Julius音声認識時処理」だけ書き換えたらいいようにしたつもり・・・

#-----母艦設計----------------------------------------------
母艦の閉じた時は~Julius終了。
#-----GUI------------------------------------------------
会話エディタとはエディタの幅は200。
#-----Julius起動--------------------------------------------
もし、Julius起動バッチの存在はいならば、Julius起動バッチを起動違えば、「起動バッチがありません。」を言う終わる
Julius接続。
#-----メイン------------------------------------------------
「◆コマンド◆
・ナコ様
・ナコ
・バイバイ」を表示

*返事(Sで)
  もしそれが「ナコ様」ならば、「な~に?」と言う。
  違えばもしそれが「ナコ」ならば、「呼び捨てかよ!」と言う。
  違えばもしそれが「ノイズ」ならば抜ける。//「ノイズ」と言う。
  違えばもしそれが「フィラー」ならば抜ける。//「フィラー」と言う。
  違えばもしそれが「バイバイ」ならば、「バイバイ」と言う終わる。
  違えば、「僕は{それ}じゃないよ」と言う。
  会話エディタのテキストは。
#-----------------------------------------------------------
●Julius音声認識時処理(Aで)
  会話エディタのテキストはA。
  Aで返事。
  戻る。
#-----------------------------------------------------------

 これで一通りは「尋ねる」の場合と同じような感じで答えてくれるようになりました。

 時々、「ナコ」が「うーんと」に認識されて、フィラー扱いで無視されるっぽい; えー? 似てるかい??

 「うさこさん」などと言うと、ほぼ「ナコ様」と認識して、返事してくるwww

 これはもう、この孤立単語認識自体が、決まった単語をコマンドとしてどうこうするためのモノなんですから、リストに無いことは言うなって話なんです。

 でもまー、「うさこさん」にいちいち反応されてはめーわくなので、単語リストに「うさこさん u s a k o s a N」を追加

 リストに登録さえあれば、混同されることはない様子。

 よしよし♪♪♪


 ・・・でっ?

 それでどーするんだよっていうと、別にの先の展望はなかったり;;;

めだかめだか 2017/03/12 22:24 お久ぶりです。この前のお返事をしようと書いていたらいつの間にか寝てしまっていました(笑)
この前のお返事ですが、私が文章を読んでいなかったのであのような頓珍漢なお返事になっていましたwあの時も眠かったんです~・・・許してください(笑)

で、本題ですが、今回のこのプログラムですが、何か喋った後にも、操作をつけたりするのでしたら、条件分岐などを使っても面白い様に思いました。ただ、実用性は・・・w

僕の場合は、関数にしてわかりやすくしています。また、処理の内容や命令が多いため、整理しやすくと思いそうしてます^^

ただ、その時は関数内でGUI部品がつくれねぇ!ってなりまして、諦めてましたwちょっと前に知ったのに、手を付けず他のプログラムをポチポチかいておりますw

雪乃☆雫雪乃☆雫 2017/03/13 08:22  めだかさん、おはよーございます。
 ワタシは、基本的には、実用的なモノは作らないのですよ~(爆)

 条件分岐ね~。そんなのもありましたね~~~(こらこら;)
 ワタシってば、どうもフロー制御の色々なパターンをうまく使いこなせてないんだよね。基本、「もし」と「回」で生きてるってゆうか;;;(最近になって急に「反復」の便利さを知ったんですよ(爆))
 もしもしもしもしと、見づらいプログラムでゴメンね><;

 そーいわれて振り返ると、過去にも条件分岐使えばいいのに(苦笑)ってヤツがいっぱいだ~。サイコロで胴元やナコ様が沢山喋ってるトコなんか特にね(@_@)
 もちろん、知らないってわけでは無くて、たまたま書いてる時にシナプスが繋がれば、実にさりげなく当然のよーに「条件分岐」を使って記述してる時もあるみたいなんだケドwww

 GUIを動的に作るヤツ、最初、絶対はまりますよね~!
 マニュアルとか見ても、ぜんぜんどこもそんなこと書いてないもねー・・・

めだかめだか 2017/03/17 15:11 こんにちはー お返事ありがとうございますー

作る作ると言っておきながらなかなか手をつけておらず、完成までしてないのが毎回のオチです(笑)

フロー制御に関しては、もしか回と反復だけで充分お腹いっぱいになりますよねw反復も代入とかで、ごっちゃになりますしw
もしでも、初めの方はそろうので、コードの見た目的には綺麗かもですね(笑)

よくありますーw何故かリフレインを使ったりとかしちゃいますw

初め探してた時に、動的???静的???関数???この構文で何がダメなの???ってなっちゃいましたよwそれようのページもないので、関数使っていそうなプログラムを見つけては、GUIを使うにはどうすりゃいいかをずっと考えてましたねー(笑)

雪乃☆雫雪乃☆雫 2017/03/18 07:58 GUIについては、もうちょっと突っ込んだ内容の、まとまった情報があるといいですよね~。
最初、絶対みんな不自由すると思う><;

ワタシもいろいろ完成しないで放置してる~。
けっこう飽きっぽいのさ~~~;;;

めだかめだか 2017/03/19 22:18 ですが、そういった点(GUI関連)では、Cなどへ移行した時に違和感なく組み立てが出来そうなので、いいですが、なでしこ自体プログラム初心者向けなので、そういうのはまだ難しいところですね・・・^^;

途中までいい感じ作っておきながら、他の事に着手しちゃってほったらかしですぅ~(笑)

ゲスト



トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20170312