NetBSD上のFirefoxで、text-to-speechを試す

この記事は、NetBSD Advent Calendar 2023の1日目の記事です。

はじめに

最近のMozilla Firefoxには、text-to-speech機能を利用するための仕組みが組み込まれています。 しかし、Firefox自体がテキストの内容を発音する訳ではなく、speech-dispatcher経由でFestivalというtext-to-speechエンジンを利用します。 NetBSDでも、pkgsrcを使ってFirefoxやspeech-dispatcher、Festivalをインストールし、設定することで、この機能を利用できます。 ですが、音声の品質は良くないようです。 今回は英語のみ発音させることを考えます。

Firefoxのインストール

現在のpkgsrc/www/firefoxのバージョンは120.0です。 既定値ではspeech-dispatcherを使うオプションは有効化されていません。 今回紹介する手順を実施しておかないと、text-to-speechが使えないという警告が頻繁に表示されることがあるので、speech-dispatcherを使うオプションはtext-to-speech機能を利用したい人だけが有効化するのが良いと思います。

以下のように/etc/mk.confに記載して、speech-dispatcherを利用できるFirefoxをビルドできるようにします。

# vi /etc/mk.con
PKG_OPTIONS.firefox=speechd

これを設定した上で、pkgsrc/www/firefoxをビルドし、インストールします。

# cd /usr/pkgsrc/www/firefox
# make install

speech-dispatcherは、pkgsrc/audio/speech-dispatcherにありますが、自動的にインストールされます。

Festivalのインストール

Festivalは本体であるpkgsrc/audio/festivalだけではなく、発音データは音声データも必要です。 pkgsrcでインストールする場合には、以下の4つのパッケージをインストールすれば、Festival本体も含め必要なものは全てインストールできます。

  • pkgsrc/audio/festvox-kal16
  • pkgsrc/audio/festvox-ked16
  • pkgsrc/audio/festvox-rab16
  • pkgsrc/audio/festival-freebsoft-utils

以下のように操作すれば良いでしょう。

# cd /usr/pkgsrc/audio/festvox-kal16
# make install
# cd /usr/pkgsrc/audio/festvox-ked16
# make install
# cd /usr/pkgsrc/audio/festvox-rab16
# make install
# cd /usr/pkgsrc/audio/festival-freebsoft-utils
# make install

これにより、3つの音声を選択することができるようになります。 いずれもあまり質は良くないのですが‥、

speech-dispatcherの設定

speech-dispatcherは、標準ではespeak-ngを使うような設定ファイルになっています。 今回はFestivalを使いますので、そのように指定して行きます。 /usr/pkg/etc/speech-dispatcher/speechd.confに、以下のようなパッチを適用すれば良いでしょう。

--- /usr/pkg/share/examples/speech-dispatcher/speechd.conf	2023-11-18 05:59:28.000000000 +0900
+++ /usr/pkg/etc/speech-dispatcher/speechd.conf	2023-12-01 12:33:15.988361377 +0900
@@ -114,6 +114,7 @@
 # configuration.
 
 # DefaultLanguage "en-US"
+DefaultLanguage "en-US"
 
 
 # ----- MESSAGE DISPATCHING CONTROL -----
@@ -255,7 +256,7 @@
 
 #AddModule "espeak"                   "sd_espeak"    "espeak.conf"
 #AddModule "espeak-ng"                "sd_espeak-ng" "espeak-ng.conf"
-#AddModule "festival"                 "sd_festival"  "festival.conf"
+AddModule "festival"                 "sd_festival"  "festival.conf"
 #AddModule "flite"                    "sd_flite"     "flite.conf"
 #AddModule "ivona"                    "sd_ivona"     "ivona.conf"
 #AddModule "pico"                     "sd_pico"      "pico.conf"
@@ -287,7 +288,8 @@
 # The DefaultModule selects which output module is the default.  You
 # must use one of the names of the modules loaded with AddModule.
 
-DefaultModule espeak-ng
+#DefaultModule espeak-ng
+DefaultModule festival
 
 # The LanguageDefaultModule selects which output modules are prefered
 # for specified languages.
@@ -295,6 +297,7 @@
 #LanguageDefaultModule "en"  "espeak"
 #LanguageDefaultModule "cs"  "festival"
 #LanguageDefaultModule "es"  "festival"
+LanguageDefaultModule "en"  "festival"
 
 # -----CLIENT SPECIFIC CONFIGURATION-----
 

起動させる

Firefoxを起動させる前に、Festivalサーバーを起動しておく必要があります。 Festivalサーバーは、/etc/rc.d以下のスクリプトで起動させるのではなく、自分で起動させる必要があります。

$ festival --server &

続いて、Firefoxも起動させます。

$ firefox &

テキストを読ませる

