-- --

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

05 23

ド素人がアプリ作るよ! App Inventor日記 その8

以前取り組んだApp Inventorの聴音アプリですが、解説動画をYoutubeに投稿しました。
ご質問等ございましたらお気軽にコンタクトしてください。 




04 29

ド素人がアプリ作るよ! App Inventor日記 その7

シーマン的アプリ。とりあえず簡単に作ってみました。 

使うのはテキストボックス、ボタン、それとTTS(TexttoSpeech)。(あとラベルを1つ追加しておきました)

seeman.jpg

ユーザーがテキストボックスに文字を入力し、ボタンを押すと機械音声がなんらかの反応を示してくれるという仕組みです。

ブロックエディタはこんな感じ。↓(後で訂正箇所に気づきました、失礼)
blocksss.jpg

テキストボックスに入力された文字が、wordsというリストに含まれている場合は、answerと言う箱にこちらが指定した返答を入れ、それをTTSでしゃべらせる。まぁこういう仕組みになっています。この場合ですと、「hello」か「hi」と入力すると「what?」と返してくれるわけですね。反応がわかるように、ラベルに声と同じ反応を表示しておきました。↓
seeman44.jpg

こうして「挨拶」や「食べ物」「動物」なんかのリストと、その返事をコツコツと作り続けるのことになるのですが、ボタン1のところになんでもかんでも詰めると長くなりますので、処理をまとめておきましょう。
seeman22.jpg
こういう風にすれば、ボタン1を押したときにまず画面右端の「Process」の中身が処理されます。入力した単語がリストに含まれているかをズラズラっとチェックしてくれます。

次に、もしテキストボックスが空だった場合は「タイプしてください」と言われるように設計。↓
seeman66.jpg
文字数が例えば5文字を越すと、「長すぎますよ」と言わせたりできます。↓
seeman55.jpg

ブロックエディタはこんな風↓。
seeman33.jpg

レッツ、シーマンシーマン。


04 22

ド素人がアプリ作るよ! App Inventor日記 その6

アプリ作るよ
今度のアプリはText to Speechを使ったものを作ろうと思います。 

Text to Speechとはすなわち文字の読み上げ機能ですね。魅惑の機械音声です。AppInventorにはTexttoSpeech機能がついてるのですが、さきほど試したところ、日本語音声にはまだ対応していないっぽいです。そのうち日本語対応されるであろうその日に備えて、今からこの機能を使ったアプリを作っておこうと考えた次第であります。

モデルはドラマ「電車男」で出て来たニワトリプログラム、さらにその元ネタはバーガーキングの「Subservient Chicken」というWebアプリケーションだそうです。
↓Subservient Chickenの画像見つけました、かなりシュール。
sevant.jpg

「電車男」の作中では、ブラウザ上で自分の性別とひらがな2文字をテキストボックスに入力すると、ニワトリがなにかしらの反応を示してくれると言ったもので、シュールな返しでネット住人達をもてあそびました。これは...いける!これくらいならApp Inventorで作れるぜ!ってことで似たようなプログラムを組んでみることに。

概要は、ユーザーがテキストボックスに単語を入力すれば、アプリが機械音声で反応してるといった感じ。

さて、私がなぜこのTexttoSpeechにこだわるか説明しろと言うならば、私の性癖をさらさねばなりません。

皆さんは「棒読みちゃん」ってご存知でしょうか?ニコニコ動画なんかでコメントを声に出して読み上げてくれることで重宝されているソフトなのですが、そのまったりとした脱力系の発声は不思議な魅力があり、「あの声が狂おしいほど好き」って言うファンが意外に多いのです。

「棒読みちゃん」とはアプリケーションの名前でAquesTalkの音声ライブラリを使っています、ほかにもSofTalkなんかも同じライブラリから音源を取っているので、このライブラリの声を一括りに「ゆっくり声」なんて言ったりしています。もちろんニコニコ専用の音声ライブラリではないので、ニュース番組で流れたコンピューター音声がゆっくり声だった!なんて事もあるわけです。

まぁつまり私はこのAquesTalk系の音声が好きと言うお話です(アンドロイドのデフォルト音声はゆっくり声ではないですが)。機械音声を使って自分と会話のやり取りをしてくれるプログラムがあれば嬉しいな、といったそんなどうしようもない動機です。シーマン的な発想ですかね。

構造的には非常にシンプルなものですので、それほど苦労はしそうにないと踏んでいます。ユーザーが入力した単語に対して返事をしてくれるのが基本ではありますが、特定キーワードには効果音を鳴らすと言ったことや、やろうと思えばムービーだって流せるわけですからね、ちょっとしたゲーム要素が入るかもしれません。

できればキメ細かく作りたいのですが、あらゆる単語に対応するには無理があります。リスト機能で「動物」「挨拶」などをまとめ、動物関連のワードに対しては○○と反応する、と言った妥協が必要になるかと思います。TinyDBと言う機能が気になりますね、詳しく調べてないのですが、このアプリに転用できないかな?

つづく


04 18

ド素人がアプリ作るよ! App Inventor日記 その5

App Inventorで音当てアプリを作ろう計画、完成編。

音当てアプリですが、どうにか最低限の形は完成しました。 
見た目はこんな感じ。

