Kazuhiro's blog
ようこそ! Kazuhiro's blog
土曜日, 11月 23 2024 @ 04:57 午後 JST

Lookup sound extender

Lookupの辞書に音声データへのリンクを後付けするツールです。 WordVoxのページを見てたらやってみたくなりました。 現在対応している音声データは StarDictやWordVoxで使われているものだけです。 Lookup 1.4+mediaが必要です。 Lookup 1.4では動くかもしれませんが確認はしていません。

実験段階の状態ですので仕様が大幅に変更される可能性もあります。

for your download

lookup-sound-20070118.el

インストール

lookup-sound.elと名前を変更してLookupをインストールしたディレクトリへコピーして下さい。 必要ならばバイトコンパイルして下さい。 また、音声データはStarDictのダウンロードページ等から、WyabdcRealPeopleTTS.tar.bz2というファイルをダウンロードして任意のディレクトリに展開して下さい。

設定

~/.lookupで、音声リンクを表示させたい辞書(またはエージェント)に:soundオプションで音声データを展開したディレクトリを設定し、アレンジ関数(のできるだけ最後)にlookup-sound-arrange-englishを追加します。 複数の辞書およびエージェントに指定可能です。 また、lookup-soundrequireするのを忘れないようにして下さい。 例えば

(lookup-set-agent-option "ndebs+web" :sound "E:/DIC/sounds")
(lookup-set-agent-option
 "ndebs+web"
 :arranges
 '(ndeb-arrange-xbm
   ndeb-arrange-bmp
   ndeb-arrange-jpeg
   ndeb-arrange-ignore
   ndeb-arrange-no-newline
   ndeb-arrange-prev-next
   lookup-arrange-references
   lookup-arrange-gaijis
   lookup-arrange-default-headings
   ndeb-arrange-fill-lines
   lookup-sound-arrange-english))
(require 'lookup-sound)

のように設定します。 この場合は"ndebs+web"エージェントの辞書全てに設定されたことになります。 ちなみに、音声データはE:/DIC/sounds/aからE:/DIC/sounds/zのディレクトリ内に実データが存在することになります。

カスタマイズ変数

lookup-sound-follow-from-entry

key(define-keyのdocstringを参照して下さい)を指定する事でEntryモードからリンク先のURIを参照する事ができます。 例えば、以下の様な内容を~/.lookupに記述を行います。

(setq lookup-sound-follow-from-entry "N")

必ずlookup-soundrequireする前に設定して下さい。 そうしないと設定が反映されません。

lookup-sound-follow-functions

音声データの再生方法を設定します。 デフォルトはplay-sound-file関数を持ったMeadow用の設定になっています。 設定内容は、音声データのファイル名に対する正規表現と、それに対応する関数名のシンボル(またはプログラム名の文字列、プログラム名と引数のリスト)のリストのリストを記載します。 ファイル名に対する正規表現がnilの場合は常にマッチしたと見なします。 例えば

(setq lookup-sound-follow-functions
      '((".wav$" lookup-sound-follow-with-play-sound-file)
        (nil "fiber")))

の様に設定すると拡張子が"wav"のデータに対してはlookup-sound-follow-with-play-sound-fileが実行され、それ以外の場合はfiberが起動されます。 このツールで予め用意している関数として以下のものがあります。

lookup-sound-follow-with-play-sound-file

Emacsが持つplay-sound-file関数を使用して再生します。 Meadow以外のEmacsでは音声再生中は他の操作が一切できません。

既知の不具合

ndeb[s]エージェントの音声とは独立している

例えば元々音声データを持っている辞書に設定した場合、Entryモードから音声再生させようとすると、EPWINGの音声データを再生させる時と後付けされた音声データを再生させる時とでは違うキーを使用しないといけません。

違う単語の発音へのリンクがはられる事がある
対応する音声があるはずなのにリンクが生成されない事がある

contentの最初の一行から単語を類推しており、そのルーチンもいい加減なのでそういう事も多々起きると思います。 対策としてはもっと賢いルーチンを作るか、その辞書専用のルーチンをlookup-sound-arrange-english関数の代替として作成する事になります。

いちいちアレンジ関数を追加するのが面倒くさい

(ndeb.el等の)エージェントのプログラムを読み込んだ後でデフォルト値を変更すれば、同じ種類のエージェントについては一度の変更で済みます。 例えばndebエージェントであれば~/.lookupに以下のように記述します。

(eval-after-load "ndeb"
  '(put 'ndeb ':arranges
        '(ndeb-arrange-auto-jump-reference
          ndeb-arrange-xbm
          ndeb-arrange-bmp
          ndeb-arrange-jpeg
          ndeb-arrange-image-page
          ndeb-arrange-wave
          ndeb-arrange-mpeg
          ndeb-arrange-ignore
          ndeb-arrange-no-newline
          ndeb-arrange-prev-next
          ndeb-arrange-paged-reference
          lookup-arrange-references
          lookup-arrange-gaijis
          lookup-arrange-squeezed-references
          lookup-arrange-default-headings
          ndeb-arrange-fill-lines
          ndeb-arrange-snd-autoplay
          lookup-sound-arrange-english)))

Tips

音声データの圧縮

このツールはmp3やogg等のファイルも認識するので、StarDictで使用している音声データをそれらのフォーマットに変換する事でデータ容量を削減できます。 ただし、それぞれの形式の再生に対応したツールが必要です。

音声データの追加

アルファベットの小文字のみというファイル名の命名規則に従ったデータを正しいディレクトリにコピーすれば音声を追加できます。 例えば、LSD voiceの音声データは頭文字毎に正しいディレクトリにコピーする事で使用可能になります。

更新履歴

2007/01/19 複数の辞書とエージェントに設定できるのを書き忘れていたので追記。 Tipsを追加。

2007/01/18 公開。 なんだか偉そうな名前になってしまった。 まだでっちあげレベルだけどないよりはましだと思いたい。


最終更新日: 金曜日, 1月 19 2007 @ 01:09 午後 JST; 11,050 閲覧件数 印刷用画面