テキストを読ませるには、リーダービュー機能が利用できるウェブページである必要があります。 例えば、https://edition.cnn.com/の個別の記事であれば、リーダービューを有効にできます。 アドレス欄の右端に下図のようなアイコンが表示されていれば、リーダービューを利用できるウェブページです。 これをクリックすると、リーダービュー画面に移動することができます。

リーダービュー画面では左上に、下図のようなコンソールが表示されています。 ヘッドホンアイコンをクリックすると、音声や再生速度の選択、再生・停止の指示のできるポップアップもできます。

macOS環境なしで古いMacにmacOS High SierraをインストールするUSBスティックを作成する

iPhoneから写真を大量に取り出すためだけにMac mini mid2011 (Macmini5,1)を維持している。 当然最新のmacOSであるmacOS Sonomaが利用できる訳ではない。 サポートされているのは、macOS High Sierraが最後である。

トラブルがあってMac mini mid2011が起動しなくなってしまった。 そこでインターネットリカバリーでmacOS High Sierraをインストールしようとしたのだが、復元サーバーに接続できないとのことでインターネットリカバリーはできなかった。 出荷時にインストールされていたMac OS X Lionも同様にインストールできない。 おそらく、既にインターネットリカバリーでmacOS High Sierra以前をインストールすることはできなくなっているのだろう。 しかし、私はこのMac mini mid2011しかMacは持っていない。手元にある機材のみでmacOS High Sierraを再インストールすることができたので、書いておく。

macOS Sierraのインストーラーを入手する

macOS Sierraのインストーラーとは言っても、DVD-RやUSBスティックに書き込めるイメージファイルではない。 あくまでmacOS上で実行するためのアプリケーションである。これは.dmgファイルでダウンロードできる。 なぜmacOS Sierraなのかと言うと、.dmg形式でダウンロードできるもののうちインターネットリカバリーのターミナル上でインストーラーUSBスティックを作れる最新のものだからである。

ダウンロードは、AppleのウェブページmacOS をダウンロードしてインストールする方法 (HT211683)からダウンロードできる。 「Web ブラウザを使う」の部分の、「Sierra 10.12」からInstallOS.dmgをダウンロードすれば良い。

このInstallOS.dmgをWindowsの7-Zip 23.01で展開する。その中に、Install OSディレクトリーの中にあるInstallOS.pkgが目的としているインストーラーである。

macOS Sierraのインストーラーを展開する

私の持っているmacOSの環境というと、インターネットリカバリー画面から使えるターミナルだけなので、ここで作業できるように考える。 Windows上でUSBスティックをexFATでフォーマットし、そこにInstallOS.pkgファイルをコピーする。

Mac mini mid2011に接続したキーボードで、WindowsキーとAltキーとRキーを同時に押したまま電源を投入すると、インターネットリカバリーの画面になる。これは、macOS High Sierraのリカバリー画面であるはずである。 ここで、インストールする内蔵ストレージの設定と、インストール用のUSBスティックの作成を行う。

内蔵ストレージの設定として、HFS+のパーティションを作成する。macOS SierraはAPFSを扱えないので、macOS High Sierraのリカバリー画面でAPFS関係は全て消して、HFS+だけの環境にしておく必要がある。 ディスクユーティリティーで全て消して、HFS+のパーティションのみ作成すれば良い。

ここで、exFATでフォーマットし、InstallOS.pkgを格納したUSBスティックを接続する。 私の場合には、/Volumes/Untitledにマウントされた。 更にインストーラーにするUSBスティックも接続する。これは/Volumes/32GBにマウントされた。 インストーラーにするUSBスティックがマウントされない場合には、ディスクユーティリティーでApple partitioningのHFS+のパーティションを作っておけば間違いないだろう。 以下のように実行して、USBスティックからインストーラーを起動できるようにする。

# cd /Volumes/Untitled
# pkgutil --expand-full InstallOS.pkg OSInstaller
# cd OSInstaller/InstallOS.pkg
# mv InstallESD.dmg Payload/Install\ macOS\ Sierra.app/Contents/SharedSupport
# plutil -replace CFBundleShortVersionString -string "12.6.03" Payload/Install\ macOS\ Sierra.app/Contents/Info.plist
# cd Payload/Install\ macOS\ Sierra.app/Contents/Resources
# ./createinstallmedia --volume /Volumes/32GB --applicationpath /Volumes/Untitled/OSInstaller/InstallOS.pkg/Payload/Install\ macOS\ Sierra.app

ここで、2行目から4行目は、OpenCoreのLegacy macOS: Offline Methodのページを参照した。

ここで、5行目は、qiitaの「macOS Sierraのインストール 用 USBメモリ作成方法の落とし穴」のページを参照した。

macOS Sierraをインストールする

