かならずお読みください注意事項

どうもこれは Chrome ではできないみたいだ

オフラインで web speech API を使って任意文字列の読み上げ

web speech と offline app が衝突した

Web Speech API と Offline Web App が PWA の前でぶつかった

-1 はじめのはじめに

このページでは Web Speech API を PWA、Offline Web App 環境で使用すると正常に発声しないことがあることについて記述しています。この不具合はWeb文字盤4 オフラインWebアプリへの道を19年7月26日に公開した時点では既に修正され、問題なく動作することが確認されています。

本来なら正確さに問題のあるページは修正あるいは削除すべきとは思われますが、いち早くEdgeで対応したMSにたいして、GoogleはChromeの対応に苦労していること、またWeb Speech API の開発では、アメリカ英語女声の開発を先行させほかの言語は後回しになったらしいことなど興味ある内容も含まれています。

また、「別の方法を検討したら大元は同じだった」とか、「どうも納得いかない不思議な現象は近々解決される(こともある)ので待つのもいい」など後世に残したい?有用な教訓も含まれているようですので残すことにしました。(2020/04/07 追記)

0 はじめに

こんなことができました、あんなこともできました。このサイトではそんなご紹介をいろいろやっています。しかし実はうまくいかないことも少なくなりません。それどころか小さな試みも含めると取り組みの多くが失敗に終わっています。つまり多くの失敗にもめげずそれでも性懲りもなく次々とチャレンジしているという方が現実に近いです。我ながら実にあきらめの悪い人間です。

今回はもう少しでできるかなと思ったけれど結局できなかったというお話をご紹介します。

1 エンチャント文字盤の合成音声

コミュニケーションエイドを開発している こちらのページ では、作成した文章を読み上げるのに合成音声を使っています。誰でも無料で自由に使える方法でここまで流暢な日本語が発声できます。(日本語以外の多くの言葉も話せます。試す場合は、Chrome または Edge をご利用ください。)

このほか、「あ」のボタンを押した時に「あ」と発声しています。これはボタンの押しまちがいを減らす目的で古くから使われている方法です。この声は合成音声でも録音した音声ファイルの再生でもまたはその他電子音などでも効果が期待できます。しかし任意の文章を読み上げる場合に録音した五十音を一音づつ連続して再生すると抑揚のない昔のSF映画のようになってしまします。「ワレワレハウチュウジンダ」今では Text To Speech と呼ばれる文字列読み上げ機能を使うのが普通です。エンチャント文字盤ではWebSpeechAPIを使って合成音声で発声しています。これまで色々とサンプルを作って来ましたので今では何カ国語も自由に発声することができるようになりました。(しかし残念なことに私自身はできません)

2 オフラインWebアプリ

また こちらのページ では、インターネット通信なし(これをオフラインといいます)でコミュニケーションエイドを動かす取り組みをしています。正確にはオンラインのときに必要なデータを保存しておき、オフラインの時にそれを使ってアプリをうごかす仕組みです。これにはサービスワーカという技術を使っています。

エンチャント文字盤はインターネット経由で様々なアプリを提供しています。近年インターネットに接続できる場所が増えていますので将来的にはこのような方法が主流になるでしょう。しかし今のところ訪問したご家庭にインターネット環境がないこともよくあります。このような理由でデモや試用ができないようでは困ります。だからといってたくさんのサンプル機を取り揃えて持ち運ぶのも現実的ではありません。訪問と調整と試用を長期に渡っておこなうのも『丁寧な仕事』といえば聞こえはいいですが、どの人にもコミュニケーション以外の生活もありますのであまりお邪魔になってはいけません。またテキパキとできるようにしないと患者さんもご家族も支援者もお互い苦労が絶えません。とにかく使い始めて生活の場面で軌道にのせる工夫が必要です。

このほか普段は家庭でオンラインで使用し、外出や交通機関利用の際などオフラインのときも使用可能になります。さらにオフラインなら通信コストを節約できます。以上のような目的でオフラインWebアプリの開発を進めています。現在はバージョンアップしたときに古いキャッシュデータを消去する仕組みを作っています。こちらもかなりできるようになりました。

3 次のチャレンジ ところが

合成音声とオフラインWebアプリのそれぞれうまくできましたので、オフラインで合成音声を用いて文章の読み上げができるように、つまり両方同時にできるようにすることを次の目標にしました。

