投稿
nobu divine-creator
TALK命令の音声が、何だか残念な気がするのは私だけでしょうか? DSiウェアのスピーチサポートでは、男性・女性・男の子・女の子の四種類から選べ、使い勝手が良いと思いましたけど、プチコン3号では、微妙な男性の音声のみですよね? この音声の高さなどを変化させる方法は無いのでしょうか?
11そうだね
プレイ済み
返信[1]
親投稿
てっく tekpro
例として録音ツールでボイス録音された方もいますが、流石に苦肉の策ですね…… 一応アプデで復活させる意思はあるようなので気長に待ちましょう
0そうだね
プレイ済み
返信[2]
親投稿
nobu divine-creator
ところで、この質問に関連した問題点なのですが、「こんにちは」と入力すると、音声的には「こんにちわ」となるべきなのに、「こんにちは」と発音されてしまいますよね? PRINT ”こんにちは” TALK ”こんにちわ” ……とすることで、文字は「は」と表示され、音声は「わ」と発音されますけど、操作をする人に文字を入力させて、正しい文字を表示させ、正しい音声を発音させるには、どのようにしたら良いのでしょうか?
0そうだね
プレイ済み
返信[3]
親投稿
表示用を音声用に変換する命令を作る
0そうだね
プレイ済み
返信[4]
親投稿
nobu divine-creator
「表示用を音声用に変換する命令」というのが全く分かりません…。 それと、少し違う質問なのですが、入力した文字と表示する文字を変えるには、どのような命令をすれば良いのでしょうか? 例.「わ」と入力する→「は」と表示される
0そうだね
プレイ済み
返信[5]
親投稿
関数のほうがいいかなぁ A$=TOTALK$("こんにちは") ?A$ こんにちわ になるみたいなの作ればいいんじゃない
0そうだね
プレイ済み
返信[6]
親投稿
けい kei0baisoku
>nobuさん 真面目に考えて答えてみます。 正攻法でそのようなプログラムを0から作るのは、恐らく極めて難しいです。 難しいのはプログラムを組む部分ではなく「書いてる文字と話す文字を、どのような時に何に差し替えるか」というルールを見つける部分です。 10歳以上くらい(?)の日本人ならば経験で自然にできると思いますが、逆に言うと人間の10年分くらいの経験と知識がなければ出来ない、高度な判断と言えるかもしれません。 ちなみに、単純に文字を置き換えるのはSUBSTという命令で出来ます(使い勝手はよくないですが………) なので、文字を探す命令と組み合わせたら「こんにちは、を、こんにちわ、に置き換える」くらいのプログラムなら比較的簡単に作れると思います。
1そうだね
プレイ済み
返信[7]
親投稿
けい kei0baisoku
そしてTALK命令の声は、私もすこぶる残念です………(´з`)
0そうだね
プレイ済み
返信[8]
親投稿
ASA fusuian
プチコンのTALKはカナしか読めないので、けいさんが言うほどは難しくないと考えてます。 MOMOADVのときは、空白の前の「は」を「わ」に置き換えるMSG2TALK$関数を作って自動化しました。 それとは別に、300未満の数字読み上げ関数を作ったことがありますが、そのあと桁の大きな数字もちゃんと読み上げるプログラムを作った人もいます。
1そうだね
プレイ済み
返信[9]
親投稿
オリジナルの擬人化対話エージェントのプロジェクトは、かなり高度なことが、出来るらしいです。プチコンに移植する際にどの機能を盛り込んだのかわかりませんが、命令表に、文字数制限の中で、コントロールコマンドの使用数に応じて短くなるとの記述があるので、いつかもっと使いやすくなるのではないでしょうか。 言葉の置き換えについては、本格的にやろうとすると日本語を研究して、辞書を作るか、自動学習の機能を考える必要がありかなり大変なことになりますが、利用場面を限定すれば、プチコンでも実装可能だと思います。
0そうだね
プレイ済み
返信[10]
親投稿
nobu divine-creator
皆さん、詳しく丁寧な回答ありがとうございました(^▽^)♪ 私が予想していた以上に難しいことだったのですねΣ(゚Д゚)! ASAさんのモモタローをプレイしてみた結果、「は→わ」が自動化されていたり、プロローグがDATAになっていたりして、驚きました! どうやら、決められた文を選択させて、それを音声に出すという形式が初心者向きのようですね♪
0そうだね
プレイ済み
返信[11]
親投稿
けい kei0baisoku
>ASAさん なんと(°Д°) それくらいで結構行けちゃうものなのですか。 「ハハ、キトク」 ↓ ×歯は危篤 ○母危篤 みたいに区切りの直前のはにだけ着目すれば良いわけではないので、相当膨大な辞書とか必要になるのではと想像してました(´ω`)
1そうだね
プレイ済み
返信[12]
親投稿
nobu divine-creator
けいさんへ SUBST$を使用した文字列置換の方法を具体的に教えていただけませんか? SUBST$を設定して文字を入力すると、文字が置き換わって表示されるのですよね?(うまく置き換わりませんでした…。)
0そうだね
プレイ済み
返信[13]
親投稿
ASA fusuian
>けいさん そこはテキストを工夫して切り抜けます。ひらがなの「は」のあとに空白が来たらワと発音させるわけだから、母をハハと書けば空白来てもハワキトクとは読みません。 3号はひらがなが出るので、カナだけでも案外表現力があるものです。
2そうだね
プレイ済み
返信[14]
親投稿
けい kei0baisoku
>nobuさん 作ってみました(^0^) ASAさんの「スペースの前のは→わ に置き換えルール」でやってみました。ちなみに、結果が思ったようにならなかった場合は、仕様を勘違いしてないかまず命令表を細かく見直してみると良いですよ(^^)
0そうだね
プレイ済み
返信[15]
親投稿
けい kei0baisoku
実行結果です
0そうだね
プレイ済み
返信[16]
親投稿
nobu divine-creator
SUBST$を使わずに、IF A$=="入力される文字" THEN PRINT "表示される文字"という形式でも、入力された文字と違う文字が表示されるようにできないのでしょうか?
0そうだね
プレイ済み
返信[17]
親投稿
ASA fusuian
FOR文で一文字一文字処理してもいいと思います。 FOR I=0 TO LEN(S$)-2 IF S$[I]=="は" && S$[I+1]==" " THEN S$[I]="わ" PRINT S$[I]; WAIT 5 NEXT WAITを入れると、字がつらつらっと出ていかにもゲームのテキストになります。BEEPを入れるとさらにいい。 …でもPRINTするテキストからTALK用のテキストを生成する話だから、PRINTするテキストを置き換えちゃおかしいですね?^^; まあ、あんな感じのFOR文でTALK用の文字列T$なんかを作ればいいと思います。その時はWAITなしで。
0そうだね
プレイ済み
返信[18]
親投稿
nobu divine-creator
ASAさんへ 一文字ずつの変換をIF~THEN~を使用して行うことはできないのでしょうか?(可能であるなら、その方式も知りたいのですが…。)
0そうだね
プレイ済み
返信[19]
親投稿
ASA fusuian
FOR文をIF文に置き換えたいってことなら、 I=0 @CONV_S IF S$[I]=="は" && S$[I+1]==" " THEN S$[I]="わ" PRINT S$[I]; I=I+1 IF I<= LEN(S$)-2 THEN @CONV_S こんな感じですかね。S$を変換するのでconvert S$を略して@CONV_Sラベルにしました。
0そうだね
プレイ済み