Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2019-03-22

テキスト読上げ(青空文庫形式対応)

| 12:49

 なんだかんだで、読上げ自体はわりとすぐに出来るようになりました。

 [# ]で囲まれた註を無視して、前に書いたとうりに漢字部分を読まずにルビの方を読むようにしただけなので。

#------------------------------------------------------------------
# テキスト読上げ
#------------------------------------------------------------------
「Google 日本語」に話者設定。   //ダミー

#---宣言----------
テキスト=。読上中フラグ=オフ行数=-1。細区切=-1。
区切記号=「{CRLF},{CR},{LF}」を「,」で区切る。
息継記号=「 , ,?,!,―,…,{カッコ}」を「,」で区切る。
註記号=「-------------------------------------------------------,-------------------------------------------------------
※[#,]{改行}[#,]」をCSV取得。

#---HTMLの設置----------
HTML=「<div id="main"></div>」
「#nako3_div_1」にHTMLを、DOM_HTML設定。

#---GUI作成----------
「#main」にDOM親要素設定。
のテキストエリア作成し、テキストエリアに代入改行作成。
「読み上げ」のボタン作成し、読上ボタン代入。
「先頭」のボタン作成し、先頭ボタン代入。
「クリア」のボタン作成し、クリアボタン代入改行作成。
「{カッコ}、{カッコ閉じ}でも区切って読む(Google 日本語で止まる場合)」のチェックボックス作成し、細区切チェック代入改行作成。

#---CSS設定----------
読上ボタンの「margin」に「2px 5px」をDOMスタイル設定。
先頭ボタンの「margin」に「2px 5px 2px 50px」をDOMスタイル設定。
先頭ボタンの「disabled」に「disabled」をDOM属性設定。
クリアボタンの「margin」に「2px 5px」をDOMスタイル設定。
細区切チェックの「margin」に「10px」をDOMスタイル設定。
テキストエリアの「rows」に「20」をDOM属性設定。
テキストエリアの「placeholder」に「ここに読上げたいテキストを入力して下さい」をDOM属性設定。

テキストエリアに{
  "幅": "100%",
  "margin": "2px 5px",
  "背景色":"#ffffff",
  "色": "#000000",
}をDOMスタイル一括設定。

#---イベント----------
クリアボタンをクリックした時には、
  「テキストを全てクリアします。{改行}読上げ中の場合は、読み上げも中断します」で二択。
  もしそれはいならば、
    細区切チェックの「disabled」にDOM属性設定。
    テキストエリアにをテキスト設定。
    テキスト=。読上げ中フラグ=オフ行数=-1。
  ここまで。
ここまで。

先頭ボタンをクリックした時には
  「先頭に戻って読み上げを行います。」で二択。
  もしそれはいならば、
    行数=-1。読上開始。
  ここまで。
ここまで。

読上ボタンをクリックした時には
 「Google 日本語」に話者設定。   //Google Chromeでは、Google 日本語で読む。
 もし、読上中フラグ=オフならば、
  読上開始。
 違えばもし、読上中フラグ=オンならば、
  先頭ボタンの「disabled」にDOM属性設定。
  読上中断。
 ここまで。
ここまで。

細区切チェックの「onchange」に「チェック関数」をDOMイベント設定。

●チェック関数
  細区切=細区切*-1。
ここまで。
#------------------------------------------------------------------
●読上テキスト作成
 註記号を反復
   対象[0]から対象[1]を註削除。
 ここまで。
 ルビ反映。
 テキスト=テキストの「》」を置換。
 テキスト=テキストの「|」を置換。
 テキスト=テキストのカッコ閉じを「。」に置換。
 テキスト=テキストの「。」を「。{改行}」に置換。
 もし、細区切=オンならば、
   テキスト=テキストの「、」を「、{改行}」に置換。
 ここまで。
 息継記号を反復
   テキスト=テキストの対象を「、」に置換。
 ここまで。
 区切記号を反復
   テキスト=テキストを対象区切る。
 ここまで。
ここまで。
#------------------------------------------------------------------
●註削除(AからBを)
 検索開始位置=1。
 削除始=テキストで検索開始位置からAを文字検索改。
 もし、削除始=0ならば戻る。
 削除終=テキストで削除始+(Aの文字数)からBを文字検索改。
 もし、削除終=0ならば戻る。
 削除数=削除終-削除始+(Bの文字数)。
 テキスト=テキストの削除始から削除数を文字削除。
 検索開始位置=検索開始位置+削除始
 AからBを註削除。
ここまで。

●ルビ反映
 検索開始位置=1。
 ルビ記号=テキストで検索開始位置から「《」を文字検索改。
 もし、ルビ記号=0ならば戻る。
 ルビ始=ルビ記号-1。
 オン
   仮=テキストでルビ始から1を文字抜出。
   もし、(仮を漢字か判定)=はいならば、
     ルビ始=ルビ始-1。
   違えば、
     ルビ始=ルビ始+1。抜ける。
   ここまで。
 ここまで。
 削除数=ルビ記号-ルビ始+1。
 テキスト=テキストのルビ始から削除数を文字削除。
 検索開始位置=検索開始位置+ルビ記号+1。
 ルビ反映。
ここまで。
#------------------------------------------------------------------
●文字検索改(SでAからBを)
 検索対象=(Sの文字数)+1-A。
 仮=SのAから検索対象を文字抜出。
 数=(仮でBを文字検索)
 もし、数=0ならば、数で戻る。
 違えば、数+A-1で戻る
ここまで。

●漢字か判定(Sが|Sの|Sを)
  Sを「^[\u3005\u3007\u4E00-\u9FFF\uF900-\uFAFF\u3400-\u4DFF]|[\uD840-\uD87F][\uDC00-\uDFFF]」で正規表現マッチ。
  もしそれがnullならばいいえ戻る。
  違えばはい戻るここまで。
#------------------------------------------------------------------
●テキスト読上げ
 もし、読上中フラグ=オンならば、
  行数行数+1。
  もし行数≧(テキストの要素数ならば、
    細区切チェックの「disabled」にDOM属性設定。
    行数=-1。読上中断。戻る。
  ここまで。
  テキスト[行数]を話し終わった時には
    テキスト読上げ。
  ここまで。
 ここまで。
ここまで。
#------------------------------------------------------------------
●読上開始
  テキスト=テキストエリアからテキスト取得。
  もし、テキスト=ならば、
    「テキストエリアに読み上げたい文章を入力して、読み上げボタンを押して下さい。」と言う。
  違えば、
    読上テキスト作成。
    読上ボタンに「一時停止」をテキスト設定。
    読上中フラグ=オン。
    テキストエリアの「disabled」に「disabled」をDOM属性設定。
    先頭ボタンの「disabled」に「disabled」をDOM属性設定。
    クリアボタンの「disabled」に「disabled」をDOM属性設定。
    細区切チェックの「disabled」に「disabled」をDOM属性設定。
    テキスト読上げ。
  ここまで。
ここまで。

●読上中断
  読上ボタンに「読み上げ」をテキスト設定。
  読上中フラグ=オフ。
  テキストエリアの「disabled」にDOM属性設定。
  クリアボタンの「disabled」にDOM属性設定。
ここまで。
#------------------------------------------------------------------

http://snowdrops.starfree.jp/wnako3_test/16_yomiage.html

 がっ・・・

 ぐる子さん(Google日本語)の方が、はるかさんより読み違いが少なくて、多少聞きやすい感じなので、変えれるようにすっかなと思ったんですけど、どうも「話者設定」や、「話者一覧取得」の命令が、初は通らない(?)感じなのです。

話者一覧取得して反復
  F名前=対象["name"]
  F言語=対象["lang"]
  「{F名前}: {F言語}」を表示ここまで

 実行ボタンを押しても出ないんです。

 で、あれ? と思ってもう一押したらちゃんと表示され、の後はタブではずっと動きます。

 だもんで、前に話者変更などを試していた時には気付いてなかったけど、新しく開いた毎目は動かないの。謎すぎ。


 エディタの場合は、実行ボタンを二押せば良いだけなんだけど、HTMLに埋め込んだらそうもいかないですよね。

 一ダミーで話者設定し、ウェイトを入れた後、再設定すると通るので、最初にダミーを設定した後イベントの中で再設定で、出来たことは出来たのですが、無理矢理すぎ;



 あとは、なでしこは関係ないと思われることだけど、chromeさんとは、どうも相性が良くないみたいなんですよねぇ・・・


 ぐる子さんは長文が読めないらしくて、読上げ途中でいきなり止まって、再読み込みではダメで、ブラウザ自体の再起動必要かも知れない感じになる~(´д`)

 長文を読ますような前提じゃないってコトかも知れないし、一度話し始めたら、強制的に中断させるような命令もないのだから、もあんまり長文を一気に話させるのはどうかと思われるところですけど、100文字以下くらいでも余裕で止まることがあるから、改行や「。」ごと区切ったくらいじゃ駄目なことがあって、困ったもんだ。

 これは、chromeがと言うより、Google日本語のことで、chrome+はるかさんなら問題はないFirefoxではもちろん問題が無い。

 読上げエンジンの方の仕様なのかと思われるけど、「、」で区切ると、ちょっと息切れ感が・・・;


 それから、読上げようのテキストが大きいと、「話す」には一行ずつ送ってるにもかかわらず、しばしば止まるんだよね~。大きいったって30kbくらいなんですが。

 いや、のせいかどうかすらもよく分からんけど、元のテキストを半分とかにしたら、ふつーに読めたのです。

 でも、短編の一編くらいは、まるっと最初から最後まで読んで欲しいよね~。むむむ~。

 これは、chrome+はるかさんでも発生し、前のとは違って、一時停止して、もっかい読上げボタン押すと、次を読んだりもする。これFirefoxでは大丈夫。

 場当たり的には出来るようにできそうな気もするけど、原因が確定していない上にワタシが普段メインで使ってるのはFirefoxだから、やる気出ないなぁ;

 なにしろ、どれもこれFirefoxでは無問題なのですよ(?_?)

 お試しとゆうことでこんくらいにしておくか、まちっと研究してみるか、それが問題だw

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

2019-03-17

「文字検索」と「漢字か判定」

| 09:50

 マイナビ連載42目は、「再帰処理」についてでした。

https://news.mynavi.jp/article/nadeshiko-42/

 いや~、ワタシは別に、再帰処理につまずいた気はしないですけどね~。

 だって、それ以前に関数がわかんなかったし(爆)

 なでしこのお陰で急に賢くなって以降は、深く考えずに、ふつーに、それっぽいことをしていたように思う。



 それはさておき、「文字検索」です。

 そうは書いてないけど、v1非互換でした。

 なでしこ1の文字検索は、「文字列SでA文字目からBを検索する」とゆう命令でした。

 したがって、先頭の1文字目から検索を始めて、見つかったら「それ+1」文字目から次を検索・・・とゆう手順で、文書内にある全てのBを検索出来ました。(再帰って、こうゆうコトだよね(?))

#なでしこ1
C=1。新聞紙。
●新聞紙
 「しんぶんし」でCから「ん」を文字検索。  //「文字検索」
 もしそれが0ならば、 //ヒットしなかった場合は、
   戻る。       //関数から戻ることを忘れず!
 違えば、
   それ表示。
   C=それ+1。
   新聞紙。      //再帰

 まあ、なんかこんなような。

 ところが!

 なでしこ3の文字検索は、「文字列Sで文字列Aが何文字目あるか調べて返す」とゆうことになっており、検索開始位置の指定が出来ないんですよー。

 これでは、「何文字目」命令と、同じことっぽい。

 しくしくしくしく。どーすりゃいいんだorz


 ・・・・・・とりあえず、こんな感じか?

#なでしこ3
C=1。新聞紙。
●新聞紙
 「しんぶんし」でCから「ん」を文字検索改。
 もしそれが0ならば、
   戻る。
 違えば、
   文字位置=それ
   文字位置を表示。 //「それ表示」だと、v3の場合の後の「それ」が「undefined」になっちゃう
   C=文字位置+1。
   新聞紙。
 ここまで。
ここまで。

#-----------------------------------------------
#文字列SでA文字目からBを検索する
#なでしこ1の「文字検索」互換っぽいの
●文字検索改(SでAからBを)
 検索対象=(Sの文字数)-A+1。 //Aの位置も検索対象に含める
 仮=SのAから検索対象を文字抜出。
 数=(仮でBを文字検索)
 もし、数=0ならば、数で戻る。
 違えば、数+A-1で戻る
ここまで。
#-----------------------------------------------

 タブン、合ってると思うんだけど・・・



 さてさて、次にやりたいことは、指定した文字が漢字かどうかを調べることなんだけど、「文字種類」の中に、漢字か判定は無いので(1にも無い)自前でなんとかしないない

 ユニコードのCJK統合漢字の中に、ふつーに使うほとんどの漢字が含まれているのですが、ウィキペディアさまによると、Unicode 11.0では次のようになってるそうです。

U+4E00~U+9FEA   CJK Unified Ideographs(CJK統合漢字)
U+F900~U+FAFF   CJK Compatibility Ideographs(CJK互換漢字)
U+3400~U+4DFF   CJK Unified Ideographs Extension A(CJK統合漢字拡張A)
U+20000~U+2A6FF  CJK Unified Ideographs Extension B(CJK統合漢字拡張B)
U+2A700~U+2B734  CJK Unified Ideographs Extension C(CJK統合漢字拡張C)
U+2B740~U+2B81F  CJK Unified Ideographs Extension D(CJK統合漢字拡張D)
U+2B820~U+2CEAF  CJK Unified Ideographs Extension E(CJK統合漢字拡張E)
U+2CEB0~U+2EBE0  CJK Unified Ideographs Extension F(CJK統合漢字拡張F)

https://ja.wikipedia.org/wiki/CJK%E7%B5%B1%E5%90%88%E6%BC%A2%E5%AD%97


 とゆうわけで、正規表現で、

「^[\u4E00-\u9FEA\uF900-\uFAFF\u3400-\u4DFF\u20000-\u2EBE0]」で正規表現マッチ

で行けるかと思ったら、行かなかった。

 5桁のユニコードは、なんでもサロゲートペアなるものの対応が必要ラシイ。

https://ja.wikipedia.org/wiki/Unicode#.E3.82.B5.E3.83.AD.E3.82.B2.E3.83.BC.E3.83.88.E3.83.9A.E3.82.A2

 よくわかんないケド、このとうりに計算してエンコードすればいいのだろう。

 あと、ここによると第2面のU+20000~U+2FFFFは漢字専用領域となっているようなので、少なくともこまでは将来的に拡張される可能性があると考えられるので、

[\uD840-\uD87F][\uDC00-\uDFFF]

 こんな感じ?

 CJK統合漢字も、ATOKさまの文字パレットを見るとU+9FFFまで範囲になっているから、キリよくこまで含めとく?

 あと、繰り返しの「々」と漢数字の「〇」も含めておきたい。

U+3005  々(CJKの記号及び句読点:繰返し記号)
U+3007  〇(CJKの記号及び句読点:漢数字ゼロ)

 「〇」は、丸「○」とは別ですよ~。毛筆書体などを適用すると、違いが顕著なのでご注意です。

 でっ、こうなった。

#-----------------------------------------------
#文字列Sの1文字目が漢字か判定
●漢字か判定(Sが|Sの|Sを)
  Sを「^[\u3005\u3007\u4E00-\u9FFF\uF900-\uFAFF\u3400-\u4DFF]|[\uD840-\uD87F][\uDC00-\uDFFF]」で正規表現マッチ。
  もしそれがnullならばいいえ戻る。
  違えばはい戻るここまで。
#-----------------------------------------------
#以下はテスト
「○」が漢字か判定して表示。   //0 丸
「〇」が漢字か判定して表示。   //1 漢数字のゼロ
「一」が漢字か判定して表示。   //1 CJK統合漢字
「1」が漢字か判定して表示。   //0
「豈」が漢字か判定して表示。   //1 CJK互換漢字
「㐀」が漢字か判定して表示。   //1 CJK統合漢字拡張A
「𠀀」が漢字か判定して表示。   //1 CJK統合漢字拡張B

 しかし、頑張って対応させたものの、果たして拡張部分は必要だったのか;

 見たこともないヤツばっかだ;;;

 して、扱おうとしてるテキストは青文庫のなので、文字コードはJIS X 0208 の範囲に限定されていて、それ以外のは註になってるんだよね。

 ウィキペディアさまによると、「IS X 0208のすべての漢字が、UCS/Unicodeの基本多言語面のいずれかの符号位置に対応する」・・・とゆうことらしいから、明らかにいらなかった気が(´・ω・`)

https://ja.wikipedia.org/wiki/JIS_X_0208#ISO/IEC_10646%E3%81%8A%E3%82%88%E3%81%B3Unicode

 まあ、他のことでも使うかもしないし、足りないよりかは網羅している方がいいとゆうことにしようそうしよう。



 んなこんなでやろうとしていたことは、折角なでしこさんがしゃべるようになったので、青文庫でも読み上げさせてみっかなとゆうことで、読み上げにルビを反映させることでした。

 何しろ、のまま読ますと「兎《と》に角《かく》」を「うさぎきごうときごうにかくきごうかくきごう」と読んじゃうんですからねヽ(;´Д`)ノ

 まず「《」を検索して、漢字か判定でルビの付いてる範囲を調べ、それとルビの記号「《》」を消せば(置換)ルビ部分だけが残るって寸法です。

 しかし・・・もはるかさんの読み上げ精度がひどい(「沢山」を「さわやま」と読んじゃうとか!(´д`;)上に、最近Fire7を手に入れたところ、標準でみずきさんがKindleを読み上げてくれるんで、もうなんだかな~;

 まあ、みずきさんもんなに上手に読んでくれるわけじゃないですけどねw

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

2018-10-11

はるかさんを連れてくる!

| 15:12

 さて、うちのお狐様は日本語が話せない問題ですが、前の記事でもちょっとんなようなことは書いていますが、いろいろ検索した結果、MicrosoftOfficeの入っていないWindows7標準では、日本語読み上げ用のエンジンが入っていないらしいことが分かりました。(Officeバージョンがあるっぽい)

 ですが、世の中には様々な裏技があるもので、結構無理矢理系で話せるようにすることが出来ました!

Microsoft Speech Platform を SAPI5 として使う」とゆう裏技です。

https://denspe.blog.fc2.com/blog-entry-116.html

 ここの記事を参考に、うちで出来るようになった手順を載せます。(win7 64bit版)

 てゆうか、ほぼ記事の通りなんだけどもさー。Yahoo!ジオシティーズまでもがサービス終了とか、世の中は全く油断がなりませんからねー。手元にメモっておかないと~・・・ってか、なでしこ3のお試しプログラム置き場をお引っ越ししなきゃだよ~ヽ(;´Д`)ノ


Microsoft Speech Platform 11をだうんろーどしてくる!

https://www.microsoft.com/en-us/download/details.aspx?id=27225

 「Download」ボタンを押して、「x86_SpeechPlatformRuntime\SpeechPlatformRuntime.msi」と「x64_SpeechPlatformRuntime\SpeechPlatformRuntime.msi」の二つをダウンロードします。

※32ビット版の人はx64不要です。64ビット版では、x64だけあれば、なでしこ3の「話す」命令で日本語が使えるようになることを確認していますが、x86も入れることで、なでしこ1でもスピーチAPIを使って日本語をしゃべらすことが出来るようになります。

 まあ、AquesTalkが入ってるから別にいいんだけど、なでしこに限らず32ビットのプログラムで使うには必要になるので、折角なら取りあえず入れておいた方が。


Microsoft Haruka 11をだうんろーどしてくる!

https://www.microsoft.com/en-us/download/details.aspx?id=27224

 「Download」ボタンを押すと、なんかいっぱい出てくるけど「MSSpeech_TTS_ja-JP_Haruka.msi」にチェックを入れてダウンロードします。

 これが、はるかさんです。


③いんすとーるする!

 ダウンロードした3つを全て、順にインストールします。

 英語だけど大丈夫(>_<)/ ふつーに次々行けました。


④レジストリを書き換える!

 これが曲者ですが、この記事のとうりなら、簡単にできました!

 ようするに「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech Server\v11.0\Voices\Tokens\TTS_MS_ja-JP_Haruka_11.0」の内容を「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ja-JP_Haruka_11.0」にっくりコピーするとゆうことなんですが・・・

 最初、なでしこでレジストリをコピーするの作ろうと思ったけど、どうも「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ja-JP_Haruka_11.0」への書き込みがうまく行かないでね(´・ω・`)

 なでしこ1は、64ビットキーにうまくアクセス出来ないんじゃないかという疑いが・・・


④-1 以下の内容を、「MSHaruka.reg」という名前で保存する(.regファイルなら名前は何でもいいけど) 場所もどこでも良いです。作業が終わったら消してしまってOKなので。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ja-JP_Haruka_11.0]
@="Microsoft Server Speech Text to Speech Voice (ja-JP, Haruka)"
"411"="Microsoft Server Speech Text to Speech Voice (ja-JP, Haruka)"
"CLSID"="{a12bdfa1-c3a1-48ea-8e3f-27945e16cf7e}"
"LangDataPath"="C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\Speech\\Tokens\\TTS_MS_ja-JP_Haruka_11.0\\MSTTSLocjaJP.dat"
"VoicePath"="C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\Speech\\Tokens\\TTS_MS_ja-JP_Haruka_11.0\\HarukaT"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ja-JP_Haruka_11.0\Attributes]
@=""
"Age"="Adult"
"AudioFormats"="18"
"Gender"="Female"
"Language"="411"
"Name"="Microsoft Server Speech Text to Speech Voice (ja-JP, Haruka)"
"Vendor"="Microsoft"
"Version"="11.0"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Speech\Voices\Tokens\TTS_MS_ja-JP_Haruka_11.0]
@="Microsoft Server Speech Text to Speech Voice (ja-JP, Haruka)"
"411"="Microsoft Server Speech Text to Speech Voice (ja-JP, Haruka)"
"CLSID"="{a12bdfa1-c3a1-48ea-8e3f-27945e16cf7e}"
"LangDataPath"="C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\Speech\\Tokens\\TTS_MS_ja-JP_Haruka_11.0\\MSTTSLocjaJP.dat"
"VoicePath"="C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\Speech\\Tokens\\TTS_MS_ja-JP_Haruka_11.0\\HarukaT"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Speech\Voices\Tokens\TTS_MS_ja-JP_Haruka_11.0\Attributes]
@=""
"Age"="Adult"
"AudioFormats"="18"
"Gender"="Female"
"Language"="411"
"Name"="Microsoft Server Speech Text to Speech Voice (ja-JP, Haruka)"
"Vendor"="Microsoft"
"Version"="11.0"

 元の記事では10.0の情報に、11.0への変更方法が追記されていますが、これは11.0に合わせて作成し直しているのでのまま使えます。

 32ビット版の人、64ビット版でx86は入れないいう人はWow6432Nodeのくだりは要らないので、下半分を消して下さい。