こちら が試作品です。 Google Chrome または Micrsoft Edge でお試しください。まずリンクをクリックしてページを開きます。そこでブックマークを作ったあとネット回線を止めます。その後先ほどのブックマークを開いてください。回線が止まっていてもページが開きます。

まず Micrsoft Edge をお使いの場合は、特に問題なく動作します。オンラインでもオフラインでも。計画通りの動きをします。ただし読み上げ音声は Microsoft 純正の女性の声になります。

次に、Google Chrome で試します。オンラインでは問題なく動作します。しかしオフラインになると不思議な現象が発生します。まずひらがなとカタカナは全然声が出ません。また数字は何故か女性の声で英語読みします。つまりネット通信が途切れると、文書読み上げ機能(TextToSpeech)のアメリカ英語女声読み上げはできるのに日本語読み上げができなくなります。これは困った!どこかでミスしたのか?(ホント青くなりました。@_@;)

さらに試してみるとフランス語もドイツ語もアメリカ英語男声も日本語と同様にオフラインでは発声しないことがわかりました。つまりアメリカ英語女声以外の読み上げをするにはその都度 どこかに通信する必要があるようです。 (誰が何のためにこんなことをしているのでしょう?まあGoogleらしいといえばまあそのとおりです。さらに WebSpeechAPI も OfflineWebApp も Google の影響の大きいお仕事なんですが、組織が大きいからといってもこんなところで衝突していては困ります。)

4 WebSpeechAPI 以外の方法を探す

ここで諦めるとWindows10+Edge ユーザ以外の人は困ります。これでは癪に障るので、その他のjavascriptで動作するテキスト読み上げの方法を改めて探してみました。しかし現在ではWebSpeechAPI以外の方法はほとんど見つかりません。10年以上前にspeak.jsというものがあったらしいのですが今ではなくなってしまったようです。そんななか、RespensiveVoice.js が見つかりました。サンプルを聞いて見るとWebSpeechAPIと甲乙つけがたい品質で声もよく似ています。(似ているにはそれなりの事情がありました。それは後ほど、) そこでRespensiveVoice.jsを使って試作品を作り試したところ、やはりオフラインでは日本語の発声できませんでした。さらにRespensiveVoice.jsのサイトをしらべるとFAQ(よくある質問コーナー)にofflineではできないと記述が見つかりました。これでもあきらめずさらに試作品を作って試しましたがだめでした。しかも、Chromeの DevToolsを使うと、RespensiveVoice.jsの動作に合わせて、WebSpeechAPIのコマンドが動いていることがわかりました。つまりRespensiveVoice.jsはWebSpeechAPIを基本に改造したソフトだったのです。道理で似ているわけです。 しぶとく粘ってみましたが、それもここでおしまいにすることにしました。

5 それなら次の手を考える

Windows10とEdge をお使いの人たち以外の、そのほかのWindowsやリンゴのパソコンやlinuxやタブレットやスマホをお使いの人たちのために、Google Chrome でできることを使って役に立つようにしてみましょう。ここで日本語による文書読み上げ機能とオフラインWebアプリ機能の両立が難しいことがわかりました。そこで、文章読み上げ機能があるがオフラインでは使えないアプリと文書読み上げ機能はついていないが、オンオフ両方で使えるアプリの2種類を作ることにしました。無闇にアプリの種類を増やすことは良くないのですがこの際仕方ありません。

サンプル 文章読み上げ機能付きオンライン利用可能、オフライン利用不可

サンプル 文章読み上げ機能なしオンラインとオフライン利用可能(firefox でも使用可能です。)

6 まとめ

今回はオフライン技術と文章読み上げ技術の両方をつかって日本語コミュニケーションエイドを作ることを目標としました。しかし残念なことに、Windows10+Edge 以外ではこの3つの条件を満足することは現状では簡単にはできないことがわかりました。また解決にはまだまだいくらか時間がかかりそうですが、問題点は明らかでその他多くの国のみなさんも同じ問題でお困りでしょうから意外と早い時期の解決が期待できるかもしれません。

しかしそれを待っているだけではいけませんので、オフラインでは使用できないが読み上げ機能のあるアプリとオフラインでも使用できるが読み上げ機能のないアプリの2種類を制作することにしました。

これによりより幅広いコミュニケーション支援につながることを期待します。

同様のトラブルで困っている人たちとこれからこれに取り組み人たちのためにこの文章を作成しました。(←これは負け惜しみです。ホントくやしいです。)

参考URL


2019/2/15 公開
2020/04/07 追記

研究企画課リハ工学科にもどる