Google Chromeの合成音声を試してみた

Macではsayコマンドでお馴染みの合成音声が、Google Chromeでも使えるようになったらしいので試してみた。Webページ経由ではなく、Google ChromeJavaScriptコンソールを用いた。

サンプルコードにある通り、message と voice を定義する必要がある。

https://gist.github.com/laclefyoshi/8627514

voice一覧の後半に、AlexからZavoxはMacの読み上げ (say)で使われる声と同じものが現れた。おそらく、Macに (日本語用音声である) KyokoさんやOtoyaくんをインストールすれば、ここに現れると思われる。

https://gist.github.com/laclefyoshi/8627542

messageには最低限、テキストとそれに対応するvoice、言語を設定する必要がある。

> msg.text = "JavaScript (JS) is a dynamic computer programming language."
> msg.voice = voices[0]
> msg.lang = voices[0].lang  # "en-US"

最後に、再生。

> window.speechSynthesis.speak(msg)

英語音声で、英語テキスト。

括弧など記号は発音されていない。読み上げさせる際に必要になる状況もありえるだろうが、発音させることはできるのだろうか。

次に、日本語音声で、英語テキスト。

> msg.text = "JavaScript (JS) is a dynamic computer programming language."
> msg.voice = voices[7]
> msg.lang = voices[7].lang  # "ja-JP"

若干悪意すら感じる日本人 (カタカナっぽい) 英語になった。

中国語音声で、英語テキスト。

> msg.text = "JavaScript (JS) is a dynamic computer programming language."
> msg.voice = voices[9]
> msg.lang = voices[9].lang  # "zh-CN"

ピンインとして解釈されたようだ。

最後に、日本語音声で、日本語テキスト。

> msg.text = "JavaScript(ジャヴァスクリプト)とは、プログラミング言語のひとつである。"
> msg.voice = voices[7]
> msg.lang = voices[7].lang

??

「パーセントユー」と言っていることから、escapeされた文字列を読み上げているようだ。しかも、全部読み切れずに途中で切れてしまった。

> escape("JavaScript(ジャヴァスクリプト)とは、プログラミング言語のひとつである。")
"JavaScript%uFF08%u30B8%u30E3%u30F4%u30A1%u30B9%u30AF%u30EA%u30D7%u30C8%uFF09%u3068%u306F%u3001%u30D7%u30ED%u30B0%u30E9%u30DF%u30F3%u30B0%u8A00%u8A9E%u306E%u3072%u3068%u3064%u3067%u3042%u308B%u3002"

ならばと、unescape("日本語")をmsg.textに与えてみたが、ダメだった。コンソールを使っているのが悪いのかと、Webページに書いてやってみたが、やはりescapeされた文字列を読んでしまう。この問題の解決は、今後の課題とする。

ところで、よく聞いてみると、30A1を「さんじゅうえーいち」と読んでいたり、3068を「さんぜんろくじゅうはち」と読んでいたり、連続する数字の読みをちゃんと判別していることが分かる。

音声認識よりは目立たない地味なAPIだが、今後、ボーカロイド並みの実装になれば楽しいだろうと思う (すでにpitchやrateなどそれっぽい属性が付いているが、活用できなかった)。

本についていたDVDをMacで見ようとしたが大変だった

ハードカバー本にDVDが付いていた。

テレビに繋ぐDVDプレイヤはオークションで売ってしまったし、Mac miniにはDVDドライブがついていないので、WindowsノートPC時代に活用していたドライブ (USB接続) を持ってきて、見ようとした。が、マウントされたものの、DVDプレイヤが認識しない。Finderでマウント先を開こうとしても閉じてしまう。

ターミナルで見ると、マウント先ディレクトリ名が文字化けしていた。

cd とか ls はできるらしいことがわかったので、VIDEO_TS ディレクトリをまるごとデスクトップに cp した。HandBrakeでVIDEO_TSディレクトリを指定し、mp4に変換できた。

30分ほどの動画で、約300MBになった。この程度なら、オンラインストレージに置くとかBitTorrentで共有してダウンロードさせる形式にして欲しいと思うが、そうすると今度はテレビで見るための作業が大変か (うちのBRAVIAならUSBメモリを挿せば見れるが、そういう機能が付いていないテレビもあるだろう)。

7分の運動を続けている

去年から体幹トレーニングを続けたりしたので、今年の目標には毎日なにか意識して運動することを掲げている。

継続してできる運動として、何がいいだろうかとWebを見たら、7分の運動で体全体を鍛えられるというのがNYTimesで取り上げられていたりしていたのを見つけた。7分とあり、道具を必要とするものではなかったので (椅子を必要とするものが2つあるが)、始めやすいし、続けやすいだろうと思い、正月から今まで夕食前にやっている。