④-2 管理者権限で、「MSHaruka.reg」をダブルクリック(または右クリック→結合)して、結合する。


④-3 コントロールパネル→音声認識→音声合成→音声の選択で「Microsoft Server Speech Text to Speech Voice (ja-JP, Haruka)」を選択。


 これで、Firefoxでも「こんにちは」と言ってくれるようになりました\(^▽^)/

 しかし、はるかさんは「Google 日本語」よりも、日本語が下手だなぁ(^^;

 「生麦、生ゴメ、生卵」を「なまむぎ、せいごめ、なまたまご」って読んじゃうんですよ~w

 生米と書けば大丈夫ww

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

2018-10-09

win7のお狐様は日本語しゃべれない問題

| 12:13

 マイナビ連載37目は、「音声合成APIで時報アプリを作ろう」でした。

https://news.mynavi.jp/article/nadeshiko-37/

 新しく追加された「話す」命令のご紹介となっており、前の記事でよく分からんと書いた話者設定の仕方も解説されていました。

 の前に取りあえず、話者一覧取得。

話者一覧取得して反復
  F名前=対象["name"]
  F言語=対象["lang"]
  「{F名前}: {F言語}」を表示ここまで

 記事のコードのとうりです。

 なーるほどねぇ。話者一覧取得して表示するだけじゃダメだったんですね~。

 とゆうわけで、試してみると、Firefoxでは、

Microsoft Anna - English (United States): en-US

 一個しか出てきません。なるほど、やっぱりwin7のお狐様は英語しかしゃべれないっぽい。

 てゆうかアンナか。前男の声って書いたけど、女じゃん(爆)

 なんか、最初聞いた時、声のトーンが低かったから勘違いしたけど、何度もよくよく聞いてみたら女だったわw


 さて、一方のchromeさんですが、

Microsoft Anna - English (United States): en-US
Google Deutsch: de-DE
Google US English: en-US
Google UK English Female: en-GB
Google UK English Male: en-GB
Google español: es-ES
Google español de Estados Unidos: es-US
Google français: fr-FR
Google हिन्दी: hi-IN
Google Bahasa Indonesia: id-ID
Google italiano: it-IT
Google 日本語: ja-JP
Google 한국의: ko-KR
Google Nederlands: nl-NL
Google polski: pl-PL
Google português do Brasil: pt-BR
Google русский: ru-RU
Google 普通话(中国大陆): zh-CN
Google 粤語(香港): zh-HK
Google 國語(臺灣): zh-TW

 いっぱい出てきた!

 何語なのかすら分からんナゾ言語もあるよ~。

 で、話者設定をして中国語もしゃべってくれました!

 話者設定は、言語の指定でも名前の指定でもいけるようです。試しに、

 「Google US English」に話者設定。

 と、してみたら、アンナとは声が変わりました☆


 タブンだけど、Google Chromeでは、ぐーぐるさんで独自に各国語に対応した話者を用意してあるけれど、Firefoxは、Windows標準のものを使用するだけなんだね。

 win7にはアンナさんしかいなけど、win10には誰か日本人も入っているんだろう。

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

2018-10-04

なでしこ3がしゃべるようになったよ!

| 12:11

 まずは、なでしこがバージョンアップしています。

v3.0.52
・「ここから」「ここまで」命令へのエイリアス「---」や「←」を削除。
・HTML5の音声合成APIをサポート
・WebSocket(サーバ・クライアント)の実験的な実装
・なでしこ3標準エディタにlocalStorageへの自動保存機能を追加

v3.0.51
・『キー送信』命令の修正
 -『クリップボード』命令が動かない問題の修正
・代入的呼び出しの内部コードの仕様変更

v3.0.50
・「キー送信」「窓アクティブ」命令を追加(

 9月はとうとういっこも更新しないうちに10月になってしまった・・・

 それいうのも、キー送信がうまくいかんのよ。窓アクティブもね。

 なんかエラーいっぱいでるヽ(;´Д`)ノ

 マイナビの記事のとうりのコピペなのになー。なんでだ。

 winでこうゆうことするなら、なでしこ1を使うからいいんだけどもさ。


 それはさておき、です!

 なでしこがしゃべるようになってる!w(゜o゜)w

https://nadesi.com/doc3/index.php?plugin_browser%252F%E8%A9%B1

 ちなみにウチの環境だと、こんにちはと言ってくれるのは、Google Chromeさんだけです。

 Firefoxさんは、エラーも出ずうんともすんとも言わないので、なんでだ~と思っていたら、win7のお狐様は日本語がしゃべれないらしい? win10ならしゃべれるようになってるラシイのですが。

 ためしに、

「my name is nako!」と話す。

 としたところ、男の人の声で、英語で読み上げてくれました☆


 ちなみに、くろーむさんで英語を入れると、まいねーむいず……と、女の人の声で、平板な日本語読みをしてくれちゃうんですよね。これは、話者設定で変更したり出来そうに思われるんだけど、よく分からん(´・ω・`)

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