emu.jpg

「鳴らせぃ!!」ボタンを押すと音がなります。このボタンは一度押すとenabled falseになり、押せなくなります。音源は「ビープー」といった具合に2音が繋がっているものを用意してあります。何パターンも用意してあり、ランダムに再生されるようになっています。 

これは音楽のお話になるのですが、簡単に説明すると「ドーレー」という音源が再生された場合、ドとレの距離は半音2つ分にあたります。音楽用語でこの距離を「長2度」といい、英語で「Major 2nd」という風に表します。

正解を得るためにユーザーはまず「M」ボタンを押し、更に「2nd」のボタンを押すことになります。最初に「M」「m」「p」「Tritone」のどれを選んだかによって処理が変わります、ここでvisible true falseの処置が多いに活躍します。

↓「M」か「m」を押した場合はこんな風にボタンが現れます。
emu2.jpg

↓「p」を押した場合はこんな感じ。
emu3.jpg

ちなみに音源が再生された時に、その音源に対する正解が裏でセットされており、ユーザーが選んだ2文字が、セットされた正解と=の関係にあるかを調べることで正解不正解を判別します。「M」と「2」をくっつけるためにjoinブロックを使いました。 

joinbox.jpg

正解/不正解が判定された後、初めて次へボタンが押せるようになります。次へボタンを押すと正解率が表示されると同時に、押せなくなっていた「鳴らせぃ」ボタンが押せるようになります。 これで一周ですね。

正解率を表示するために、正解数や出題数をカウントする仕掛を作ってありますので、10回正解すれば「やったね!」など表示させたり、20回でゲーム終了など様々な工夫ができます。

↓「次へ」ボタンで正解率が表示され、「鳴らせぃ」ボタンがクリック可能に。
emu4.jpg

残念なのはエミュレーターではウィンドウの切り替えがテストできず、エラーチェックができないのでマルチスクリーンを作るモチベーションがなくなったことでしょうか。マルチスクリーンができれば、難易度設定やアプリ情報、学習のヒントなど記載することが出来、よりアプリらしくなるのですが...。

こんな所で音当てアプリは一段落です。

追記:Youtubeに試作品を公開しました。


04 12

ド素人がアプリ作るよ! App Inventor日記 その4

App Inventorで音当てアプリを作ろう計画、正解率を計算しよう編。

クイズ形式のアプリを圧倒的制作中ですが、せっかくなので正解率を表示しようと思います。新しくデザインビューで必要なものは表示するためのlabelくらいでしょうか、あとはブロックエディタで組みます。 

私のアプリの場合だと、「次の問題」ボタンというのがあるので、これをクリックした回数=クイズの出題数、と言う感じでやってみましょう。

手順としては、次の問題ボタンを押す→出題数がカウントされクイズ出題→答え送信ボタンで正解/不正解か判別→正解の場合、正解数をカウントする→次の問題ボタンでループ。
 
まず出題数をカウントするための入れ物を用意する、def=count
正解数をカウントするための入れ物を用意する、def=numberofcorrect
これらに特定の行動を行った場合に、「+1」していくようにブロックを追加してあげます。一つは次の問題ボタンにくっつけて、もう一つは正解の場合処理されるセクションにつけておきましょう。

こんな感じ↓ nextbottonをクリックするとcountが1ずつ上がります。
calcu1.jpg

こちらは正解を判別するブロック
正解の場合、numberofcorrectに数字が1足されるようになっています。
calcul2.jpg


次に計算をしないといけませんね、
正解率~%という表示ですから、正解カウント数÷出題カウント数×100でいいんですが、一度につき一つの計算しかできないようなので、正解カウント数÷出題カウント数の答えを写真1のdef=calculation1へ保存、更にcalculation1×100の答えをdef=calculation2に保存し、これをlabelに表示。

すると...小数点が表示されました。小数点以下切り捨てるためにroundと言うタグをつけます、これで小数点が切り捨てられますが、この答えを保存させるためにさらにdef=accuracyfinalという箱を用意するはめに...なんかいちいち数字を保存するのがスマートじゃないなぁ、一気に計算できそうなもんですが。 


さて、これで大枠は出来ました。今回のアプリでは問題をスキップする機能をつけていませんので、答えを送信しない限りは次の問題が出題されない仕様にしてあります。現在、次の問題ボタンを押す=出題数カウント+1する、となっていますので、カチカチと次の問題ボタンを押されると出題数がカウントされ続けてしまいます。

そこで問題が出題された瞬間に「次の問題ボタン」をクリックできないようにします、bottan enabledを falseにすればいいだけです。このtrue falseの小技は沢山使うようことになります。

calcu3.jpg

最後に「回答を送信ボタン」を押せば「次の問題ボタン」が使えるようにします、ボタンをbottan enabledを trueにするわけですね、画像は割愛。
こんな感じで着々と進んでおります、私のアプリ。

火頭

Author:火頭

火頭工房の中の人。 

ギター弾きます。
ゲームします。
お酒飲みます。

新ブログ


火頭工房のサイト

プロフィール
PR

Page Top
Powered by FC2 Blog | | Template Design by スタンダード・デザインラボ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。