ただタイマで運動30秒/休憩10秒を回すのも退屈だったので、良いモバイルアプリは無いかと思い探してみて、以下にリスト化した。理想としてはいっしょにとれーにんぐのようなものを探していたが、残念ながら無かった。

タイトル URL 運動時間変更 リピート シャッフル 運動説明 記録
7 Minute Workout Google play ◯ (10 ~ 60 秒) ◯ (1 ~ 6) × × ×
Scientific 7 Minute Workout Google play × × × ×
Workout (7 Minute Body Fitness Exercise) iTunes × ◯ (1 ~ 8) △ (ドット絵が動く) △ (カレンダーAPIと連携)
7-Minute Workout iTunes ◯ (5 ~ 50 秒) ◯ (1 ~ 5) × × ×
7 Minute Workout Challenge*1 iTunes ◯ (10 ~ 90 秒) ◯ (1 ~ 9、運動中に変更可能) ◯ (運動中に動画、テキストに切り替え可能)
The Johnson & Johnson Official 7 Minute Workout App iTunes △ (基本以外のWorkoutを含むライブラリから選択、自分で構成できる) × ◯ (全てに動画あり) ×

今は7 Minute Workout Challengeを常用している*2。慣れてきたら、The Johnson & Johnson Official 7 Minute Workout App (今月下旬にAndroid版も公開されるそうだ) も併用して、運動をカスタマイズしてみようかなと思っている。そうなると、もう7分運動ではなくなるわけだが。

Liftにも「7 minute workout」という項目があったので、運動が終わったらタップすることにした。

*1:Apple Storeアプリから無料ダウンロードコードを取得できる (おそらく期間限定で)。

*2:日本語音声は留学生がよく発音するような日本語で違和感があったので、英語音声にしている

リスニング勉強用プレイヤ

Podcastのオーディオ再生が可能か (必須)、オーディオ埋め込みテキストの表示が可能か、再生速度変更ができるか、A-B区間リピートができるか、を評価基準にアプリの選出を行った。当然、この機能を持つアプリ全ては見ていない。検索結果ランキング上位であったり、Google検索してブログ等で紹介されていたものを見ている。

iPhoneアプリ

語学プレーヤー (NHK出版)

Podcastの音声/テキスト読み込み&表示可。

再生速度変更可能 (50% 〜 300%、指定できる速度が固定されている)。

A-Bリピート区間指定は、Aから2秒以上後ろのシーク位置をBに指定できるという制限あり。

2013年8月以降更新されておらず、UIはiOS7に似合わない古さがある。時々落ちる不具合 (オーディオ再生中にプレイリストに戻る → オーディオを選択、等で再現する) があり、常用は厳しいかもしれない。

速聴Music

Podcastの音声/テキスト読み込み&表示可。

再生速度変更可能 (10% 〜 300%、1%区切り)。「-」「+」のボタンで10%ずつ変更できるので、1オーディオファイルで頻繁に再生速度を調整する場合に適している。

A-B区間リピート不可。

有料 (100円)。

聞々ハヤえもん

Podcastの音声読み込み可。テキスト表示は不可。

再生速度変更可能 (10% 〜 400%、0.1%区切り)。UIが独特。速度と音程を同時に変更する場合2次元プロットでアナログ指定、またはそれぞれをドラムで指定する。

A-Bリピート区間指定は簡単 (波形表示あり)。

広告が出る。

Androidアプリ

Audio Speed Changer

Androidメディアライブラリか、ファイルを直接指定して、再生するオーディオを選択する。テキスト表示不可。

再生速度変更可能 (50% 〜 200% または 25% 〜 400%、0.5%区切り)。

A-Bリピート区間指定は、表示波形上での指定か、時間指定ができる。

Pro版へのリンクがあるのだが有効ではない。削除されたらしい。

xSpeedPlayer

ファイルを直接指定して、再生するオーディオを選択する。テキスト表示不可。

再生速度変更可能 (25% 〜 400%、指定できる速度が固定されている)。

A-Bリピート区間指定はシークバーで指定するか、オーディオ再生中にA/Bボタンをタップする。ちょっと使いにくい (波形表示無し)。

再生速度を変更した再生の他に、wav/mp3出力があるのが特徴。

広告が出る。

語学プレーヤー (NHK出版)

iPhoneアプリにもある同名アプリのAndroid版だが、再生速度変更不可。

ファイルを直接指定して、再生するオーディオを選択する。テキスト表示不可。

A-Bリピート区間指定はxSpeedPlayerと同様ちょっと使いにくい (波形表示なし)。

まとめ

iPhoneアプリなら、再生速度変更のみなら速聴Music。A-B区間リピートを使うなら、アップデートを期待しながら、語学プレーヤー (NHK出版)。

Androidアプリなら、Audio Speed Changer。どのアプリも、iPhoneアプリと比較し、テキスト表示が出来ない、プレイリスト作成機能がない等の機能面、UIがいまいちだと思った (チャンスだとも言える)。