Altキーを押しながらMac mini mid2011を起動させると、起動するデバイスやパーティションを選択できる。そこで「Install macOS Sierra」を選択する。 念のためターミナルで以下のように実行して時刻を合わせておいた上でインストールを継続する。

# ntpdate time.apple.com

今回作成したインストーラーUSBスティックでは、GUIでインストールしようとすると、整合性に問題があると言われてインストールをすることができない。 コマンドラインでインストールすればそのようなエラーにはならないので、以下のように実行してインストールする。 内蔵ストレージが/Volumes/macOSにマウントされている。

# installer -pkg /Volumes/Mac\ OS\ X\ Install\ DVD/Packages/OSInstall.mpkg -target /Volumes/macOS

これで、macOS Sierraをインストールできる。その後に、macOS Sierra上でmacOS High SierraのインストーラーUSBスティックを作成し、それを使ってクリーンインストールすれば良い。

2023年10月10日まで有効なWindows 11 development environmentで、ファイルシステムとしてReFSが使えるようになっていた

Windows 11 development environmentというのがあって、各種ハイパーバイザー用に仮想マシンがインポートできるようなファイルが配布されている。 私はVirtualBox用のものを利用しているが、Hyper-V (V2)の方が良いのかもしれない。

ここで利用できるWindowsは約3カ月しかライセンスがないのだが、実態としてはWindows 11 Enterprise Evaluation64ビット版22H2だった。 そもそもWindows 11 Enterprise Evaluation自体が3カ月間利用できるので、実機にインストールしても、Windows 11を利用するという視点では 変わらないかもしれない。 各種開発環境がインストール済みであるのは、宣伝文句の通り利点かもしれない。 ちなみに、ディスクの空き容量は最低でも70GB必要と記載されているが、VirtualBoxの場合には、実際には40GB程度空いていれば利用開始することはできる。

この環境はWindows 11 Enterpriseであるということは、ファイルシステムとしてReFSを利用できるのではないかと考えて試してみると、 確かにReFSが利用できた。

第7世代Amazon Kindleと第10世代Amazon Kindle Fire HD 8で、EPUB3な電子書籍を読む

少なくとも2023年8月1日の時点では、Amazon Kindle (einkな画面のタブレット)や、FireタブレットでEPUB3な電子書籍を読むことができる。

私の持っているEPUB3のファイルの容量は大きいので、電子メールで送って読めるようにするのは難しい。 調べてみると、Send to Kindleというウェブページからアップロードできるようになっていた。 最大200MBまでアップロードできるそうだ。

アップロードしても、クラウドリーダーでは読むことはできなかった。

Amazon FireOS用のMicrosoft OneNoteアプリで、言語ファイルがダウンロードできるようになっていた

しばらく前に、第10世代のAmazon Kindle Fire HD 8というタブレットを購入していた。 電子書籍を読むのに使っている訳だが、Amazonアプリストアというものも用意されていて、 Androidアプリをインストールできる。 まあ、十分なものはないので、F-Droidでもインストールしないと困ってしまうような気がする。

しかし、Microsoft OfficeとOneNoteのアプリはマイクロソフトから提供されていて、 OneNoteを少し大きな画面のタブレットで使うとどうなるのかは気になっていた。 しかし、インストールすると厳密には覚えていないが、言語ファイルがダウンロードできないと言う エラーが起きていた。それでも、日本語のユーザーインターフェイスにはなっていたように思うが。

先週くらいに試したら、無事に言語ファイルがダウンロードでき、日本語フォントもダウンロードしたようだった。 OneNoteはあまり私のニーズには合わなかったように思うが、正常に使えるようになったのは良かった。

TOPPERSでメーリングリストが廃止されていた

users@toppers.jpというメーリングリストを購読していたのだが、 2023年7月7日に廃止されていた。 移行先はGitHub Discussionsになるそうだ。 電子メールが流行っていないのは確かな気がするが、電子メールほどオープンな規格もない訳で、簡単には同じ決断はできない気がする。

ヘッドホンJVC STEREO HEADPHONES HA-RZ710のイヤークッションを交換する

JVC HA-RZ710というヘッドホンは 比較的安価で使いやすいものなのだが、それなりの期間使って来てイヤークッションがボロボロになってしまった。

大きさを測ってみると、2個入り イヤーパッド イヤークッション 交換用耳パッド 105 MM 対応が合いそうで、 実際に購入してみると、ちょうど良いサイズだった。

NetBSD上のFirefoxで、text-to-speechを試す

この記事は、 NetBSD Advent Calendar 2023 の1日目の記事です。 はじめに 最近のMozilla Firefoxには、text-to-speech機能を利用するための仕組みが組み込まれています。 しかし、Firefox自体がテキストの内容を...