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/の個別の記事であれば、リーダービューを有効にできます。 アドレス欄の右端に下図のようなアイコンが表示されていれば、リーダービューを利用できるウェブページです。 これをクリックすると、リーダービュー画面に移動することができます。

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

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

pkgsrc/mail/dkimproxyを使ってみたが、受信時の動作は、現在の用途には合わないようだった

とある過去に利用者のいたドメインを所有しているのだが、相当に雑な運用だったようで、いまだにSPAM以外の電子メールが来るし、 そのドメインの存在しないアカウントを装った電子メールが多く送信されているようだった。 しばらく、キャッチオール設定をして受信してみて気付いた...