『ゼロ・グラビティ』を観た

今日火事で騒がしかった有楽町の丸の内ルーブルで、元日に初詣も行かず3D日本語字幕で。有楽町駅の改札外、線路下の通路端に、ビックカメラの福袋の紙袋が捨てられ積み上がっていて、危ないなあと思っていた (正月明けまでごみ収集は無かっただろうし)。

原題は『GRAVITY』なのだが、邦題の「ゼロ」は余分だなあと思った。ゼロだったのはせいぜい最初のところだけで、後は、ロープだったり、生への執着だったり、ずっと重力を感じていた。重力というより万有引力か。ちなみにジャンルはサスペンスだと思う。息苦しさとかラストの重さとか、4Dかと思うくらい伝わって、映画館で観て良かったと思う。

中国製の天宫から神舟に乗った時の、漢字オンリーの操作パネル (とついでに浮かぶピンポンラケットとか布袋さん (弥勒佛像というらしい)) に爆笑しかけたが、そういう危機感を持っている人がシーンを書いているのかなあと思ったりした。中国語大事。

scriptはまだ公開されていないらしい。ところで、Wikipedia日本語版英語版もネタバレしかしてない悪記事。ここまで書く必要があったのだろうか。

シェーバを買い替えた

ナショナル リニアスムーサー3D ES8003 (2001年発売) からパナソニック ラムダッシュ ES-ST25 (2013年発売) へ。

前のものはずいぶん長く使っていたが、外刃も内刃も交換することなく毎日使い、水洗いと充電は週1程度。髭が剃られる度に飛び散るようになり、流石にもう駄目だろこれはと思い、買い替えた。ちなみに髭はあまり濃くない。

水洗いに対応していた方がいい、くらいの気持ちでビックカメラに見に行ったら、専用洗浄液を装着するゴツいステーション付きシェーバなどがあり、隔世の感を禁じ得なかった。結局、水道で洗えることと値段を見て、安かったものを選んだ (7280円の10%ポイント付与だから、価格.COMの最安とどっこいどっこい)。

さっそく使ってみて、グリップ感とスイッチがいかにも現代風で、2度肌を撫でただけでほぼ綺麗に剃れ (髭のじょりじょり感が無くなり) 感動した。充電スタンドはシェーバを立てかけて使うのだが、立てかけた両肩辺りに充電端子があり、しっかり立てかける必要があるのと、スタンドがプラスチック製で壊れそうで怖いのが残念だった。もう少し値段が高い4枚刃のパナソニック ラムダッシュ ES-SF21はその辺りも差別化されている。

水洗いはスリットを開き、水道水を通すだけでもできるので便利だった。ただし、ちゃんと洗うなら刃を外してブラシとか、ハンドソープなどを載せたりとか、した方がいいらしい。

外刃が壊れ易いという意見がちらほらあるので、注意して使いたい (また10年使えると嬉しい)。

ソフトウェア無線に入門してみた

aitendoで売っているワンセグチューナ:ワンセグRX DVB-T+DAB+FM R820T高性能受信機 - aitendoを使えば簡単だと知り、さっそく買ってきた。すでに店頭の価格表示は全て税抜き表示になっていて、レジで税込価格を伝えられて、ああそうかと思ったりした。

GNU radioとかrtl-sdrとか必要なツールをhomebrew経由でビルドして使う方法もあるようなのだが、どう見てもpainfulだったので、GqrxというSDR関連バイナリが同梱されていてかつ素敵なUIが搭載されているアプリケーションを使うことにした。

Gqrxの使い方は簡単で、デバイスを選択 → 周波数を合わせる → Gainを調整、とするだけで、東京消防の無線が聞こえた。ちなみに、チューナに付属しているアンテナは短すぎて室内ではどうやっても受信できないだろうと思い、カーテンレールにワニ口クリップ付きのコードを繋ぎ、アンテナに噛ませている。

FMラジオがよく聞こえた。

受信したい周波数と微妙にずれた位置に山がくるのは、チューナの水晶振動子の質が低いかららしく、換装しているブログを幾つか見つけた。もっと良いアンテナを持ってくれば、もっと良く聞こえるのだろう。という具合に、どこまでのめり込むか (お金を費やすか) はよく考えよう。ソフトウェア制御なので、初期投資が少なく済んだのは良い。

ラジオライフ周波数帳は、図書館に置いていないらしく、どうしようかしら。最近は、警察とか消防とかデジタル化していて、デコードが難しいという情報も見たことがある。以下、Webで拾った周波数メモ (東京)。

  • 携帯A波: 154.29
  • 携帯B波: 152.57
  • 共通A波: 466.5000
  • 共通B波: 466.4500
  • 共通: 151.75 (?)
  • 受令: 149.71 (?)